cgen: fix alphabetic order of ast statement generation (#12080)
parent
b2945e916f
commit
77c18f4435
|
@ -3622,6 +3622,9 @@ fn (mut g Gen) expr(node ast.Expr) {
|
||||||
ast.Assoc {
|
ast.Assoc {
|
||||||
g.assoc(node)
|
g.assoc(node)
|
||||||
}
|
}
|
||||||
|
ast.AtExpr {
|
||||||
|
g.comp_at(node)
|
||||||
|
}
|
||||||
ast.BoolLiteral {
|
ast.BoolLiteral {
|
||||||
g.write(node.val.str())
|
g.write(node.val.str())
|
||||||
}
|
}
|
||||||
|
@ -3711,19 +3714,13 @@ fn (mut g Gen) expr(node ast.Expr) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ast.DumpExpr {
|
ast.Comment {}
|
||||||
g.dump_expr(node)
|
|
||||||
}
|
|
||||||
ast.AtExpr {
|
|
||||||
g.comp_at(node)
|
|
||||||
}
|
|
||||||
ast.ComptimeCall {
|
ast.ComptimeCall {
|
||||||
g.comptime_call(node)
|
g.comptime_call(node)
|
||||||
}
|
}
|
||||||
ast.ComptimeSelector {
|
ast.ComptimeSelector {
|
||||||
g.comptime_selector(node)
|
g.comptime_selector(node)
|
||||||
}
|
}
|
||||||
ast.Comment {}
|
|
||||||
ast.ConcatExpr {
|
ast.ConcatExpr {
|
||||||
g.concat_expr(node)
|
g.concat_expr(node)
|
||||||
}
|
}
|
||||||
|
@ -3731,6 +3728,9 @@ fn (mut g Gen) expr(node ast.Expr) {
|
||||||
// g.write('/*ctmp .orig: $node.orig.str() , ._typ: $node.typ, .is_ptr: $node.is_ptr */ ')
|
// g.write('/*ctmp .orig: $node.orig.str() , ._typ: $node.typ, .is_ptr: $node.is_ptr */ ')
|
||||||
g.write(node.name)
|
g.write(node.name)
|
||||||
}
|
}
|
||||||
|
ast.DumpExpr {
|
||||||
|
g.dump_expr(node)
|
||||||
|
}
|
||||||
ast.EnumVal {
|
ast.EnumVal {
|
||||||
// g.write('${it.mod}${it.enum_name}_$it.val')
|
// g.write('${it.mod}${it.enum_name}_$it.val')
|
||||||
// g.enum_expr(node)
|
// g.enum_expr(node)
|
||||||
|
@ -3779,19 +3779,43 @@ fn (mut g Gen) expr(node ast.Expr) {
|
||||||
g.write(node.val) // .int().str())
|
g.write(node.val) // .int().str())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
ast.IsRefType {
|
||||||
|
typ := if node.typ == g.field_data_type { g.comp_for_field_value.typ } else { node.typ }
|
||||||
|
node_typ := g.unwrap_generic(typ)
|
||||||
|
sym := g.table.get_type_symbol(node_typ)
|
||||||
|
if sym.language == .v && sym.kind in [.placeholder, .any] {
|
||||||
|
g.error('unknown type `$sym.name`', node.pos)
|
||||||
|
}
|
||||||
|
is_ref_type := g.contains_ptr(node_typ)
|
||||||
|
g.write('/*IsRefType*/ $is_ref_type')
|
||||||
|
}
|
||||||
|
ast.Likely {
|
||||||
|
if node.is_likely {
|
||||||
|
g.write('_likely_')
|
||||||
|
} else {
|
||||||
|
g.write('_unlikely_')
|
||||||
|
}
|
||||||
|
g.write('(')
|
||||||
|
g.expr(node.expr)
|
||||||
|
g.write(')')
|
||||||
|
}
|
||||||
ast.LockExpr {
|
ast.LockExpr {
|
||||||
g.lock_expr(node)
|
g.lock_expr(node)
|
||||||
}
|
}
|
||||||
ast.MatchExpr {
|
|
||||||
g.match_expr(node)
|
|
||||||
}
|
|
||||||
ast.MapInit {
|
ast.MapInit {
|
||||||
g.map_init(node)
|
g.map_init(node)
|
||||||
}
|
}
|
||||||
|
ast.MatchExpr {
|
||||||
|
g.match_expr(node)
|
||||||
|
}
|
||||||
ast.NodeError {}
|
ast.NodeError {}
|
||||||
ast.None {
|
ast.None {
|
||||||
g.write('_const_none__')
|
g.write('_const_none__')
|
||||||
}
|
}
|
||||||
|
ast.OffsetOf {
|
||||||
|
styp := g.typ(node.struct_type)
|
||||||
|
g.write('/*OffsetOf*/ (u32)(__offsetof(${util.no_dots(styp)}, $node.field))')
|
||||||
|
}
|
||||||
ast.OrExpr {
|
ast.OrExpr {
|
||||||
// this should never appear here
|
// this should never appear here
|
||||||
}
|
}
|
||||||
|
@ -3872,6 +3896,9 @@ fn (mut g Gen) expr(node ast.Expr) {
|
||||||
ast.SelectExpr {
|
ast.SelectExpr {
|
||||||
g.select_expr(node)
|
g.select_expr(node)
|
||||||
}
|
}
|
||||||
|
ast.SelectorExpr {
|
||||||
|
g.selector_expr(node)
|
||||||
|
}
|
||||||
ast.SizeOf {
|
ast.SizeOf {
|
||||||
typ := if node.typ == g.field_data_type { g.comp_for_field_value.typ } else { node.typ }
|
typ := if node.typ == g.field_data_type { g.comp_for_field_value.typ } else { node.typ }
|
||||||
node_typ := g.unwrap_generic(typ)
|
node_typ := g.unwrap_generic(typ)
|
||||||
|
@ -3882,20 +3909,6 @@ fn (mut g Gen) expr(node ast.Expr) {
|
||||||
styp := g.typ(node_typ)
|
styp := g.typ(node_typ)
|
||||||
g.write('sizeof(${util.no_dots(styp)})')
|
g.write('sizeof(${util.no_dots(styp)})')
|
||||||
}
|
}
|
||||||
ast.IsRefType {
|
|
||||||
typ := if node.typ == g.field_data_type { g.comp_for_field_value.typ } else { node.typ }
|
|
||||||
node_typ := g.unwrap_generic(typ)
|
|
||||||
sym := g.table.get_type_symbol(node_typ)
|
|
||||||
if sym.language == .v && sym.kind in [.placeholder, .any] {
|
|
||||||
g.error('unknown type `$sym.name`', node.pos)
|
|
||||||
}
|
|
||||||
is_ref_type := g.contains_ptr(node_typ)
|
|
||||||
g.write('/*IsRefType*/ $is_ref_type')
|
|
||||||
}
|
|
||||||
ast.OffsetOf {
|
|
||||||
styp := g.typ(node.struct_type)
|
|
||||||
g.write('/*OffsetOf*/ (u32)(__offsetof(${util.no_dots(styp)}, $node.field))')
|
|
||||||
}
|
|
||||||
ast.SqlExpr {
|
ast.SqlExpr {
|
||||||
g.sql_select_expr(node)
|
g.sql_select_expr(node)
|
||||||
}
|
}
|
||||||
|
@ -3913,9 +3926,6 @@ fn (mut g Gen) expr(node ast.Expr) {
|
||||||
g.struct_init(node)
|
g.struct_init(node)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ast.SelectorExpr {
|
|
||||||
g.selector_expr(node)
|
|
||||||
}
|
|
||||||
ast.TypeNode {
|
ast.TypeNode {
|
||||||
// match sum Type
|
// match sum Type
|
||||||
// g.write('/* Type */')
|
// g.write('/* Type */')
|
||||||
|
@ -3929,16 +3939,6 @@ fn (mut g Gen) expr(node ast.Expr) {
|
||||||
ast.TypeOf {
|
ast.TypeOf {
|
||||||
g.typeof_expr(node)
|
g.typeof_expr(node)
|
||||||
}
|
}
|
||||||
ast.Likely {
|
|
||||||
if node.is_likely {
|
|
||||||
g.write('_likely_')
|
|
||||||
} else {
|
|
||||||
g.write('_unlikely_')
|
|
||||||
}
|
|
||||||
g.write('(')
|
|
||||||
g.expr(node.expr)
|
|
||||||
g.write(')')
|
|
||||||
}
|
|
||||||
ast.UnsafeExpr {
|
ast.UnsafeExpr {
|
||||||
g.expr(node.expr)
|
g.expr(node.expr)
|
||||||
}
|
}
|
||||||
|
|
|
@ -792,18 +792,13 @@ fn (mut g JsGen) stmt(node ast.Stmt) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (mut g JsGen) expr(node ast.Expr) {
|
fn (mut g JsGen) expr(node ast.Expr) {
|
||||||
|
// NB: please keep the type names in the match here in alphabetical order:
|
||||||
match node {
|
match node {
|
||||||
ast.NodeError {}
|
|
||||||
ast.EmptyExpr {}
|
ast.EmptyExpr {}
|
||||||
ast.CTempVar {
|
|
||||||
g.write('/* ast.CTempVar: node.name */')
|
|
||||||
}
|
|
||||||
ast.DumpExpr {
|
|
||||||
g.write('/* ast.DumpExpr: $node.expr */')
|
|
||||||
}
|
|
||||||
ast.AnonFn {
|
ast.AnonFn {
|
||||||
g.gen_fn_decl(node.decl)
|
g.gen_fn_decl(node.decl)
|
||||||
}
|
}
|
||||||
|
ast.ArrayDecompose {}
|
||||||
ast.ArrayInit {
|
ast.ArrayInit {
|
||||||
g.gen_array_init_expr(node)
|
g.gen_array_init_expr(node)
|
||||||
}
|
}
|
||||||
|
@ -814,6 +809,9 @@ fn (mut g JsGen) expr(node ast.Expr) {
|
||||||
ast.Assoc {
|
ast.Assoc {
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
ast.AtExpr {
|
||||||
|
g.write('"$node.val"')
|
||||||
|
}
|
||||||
ast.BoolLiteral {
|
ast.BoolLiteral {
|
||||||
g.write('new bool(')
|
g.write('new bool(')
|
||||||
if node.val == true {
|
if node.val == true {
|
||||||
|
@ -826,12 +824,12 @@ fn (mut g JsGen) expr(node ast.Expr) {
|
||||||
ast.CallExpr {
|
ast.CallExpr {
|
||||||
g.gen_call_expr(node)
|
g.gen_call_expr(node)
|
||||||
}
|
}
|
||||||
ast.ChanInit {
|
|
||||||
// TODO
|
|
||||||
}
|
|
||||||
ast.CastExpr {
|
ast.CastExpr {
|
||||||
g.gen_type_cast_expr(node)
|
g.gen_type_cast_expr(node)
|
||||||
}
|
}
|
||||||
|
ast.ChanInit {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
ast.CharLiteral {
|
ast.CharLiteral {
|
||||||
if utf8_str_len(node.val) < node.val.len {
|
if utf8_str_len(node.val) < node.val.len {
|
||||||
g.write("new rune('$node.val'.charCodeAt())")
|
g.write("new rune('$node.val'.charCodeAt())")
|
||||||
|
@ -840,9 +838,21 @@ fn (mut g JsGen) expr(node ast.Expr) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ast.Comment {}
|
ast.Comment {}
|
||||||
|
ast.ComptimeCall {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
ast.ComptimeSelector {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
ast.ConcatExpr {
|
ast.ConcatExpr {
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
ast.CTempVar {
|
||||||
|
g.write('/* ast.CTempVar: node.name */')
|
||||||
|
}
|
||||||
|
ast.DumpExpr {
|
||||||
|
g.write('/* ast.DumpExpr: $node.expr */')
|
||||||
|
}
|
||||||
ast.EnumVal {
|
ast.EnumVal {
|
||||||
sym := g.table.get_type_symbol(node.typ)
|
sym := g.table.get_type_symbol(node.typ)
|
||||||
styp := g.js_name(sym.name)
|
styp := g.js_name(sym.name)
|
||||||
|
@ -872,15 +882,21 @@ fn (mut g JsGen) expr(node ast.Expr) {
|
||||||
ast.IntegerLiteral {
|
ast.IntegerLiteral {
|
||||||
g.gen_integer_literal_expr(node)
|
g.gen_integer_literal_expr(node)
|
||||||
}
|
}
|
||||||
|
ast.Likely {
|
||||||
|
g.write('(')
|
||||||
|
g.expr(node.expr)
|
||||||
|
g.write(')')
|
||||||
|
}
|
||||||
ast.LockExpr {
|
ast.LockExpr {
|
||||||
g.gen_lock_expr(node)
|
g.gen_lock_expr(node)
|
||||||
}
|
}
|
||||||
ast.MapInit {
|
ast.NodeError {}
|
||||||
g.gen_map_init_expr(node)
|
|
||||||
}
|
|
||||||
ast.None {
|
ast.None {
|
||||||
g.write('none__')
|
g.write('none__')
|
||||||
}
|
}
|
||||||
|
ast.MapInit {
|
||||||
|
g.gen_map_init_expr(node)
|
||||||
|
}
|
||||||
ast.MatchExpr {
|
ast.MatchExpr {
|
||||||
g.match_expr(node)
|
g.match_expr(node)
|
||||||
}
|
}
|
||||||
|
@ -982,28 +998,13 @@ fn (mut g JsGen) expr(node ast.Expr) {
|
||||||
|
|
||||||
g.write('${g.js_name(sym.name)}')
|
g.write('${g.js_name(sym.name)}')
|
||||||
}
|
}
|
||||||
ast.Likely {
|
|
||||||
g.write('(')
|
|
||||||
g.expr(node.expr)
|
|
||||||
g.write(')')
|
|
||||||
}
|
|
||||||
ast.TypeOf {
|
ast.TypeOf {
|
||||||
g.gen_typeof_expr(node)
|
g.gen_typeof_expr(node)
|
||||||
// TODO: Should this print the V type or the JS type?
|
// TODO: Should this print the V type or the JS type?
|
||||||
}
|
}
|
||||||
ast.AtExpr {
|
|
||||||
g.write('"$node.val"')
|
|
||||||
}
|
|
||||||
ast.ComptimeCall {
|
|
||||||
// TODO
|
|
||||||
}
|
|
||||||
ast.ComptimeSelector {
|
|
||||||
// TODO
|
|
||||||
}
|
|
||||||
ast.UnsafeExpr {
|
ast.UnsafeExpr {
|
||||||
g.expr(node.expr)
|
g.expr(node.expr)
|
||||||
}
|
}
|
||||||
ast.ArrayDecompose {}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue