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 {
g.assoc(node)
}
ast.AtExpr {
g.comp_at(node)
}
ast.BoolLiteral {
g.write(node.val.str())
}
@ -3711,19 +3714,13 @@ fn (mut g Gen) expr(node ast.Expr) {
}
}
}
ast.DumpExpr {
g.dump_expr(node)
}
ast.AtExpr {
g.comp_at(node)
}
ast.Comment {}
ast.ComptimeCall {
g.comptime_call(node)
}
ast.ComptimeSelector {
g.comptime_selector(node)
}
ast.Comment {}
ast.ConcatExpr {
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(node.name)
}
ast.DumpExpr {
g.dump_expr(node)
}
ast.EnumVal {
// g.write('${it.mod}${it.enum_name}_$it.val')
// g.enum_expr(node)
@ -3779,19 +3779,43 @@ fn (mut g Gen) expr(node ast.Expr) {
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 {
g.lock_expr(node)
}
ast.MatchExpr {
g.match_expr(node)
}
ast.MapInit {
g.map_init(node)
}
ast.MatchExpr {
g.match_expr(node)
}
ast.NodeError {}
ast.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 {
// this should never appear here
}
@ -3872,6 +3896,9 @@ fn (mut g Gen) expr(node ast.Expr) {
ast.SelectExpr {
g.select_expr(node)
}
ast.SelectorExpr {
g.selector_expr(node)
}
ast.SizeOf {
typ := if node.typ == g.field_data_type { g.comp_for_field_value.typ } else { node.typ }
node_typ := g.unwrap_generic(typ)
@ -3882,20 +3909,6 @@ fn (mut g Gen) expr(node ast.Expr) {
styp := g.typ(node_typ)
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 {
g.sql_select_expr(node)
}
@ -3913,9 +3926,6 @@ fn (mut g Gen) expr(node ast.Expr) {
g.struct_init(node)
}
}
ast.SelectorExpr {
g.selector_expr(node)
}
ast.TypeNode {
// match sum Type
// g.write('/* Type */')
@ -3929,16 +3939,6 @@ fn (mut g Gen) expr(node ast.Expr) {
ast.TypeOf {
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 {
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) {
// NB: please keep the type names in the match here in alphabetical order:
match node {
ast.NodeError {}
ast.EmptyExpr {}
ast.CTempVar {
g.write('/* ast.CTempVar: node.name */')
}
ast.DumpExpr {
g.write('/* ast.DumpExpr: $node.expr */')
}
ast.AnonFn {
g.gen_fn_decl(node.decl)
}
ast.ArrayDecompose {}
ast.ArrayInit {
g.gen_array_init_expr(node)
}
@ -814,6 +809,9 @@ fn (mut g JsGen) expr(node ast.Expr) {
ast.Assoc {
// TODO
}
ast.AtExpr {
g.write('"$node.val"')
}
ast.BoolLiteral {
g.write('new bool(')
if node.val == true {
@ -826,12 +824,12 @@ fn (mut g JsGen) expr(node ast.Expr) {
ast.CallExpr {
g.gen_call_expr(node)
}
ast.ChanInit {
// TODO
}
ast.CastExpr {
g.gen_type_cast_expr(node)
}
ast.ChanInit {
// TODO
}
ast.CharLiteral {
if utf8_str_len(node.val) < node.val.len {
g.write("new rune('$node.val'.charCodeAt())")
@ -840,9 +838,21 @@ fn (mut g JsGen) expr(node ast.Expr) {
}
}
ast.Comment {}
ast.ComptimeCall {
// TODO
}
ast.ComptimeSelector {
// TODO
}
ast.ConcatExpr {
// TODO
}
ast.CTempVar {
g.write('/* ast.CTempVar: node.name */')
}
ast.DumpExpr {
g.write('/* ast.DumpExpr: $node.expr */')
}
ast.EnumVal {
sym := g.table.get_type_symbol(node.typ)
styp := g.js_name(sym.name)
@ -872,15 +882,21 @@ fn (mut g JsGen) expr(node ast.Expr) {
ast.IntegerLiteral {
g.gen_integer_literal_expr(node)
}
ast.Likely {
g.write('(')
g.expr(node.expr)
g.write(')')
}
ast.LockExpr {
g.gen_lock_expr(node)
}
ast.MapInit {
g.gen_map_init_expr(node)
}
ast.NodeError {}
ast.None {
g.write('none__')
}
ast.MapInit {
g.gen_map_init_expr(node)
}
ast.MatchExpr {
g.match_expr(node)
}
@ -982,28 +998,13 @@ fn (mut g JsGen) expr(node ast.Expr) {
g.write('${g.js_name(sym.name)}')
}
ast.Likely {
g.write('(')
g.expr(node.expr)
g.write(')')
}
ast.TypeOf {
g.gen_typeof_expr(node)
// 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 {
g.expr(node.expr)
}
ast.ArrayDecompose {}
}
}