cgen: fix alphabetic order of ast statement generation (#12080)

pull/12084/head
Wertzui123 2021-10-06 13:32:42 +02:00 committed by GitHub
parent b2945e916f
commit 77c18f4435
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 66 additions and 65 deletions

View File

@ -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)
} }

View File

@ -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 {}
} }
} }