vfmt: fix generation on C idents, fixed arrays
parent
d6037cbcf2
commit
94f23d96e9
|
@ -490,6 +490,15 @@ fn (f &Fmt) type_to_str(t table.Type) string {
|
|||
start_pos := 2 * res.count('[]')
|
||||
res = res[0..start_pos] + '&' + res[start_pos..res.len]
|
||||
}
|
||||
if res.starts_with('[]fixed_') {
|
||||
prefix := '[]fixed_'
|
||||
res = res[prefix.len..]
|
||||
last_underscore_idx := res.last_index('_') or {
|
||||
return '[]' + res.replace(f.cur_mod + '.', '')
|
||||
}
|
||||
limit := res[last_underscore_idx + 1..]
|
||||
res = '[' + limit + ']' + res[..last_underscore_idx]
|
||||
}
|
||||
return res.replace(f.cur_mod + '.', '')
|
||||
}
|
||||
|
||||
|
@ -561,6 +570,7 @@ pub fn (mut f Fmt) expr(node ast.Expr) {
|
|||
f.if_expr(it)
|
||||
}
|
||||
ast.Ident {
|
||||
f.write_language_prefix(it.language)
|
||||
if it.kind == .blank_ident {
|
||||
f.write('_')
|
||||
} else {
|
||||
|
@ -601,6 +611,7 @@ pub fn (mut f Fmt) expr(node ast.Expr) {
|
|||
ktyp = minfo.key_type
|
||||
vtyp = minfo.value_type
|
||||
}
|
||||
|
||||
f.write('map[')
|
||||
f.write(f.type_to_str(ktyp))
|
||||
f.write(']')
|
||||
|
@ -881,9 +892,7 @@ pub fn (mut f Fmt) call_expr(node ast.CallExpr) {
|
|||
f.write(')')
|
||||
f.or_expr(node.or_block)
|
||||
} else {
|
||||
if node.language == .c {
|
||||
f.write('C.')
|
||||
}
|
||||
f.write_language_prefix(node.language)
|
||||
name := f.short_module(node.name)
|
||||
f.mark_module_as_used(name)
|
||||
f.write('${name}')
|
||||
|
@ -1000,6 +1009,18 @@ pub fn (mut f Fmt) mark_module_as_used(name string) {
|
|||
// println('marking module $mod as used')
|
||||
}
|
||||
|
||||
fn (mut f Fmt) write_language_prefix(lang table.Language) {
|
||||
match lang {
|
||||
.c {
|
||||
f.write('C.')
|
||||
}
|
||||
.js {
|
||||
f.write('JS.')
|
||||
}
|
||||
else {}
|
||||
}
|
||||
}
|
||||
|
||||
fn expr_is_single_line(expr ast.Expr) bool {
|
||||
match expr {
|
||||
ast.IfExpr { return false }
|
||||
|
|
Loading…
Reference in New Issue