mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
parser/checker/gen: match shaddow cond var & as support: p2
This commit is contained in:
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 {
|
||||
mut sub_expr := lit.exprs[i]
|
||||
for {
|
||||
if sub_expr is Ident { break }
|
||||
else if sub_expr is SelectorExpr {
|
||||
se := sub_expr as SelectorExpr
|
||||
sub_expr = se.expr
|
||||
continue
|
||||
match sub_expr as sx {
|
||||
Ident {
|
||||
break
|
||||
}
|
||||
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 {
|
||||
|
@ -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) {
|
||||
// TODO: remove sponge
|
||||
tmp_val := val
|
||||
match tmp_val {
|
||||
match val as val_expr {
|
||||
ast.Ident {
|
||||
mut has_var := false
|
||||
for lx in left {
|
||||
if lx is ast.Ident {
|
||||
ident := lx as ast.Ident
|
||||
if it.name == ident.name {
|
||||
if val_expr.name == ident.name {
|
||||
g.write('_var_${ident.pos.pos}')
|
||||
has_var = true
|
||||
break
|
||||
@ -1247,17 +1245,17 @@ fn (mut g Gen) gen_cross_tmp_variable(left []ast.Expr, val ast.Expr) {
|
||||
}
|
||||
}
|
||||
ast.InfixExpr {
|
||||
g.gen_cross_tmp_variable(left, it.left)
|
||||
g.write(it.op.str())
|
||||
g.gen_cross_tmp_variable(left, it.right)
|
||||
g.gen_cross_tmp_variable(left, val_expr.left)
|
||||
g.write(val_expr.op.str())
|
||||
g.gen_cross_tmp_variable(left, val_expr.right)
|
||||
}
|
||||
ast.PrefixExpr {
|
||||
g.write(it.op.str())
|
||||
g.gen_cross_tmp_variable(left, it.right)
|
||||
g.write(val_expr.op.str())
|
||||
g.gen_cross_tmp_variable(left, val_expr.right)
|
||||
}
|
||||
ast.PostfixExpr {
|
||||
g.gen_cross_tmp_variable(left, it.expr)
|
||||
g.write(it.op.str())
|
||||
g.gen_cross_tmp_variable(left, val_expr.expr)
|
||||
g.write(val_expr.op.str())
|
||||
}
|
||||
else {
|
||||
g.expr(val)
|
||||
|
Loading…
Reference in New Issue
Block a user