parser/checker/gen: match shaddow cond var & as support: p2
parent
68143b7b22
commit
45239cbd62
|
@ -126,33 +126,22 @@ pub fn (lit &StringInterLiteral) get_fspec_braces(i int) (string, bool) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// TODO: remove sponge - put back match
|
|
||||||
if !needs_braces {
|
if !needs_braces {
|
||||||
mut sub_expr := lit.exprs[i]
|
mut sub_expr := lit.exprs[i]
|
||||||
for {
|
for {
|
||||||
if sub_expr is Ident { break }
|
match sub_expr as sx {
|
||||||
else if sub_expr is SelectorExpr {
|
Ident {
|
||||||
se := sub_expr as SelectorExpr
|
break
|
||||||
sub_expr = se.expr
|
}
|
||||||
continue
|
SelectorExpr {
|
||||||
|
sub_expr = sx.expr
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
needs_braces = true
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
needs_braces = true
|
|
||||||
break
|
|
||||||
}
|
|
||||||
// match sub_expr {
|
|
||||||
// Ident {
|
|
||||||
// break
|
|
||||||
// }
|
|
||||||
// SelectorExpr {
|
|
||||||
// sub_expr = it.expr
|
|
||||||
// continue
|
|
||||||
// }
|
|
||||||
// else {
|
|
||||||
// needs_braces = true
|
|
||||||
// break
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if needs_fspec {
|
if needs_fspec {
|
||||||
|
|
|
@ -1227,15 +1227,13 @@ fn (mut g Gen) gen_assign_stmt(assign_stmt ast.AssignStmt) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (mut g Gen) gen_cross_tmp_variable(left []ast.Expr, val ast.Expr) {
|
fn (mut g Gen) gen_cross_tmp_variable(left []ast.Expr, val ast.Expr) {
|
||||||
// TODO: remove sponge
|
match val as val_expr {
|
||||||
tmp_val := val
|
|
||||||
match tmp_val {
|
|
||||||
ast.Ident {
|
ast.Ident {
|
||||||
mut has_var := false
|
mut has_var := false
|
||||||
for lx in left {
|
for lx in left {
|
||||||
if lx is ast.Ident {
|
if lx is ast.Ident {
|
||||||
ident := lx as ast.Ident
|
ident := lx as ast.Ident
|
||||||
if it.name == ident.name {
|
if val_expr.name == ident.name {
|
||||||
g.write('_var_${ident.pos.pos}')
|
g.write('_var_${ident.pos.pos}')
|
||||||
has_var = true
|
has_var = true
|
||||||
break
|
break
|
||||||
|
@ -1247,17 +1245,17 @@ fn (mut g Gen) gen_cross_tmp_variable(left []ast.Expr, val ast.Expr) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ast.InfixExpr {
|
ast.InfixExpr {
|
||||||
g.gen_cross_tmp_variable(left, it.left)
|
g.gen_cross_tmp_variable(left, val_expr.left)
|
||||||
g.write(it.op.str())
|
g.write(val_expr.op.str())
|
||||||
g.gen_cross_tmp_variable(left, it.right)
|
g.gen_cross_tmp_variable(left, val_expr.right)
|
||||||
}
|
}
|
||||||
ast.PrefixExpr {
|
ast.PrefixExpr {
|
||||||
g.write(it.op.str())
|
g.write(val_expr.op.str())
|
||||||
g.gen_cross_tmp_variable(left, it.right)
|
g.gen_cross_tmp_variable(left, val_expr.right)
|
||||||
}
|
}
|
||||||
ast.PostfixExpr {
|
ast.PostfixExpr {
|
||||||
g.gen_cross_tmp_variable(left, it.expr)
|
g.gen_cross_tmp_variable(left, val_expr.expr)
|
||||||
g.write(it.op.str())
|
g.write(val_expr.op.str())
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
g.expr(val)
|
g.expr(val)
|
||||||
|
|
Loading…
Reference in New Issue