ast, fmt: cleanup (#11477)
parent
cd7d482c3b
commit
012da10517
|
@ -235,10 +235,8 @@ pub mut:
|
||||||
// root_ident returns the origin ident where the selector started.
|
// root_ident returns the origin ident where the selector started.
|
||||||
pub fn (e &SelectorExpr) root_ident() ?Ident {
|
pub fn (e &SelectorExpr) root_ident() ?Ident {
|
||||||
mut root := e.expr
|
mut root := e.expr
|
||||||
for root is SelectorExpr {
|
for mut root is SelectorExpr {
|
||||||
// TODO: remove this line
|
root = root.expr
|
||||||
selector_expr := root as SelectorExpr
|
|
||||||
root = selector_expr.expr
|
|
||||||
}
|
}
|
||||||
if root is Ident {
|
if root is Ident {
|
||||||
return root as Ident
|
return root as Ident
|
||||||
|
@ -1184,16 +1182,6 @@ pub:
|
||||||
pos token.Position
|
pos token.Position
|
||||||
}
|
}
|
||||||
|
|
||||||
// NB: &string(x) gets parsed as PrefixExpr{ right: CastExpr{...} }
|
|
||||||
// TODO: that is very likely a parsing bug. It should get parsed as just
|
|
||||||
// CastExpr{...}, where .typname is '&string' instead.
|
|
||||||
// The current situation leads to special cases in vfmt and cgen
|
|
||||||
// (see prefix_expr_cast_expr in fmt.v, and .is_amp in cgen.v)
|
|
||||||
// .in_prexpr is also needed because of that, because the checker needs to
|
|
||||||
// show warnings about the deprecated C->V conversions `string(x)` and
|
|
||||||
// `string(x,y)`, while skipping the real pointer casts like `&string(x)`.
|
|
||||||
// 2021/07/17: TODO: since 6edfb2c, the above is fixed at the parser level,
|
|
||||||
// we need to remove the hacks/special cases in vfmt and the checker too.
|
|
||||||
pub struct CastExpr {
|
pub struct CastExpr {
|
||||||
pub:
|
pub:
|
||||||
arg Expr // `n` in `string(buf, n)`
|
arg Expr // `n` in `string(buf, n)`
|
||||||
|
|
|
@ -1113,10 +1113,6 @@ pub fn (t &Table) value_type(typ Type) Type {
|
||||||
// bytes[0] is a byte, not byte*
|
// bytes[0] is a byte, not byte*
|
||||||
return typ.deref()
|
return typ.deref()
|
||||||
}
|
}
|
||||||
// TODO: remove when map_string is removed
|
|
||||||
if typ_sym.name == 'map_string' {
|
|
||||||
return string_type
|
|
||||||
}
|
|
||||||
return void_type
|
return void_type
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -713,7 +713,7 @@ pub fn (mut f Fmt) assign_stmt(node ast.AssignStmt) {
|
||||||
f.is_assign = true
|
f.is_assign = true
|
||||||
f.write(' $node.op.str() ')
|
f.write(' $node.op.str() ')
|
||||||
for i, val in node.right {
|
for i, val in node.right {
|
||||||
f.prefix_expr_cast_expr(val)
|
f.expr(val)
|
||||||
if i < node.right.len - 1 {
|
if i < node.right.len - 1 {
|
||||||
f.write(', ')
|
f.write(', ')
|
||||||
}
|
}
|
||||||
|
@ -2230,7 +2230,7 @@ pub fn (mut f Fmt) prefix_expr(node ast.PrefixExpr) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
f.write(node.op.str())
|
f.write(node.op.str())
|
||||||
f.prefix_expr_cast_expr(node.right)
|
f.expr(node.right)
|
||||||
f.or_expr(node.or_block)
|
f.or_expr(node.or_block)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2441,26 +2441,6 @@ pub fn (mut f Fmt) unsafe_expr(node ast.UnsafeExpr) {
|
||||||
f.write('}')
|
f.write('}')
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut f Fmt) prefix_expr_cast_expr(node ast.Expr) {
|
|
||||||
mut is_pe_amp_ce := false
|
|
||||||
if node is ast.PrefixExpr {
|
|
||||||
if node.right is ast.CastExpr && node.op == .amp {
|
|
||||||
mut ce := node.right
|
|
||||||
ce.typname = f.table.get_type_symbol(ce.typ).name
|
|
||||||
is_pe_amp_ce = true
|
|
||||||
f.expr(ce)
|
|
||||||
}
|
|
||||||
} else if node is ast.CastExpr {
|
|
||||||
last := f.out.cut_last(1)
|
|
||||||
if last != '&' {
|
|
||||||
f.out.write_string(last)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if !is_pe_amp_ce {
|
|
||||||
f.expr(node)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn (mut f Fmt) trace(fbase string, message string) {
|
fn (mut f Fmt) trace(fbase string, message string) {
|
||||||
if f.file.path_base == fbase {
|
if f.file.path_base == fbase {
|
||||||
println('> f.trace | ${fbase:-10s} | $message')
|
println('> f.trace | ${fbase:-10s} | $message')
|
||||||
|
|
|
@ -140,7 +140,7 @@ pub fn (mut f Fmt) struct_decl(node ast.StructDecl) {
|
||||||
f.indent++
|
f.indent++
|
||||||
inc_indent = true
|
inc_indent = true
|
||||||
}
|
}
|
||||||
f.prefix_expr_cast_expr(field.default_expr)
|
f.expr(field.default_expr)
|
||||||
if inc_indent {
|
if inc_indent {
|
||||||
f.indent--
|
f.indent--
|
||||||
inc_indent = false
|
inc_indent = false
|
||||||
|
@ -207,7 +207,7 @@ pub fn (mut f Fmt) struct_init(node ast.StructInit) {
|
||||||
f.write(', ')
|
f.write(', ')
|
||||||
}
|
}
|
||||||
for i, field in node.fields {
|
for i, field in node.fields {
|
||||||
f.prefix_expr_cast_expr(field.expr)
|
f.expr(field.expr)
|
||||||
if i < node.fields.len - 1 {
|
if i < node.fields.len - 1 {
|
||||||
f.write(', ')
|
f.write(', ')
|
||||||
}
|
}
|
||||||
|
@ -257,7 +257,7 @@ pub fn (mut f Fmt) struct_init(node ast.StructInit) {
|
||||||
}
|
}
|
||||||
for i, field in node.fields {
|
for i, field in node.fields {
|
||||||
f.write('$field.name: ')
|
f.write('$field.name: ')
|
||||||
f.prefix_expr_cast_expr(field.expr)
|
f.expr(field.expr)
|
||||||
f.comments(field.comments, inline: true, has_nl: false, level: .indent)
|
f.comments(field.comments, inline: true, has_nl: false, level: .indent)
|
||||||
if single_line_fields {
|
if single_line_fields {
|
||||||
if i < node.fields.len - 1 {
|
if i < node.fields.len - 1 {
|
||||||
|
|
Loading…
Reference in New Issue