use crate::GenericSyntax;
pub trait LanguageSyntax {
fn field_name(&self, name: &str) -> String;
fn path_expr(&self, base_var: &str, suffix: &str) -> String;
fn suffix_expr(&self, acc_var: &str, relative: &str) -> String;
fn prefix_expr(&self, prefix: &str, acc_var: &str) -> String;
fn constructor(&self, type_name: &str, path_expr: &str) -> String;
fn field_init(&self, indent: &str, name: &str, type_ann: &str, value: &str) -> String;
fn generic_syntax(&self) -> GenericSyntax;
fn string_literal(&self, value: &str) -> String;
fn constructor_name(&self, type_name: &str) -> String;
fn owned_expr(&self, var: &str) -> String {
var.to_string()
}
fn disc_arg_expr(&self, template: &str) -> String;
fn template_expr(&self, acc_var: &str, template: &str) -> String;
}