vfmt: remove the buggy f.type_to_str, use f.table.type_to_str from now on
parent
1123f4fcc9
commit
d316f78f94
|
@ -496,7 +496,7 @@ pub fn (mut f Fmt) type_decl(node ast.TypeDecl) {
|
||||||
if node.is_pub {
|
if node.is_pub {
|
||||||
f.write('pub ')
|
f.write('pub ')
|
||||||
}
|
}
|
||||||
ptype := f.type_to_str(node.parent_type)
|
ptype := f.table.type_to_str(node.parent_type)
|
||||||
f.write('type $node.name = $ptype')
|
f.write('type $node.name = $ptype')
|
||||||
}
|
}
|
||||||
ast.FnTypeDecl {
|
ast.FnTypeDecl {
|
||||||
|
@ -548,7 +548,7 @@ pub fn (mut f Fmt) type_decl(node ast.TypeDecl) {
|
||||||
f.write('type $node.name = ')
|
f.write('type $node.name = ')
|
||||||
mut sum_type_names := []string{}
|
mut sum_type_names := []string{}
|
||||||
for t in node.sub_types {
|
for t in node.sub_types {
|
||||||
sum_type_names << f.type_to_str(t)
|
sum_type_names << f.table.type_to_str(t)
|
||||||
}
|
}
|
||||||
sum_type_names.sort()
|
sum_type_names.sort()
|
||||||
for i, name in sum_type_names {
|
for i, name in sum_type_names {
|
||||||
|
@ -710,64 +710,6 @@ pub fn (mut f Fmt) prefix_expr_cast_expr(fexpr ast.Expr) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (f &Fmt) type_to_str(t table.Type) string {
|
|
||||||
mut res := f.table.type_to_str(t)
|
|
||||||
cur_mod := f.cur_mod + '.'
|
|
||||||
//
|
|
||||||
map_prefix := 'map[string]'
|
|
||||||
has_map_prefix := res.starts_with(map_prefix)
|
|
||||||
if has_map_prefix {
|
|
||||||
res = res.replace(map_prefix, '')
|
|
||||||
}
|
|
||||||
//
|
|
||||||
chan_prefix := 'chan '
|
|
||||||
has_chan_prefix := res.starts_with(chan_prefix)
|
|
||||||
if has_chan_prefix {
|
|
||||||
res = res.replace(chan_prefix, '')
|
|
||||||
}
|
|
||||||
//
|
|
||||||
no_symbols := res.trim_left('&[]')
|
|
||||||
should_shorten := no_symbols.starts_with(cur_mod)
|
|
||||||
//
|
|
||||||
for res.ends_with('_ptr') {
|
|
||||||
// type_ptr => &type
|
|
||||||
res = res[0..res.len - 4]
|
|
||||||
start_pos := 2 * res.count('[]')
|
|
||||||
res = res[0..start_pos] + '&' + res[start_pos..res.len]
|
|
||||||
}
|
|
||||||
arr_fixed_prefix := '[]fixed_'
|
|
||||||
if res.starts_with(arr_fixed_prefix) {
|
|
||||||
// res: `[]fixed_[]fixed_int_5_10`
|
|
||||||
// transforms to: `[10][5]int`
|
|
||||||
mut last_underscore_idx := 0
|
|
||||||
mut dimensions := []string{}
|
|
||||||
for {
|
|
||||||
res = res[arr_fixed_prefix.len..]
|
|
||||||
last_underscore_idx = res.last_index('_') or {
|
|
||||||
return dimensions.join('') + '[]' +
|
|
||||||
if should_shorten { res.replace_once(cur_mod, '') } else { res }
|
|
||||||
}
|
|
||||||
limit := res[last_underscore_idx + 1..]
|
|
||||||
dimensions << '[$limit]'
|
|
||||||
res = res[..last_underscore_idx]
|
|
||||||
if !res.starts_with(arr_fixed_prefix) {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
res = dimensions.join('') + res[..last_underscore_idx]
|
|
||||||
}
|
|
||||||
if should_shorten {
|
|
||||||
res = res.replace_once(cur_mod, '')
|
|
||||||
}
|
|
||||||
if has_chan_prefix {
|
|
||||||
res = chan_prefix + res
|
|
||||||
}
|
|
||||||
if has_map_prefix {
|
|
||||||
res = map_prefix + res
|
|
||||||
}
|
|
||||||
return res
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn (mut f Fmt) expr(node ast.Expr) {
|
pub fn (mut f Fmt) expr(node ast.Expr) {
|
||||||
if f.is_debug {
|
if f.is_debug {
|
||||||
eprintln('expr: ${node.position():-42} | node: ${typeof(node):-20} | $node.str()')
|
eprintln('expr: ${node.position():-42} | node: ${typeof(node):-20} | $node.str()')
|
||||||
|
@ -780,7 +722,7 @@ pub fn (mut f Fmt) expr(node ast.Expr) {
|
||||||
f.array_init(node)
|
f.array_init(node)
|
||||||
}
|
}
|
||||||
ast.AsCast {
|
ast.AsCast {
|
||||||
type_str := f.type_to_str(node.typ)
|
type_str := f.table.type_to_str(node.typ)
|
||||||
f.expr(node.expr)
|
f.expr(node.expr)
|
||||||
f.write(' as $type_str')
|
f.write(' as $type_str')
|
||||||
}
|
}
|
||||||
|
@ -802,7 +744,7 @@ pub fn (mut f Fmt) expr(node ast.Expr) {
|
||||||
}
|
}
|
||||||
ast.CastExpr {
|
ast.CastExpr {
|
||||||
node.typname = f.table.get_type_symbol(node.typ).name
|
node.typname = f.table.get_type_symbol(node.typ).name
|
||||||
f.write(f.type_to_str(node.typ) + '(')
|
f.write(f.table.type_to_str(node.typ) + '(')
|
||||||
f.expr(node.expr)
|
f.expr(node.expr)
|
||||||
if node.has_arg {
|
if node.has_arg {
|
||||||
f.write(', ')
|
f.write(', ')
|
||||||
|
@ -991,7 +933,7 @@ pub fn (mut f Fmt) expr(node ast.Expr) {
|
||||||
f.write(f.short_module(node.type_name))
|
f.write(f.short_module(node.type_name))
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
f.write(f.type_to_str(node.typ))
|
f.write(f.table.type_to_str(node.typ))
|
||||||
}
|
}
|
||||||
f.write(')')
|
f.write(')')
|
||||||
} else {
|
} else {
|
||||||
|
@ -1093,7 +1035,7 @@ pub fn (mut f Fmt) expr(node ast.Expr) {
|
||||||
f.struct_init(node)
|
f.struct_init(node)
|
||||||
}
|
}
|
||||||
ast.Type {
|
ast.Type {
|
||||||
f.write(f.type_to_str(node.typ))
|
f.write(f.table.type_to_str(node.typ))
|
||||||
}
|
}
|
||||||
ast.TypeOf {
|
ast.TypeOf {
|
||||||
f.write('typeof(')
|
f.write('typeof(')
|
||||||
|
@ -1515,7 +1457,7 @@ pub fn (mut f Fmt) call_expr(node ast.CallExpr) {
|
||||||
}
|
}
|
||||||
if node.generic_type != 0 && node.generic_type != table.void_type {
|
if node.generic_type != 0 && node.generic_type != table.void_type {
|
||||||
f.write('<')
|
f.write('<')
|
||||||
f.write(f.type_to_str(node.generic_type))
|
f.write(f.table.type_to_str(node.generic_type))
|
||||||
f.write('>')
|
f.write('>')
|
||||||
}
|
}
|
||||||
f.write('(')
|
f.write('(')
|
||||||
|
@ -1669,7 +1611,7 @@ pub fn (mut f Fmt) chan_init(mut it ast.ChanInit) {
|
||||||
if is_mut {
|
if is_mut {
|
||||||
f.write('mut ')
|
f.write('mut ')
|
||||||
}
|
}
|
||||||
f.write(f.type_to_str(el_typ))
|
f.write(f.table.type_to_str(el_typ))
|
||||||
f.write('{')
|
f.write('{')
|
||||||
if it.has_cap {
|
if it.has_cap {
|
||||||
f.write('cap: ')
|
f.write('cap: ')
|
||||||
|
@ -1708,7 +1650,7 @@ pub fn (mut f Fmt) array_init(it ast.ArrayInit) {
|
||||||
f.write('}')
|
f.write('}')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
f.write(f.type_to_str(it.typ))
|
f.write(f.table.type_to_str(it.typ))
|
||||||
f.write('{')
|
f.write('{')
|
||||||
// TODO copypasta
|
// TODO copypasta
|
||||||
if it.has_len {
|
if it.has_len {
|
||||||
|
@ -1791,7 +1733,7 @@ pub fn (mut f Fmt) array_init(it ast.ArrayInit) {
|
||||||
f.write('!!')
|
f.write('!!')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
f.write(f.type_to_str(it.elem_type))
|
f.write(f.table.type_to_str(it.elem_type))
|
||||||
if it.has_default {
|
if it.has_default {
|
||||||
f.write('{init: $it.default_expr}')
|
f.write('{init: $it.default_expr}')
|
||||||
} else {
|
} else {
|
||||||
|
@ -1909,7 +1851,7 @@ fn (mut f Fmt) global_decl(it ast.GlobalDecl) {
|
||||||
f.write(strings.repeat(` `, max - field.name.len))
|
f.write(strings.repeat(` `, max - field.name.len))
|
||||||
if field.has_expr {
|
if field.has_expr {
|
||||||
f.write('= ')
|
f.write('= ')
|
||||||
f.write(f.type_to_str(field.typ))
|
f.write(f.table.type_to_str(field.typ))
|
||||||
f.write('(')
|
f.write('(')
|
||||||
f.expr(field.expr)
|
f.expr(field.expr)
|
||||||
f.write(')')
|
f.write(')')
|
||||||
|
@ -1917,7 +1859,7 @@ fn (mut f Fmt) global_decl(it ast.GlobalDecl) {
|
||||||
if !single && has_assign {
|
if !single && has_assign {
|
||||||
f.write(' ')
|
f.write(' ')
|
||||||
}
|
}
|
||||||
f.write('${f.type_to_str(field.typ)} ')
|
f.write('${f.table.type_to_str(field.typ)} ')
|
||||||
}
|
}
|
||||||
if !single {
|
if !single {
|
||||||
f.writeln('')
|
f.writeln('')
|
||||||
|
|
Loading…
Reference in New Issue