checker: error on `mut name =` (#6247)
parent
5d18ece661
commit
7dbae14e19
|
@ -2621,6 +2621,9 @@ pub fn (mut c Checker) ident(mut ident ast.Ident) table.Type {
|
|||
return info.typ
|
||||
} else if ident.kind == .unresolved {
|
||||
// first use
|
||||
if ident.tok_kind == .assign && ident.is_mut {
|
||||
c.error('`mut` not allowed with `=` (use `:=` to declare a variable)', ident.pos)
|
||||
}
|
||||
start_scope := c.file.scope.innermost(ident.pos.pos)
|
||||
if obj1 := start_scope.find(ident.name) {
|
||||
match mut obj1 as obj {
|
||||
|
@ -2731,7 +2734,7 @@ pub fn (mut c Checker) ident(mut ident ast.Ident) table.Type {
|
|||
ident.mod = saved_mod
|
||||
}
|
||||
if ident.tok_kind == .assign {
|
||||
c.error('undefined ident: `$ident.name` (use `:=` to assign a variable)',
|
||||
c.error('undefined ident: `$ident.name` (use `:=` to declare a variable)',
|
||||
ident.pos)
|
||||
} else {
|
||||
c.error('undefined ident: `$ident.name`', ident.pos)
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
vlib/v/checker/tests/assign_mut.vv:3:9: error: `mut` not allowed with `=` (use `:=` to declare a variable)
|
||||
1 | fn main() {
|
||||
2 | mut z := 1
|
||||
3 | mut z = 1
|
||||
| ^
|
||||
4 | mut i := 2
|
||||
5 | i, mut z = 2,3
|
||||
vlib/v/checker/tests/assign_mut.vv:5:12: error: `mut` not allowed with `=` (use `:=` to declare a variable)
|
||||
3 | mut z = 1
|
||||
4 | mut i := 2
|
||||
5 | i, mut z = 2,3
|
||||
| ^
|
||||
6 | }
|
|
@ -0,0 +1,6 @@
|
|||
fn main() {
|
||||
mut z := 1
|
||||
mut z = 1
|
||||
mut i := 2
|
||||
i, mut z = 2,3
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
vlib/v/checker/tests/error_with_several_comments_with_crlf_ending.vv:9:2: error: undefined ident: `a` (use `:=` to assign a variable)
|
||||
vlib/v/checker/tests/error_with_several_comments_with_crlf_ending.vv:9:2: error: undefined ident: `a` (use `:=` to declare a variable)
|
||||
7 | fn main() {
|
||||
8 | func1()
|
||||
9 | a = 2
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
vlib/v/checker/tests/unknown_var_assign.vv:2:5: error: undefined ident: `x` (use `:=` to assign a variable)
|
||||
vlib/v/checker/tests/unknown_var_assign.vv:2:5: error: undefined ident: `x` (use `:=` to declare a variable)
|
||||
1 | fn main() {
|
||||
2 | x = 'hello v'
|
||||
| ^
|
||||
|
|
|
@ -30,7 +30,7 @@ pub fn (mut p Parser) call_expr(language table.Language, mod string) ast.CallExp
|
|||
// `foo<int>(10)`
|
||||
p.next() // `<`
|
||||
p.expr_mod = ''
|
||||
mut generic_type = p.parse_type()
|
||||
generic_type = p.parse_type()
|
||||
p.check(.gt) // `>`
|
||||
// In case of `foo<T>()`
|
||||
// T is unwrapped and registered in the checker.
|
||||
|
|
Loading…
Reference in New Issue