parser: fix if-guard redefinition (#9425)
parent
1b572f75e8
commit
3753a58ce0
vlib/v/parser
|
@ -87,6 +87,9 @@ fn (mut p Parser) if_expr(is_comptime bool) ast.IfExpr {
|
||||||
is_guard = true
|
is_guard = true
|
||||||
var_pos := p.tok.position()
|
var_pos := p.tok.position()
|
||||||
var_name := p.check_name()
|
var_name := p.check_name()
|
||||||
|
if p.scope.known_var(var_name) {
|
||||||
|
p.error_with_pos('redefinition of `$var_name`', var_pos)
|
||||||
|
}
|
||||||
comments << p.eat_comments({})
|
comments << p.eat_comments({})
|
||||||
p.check(.decl_assign)
|
p.check(.decl_assign)
|
||||||
comments << p.eat_comments({})
|
comments << p.eat_comments({})
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
vlib/v/parser/tests/if_guard_redefinition.vv:7:8: error: redefinition of `x`
|
||||||
|
5 | fn main() {
|
||||||
|
6 | x := 1
|
||||||
|
7 | if x := opt_fn() {
|
||||||
|
| ^
|
||||||
|
8 | println(x)
|
||||||
|
9 | }
|
|
@ -0,0 +1,10 @@
|
||||||
|
fn opt_fn() ?int {
|
||||||
|
return 2
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
x := 1
|
||||||
|
if x := opt_fn() {
|
||||||
|
println(x)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue