mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
parser: add error for variables, that are evaluated, but not used
This commit is contained in:
parent
3a3d00ac72
commit
8bc0c31f29
6
vlib/v/checker/tests/var_eval_not_used.out
Normal file
6
vlib/v/checker/tests/var_eval_not_used.out
Normal file
@ -0,0 +1,6 @@
|
||||
vlib/v/checker/tests/var_eval_not_used.v:6:2: error: `c` evaluated but not used
|
||||
4 |
|
||||
5 | fn main() {
|
||||
6 | c
|
||||
| ^
|
||||
7 | }
|
7
vlib/v/checker/tests/var_eval_not_used.vv
Normal file
7
vlib/v/checker/tests/var_eval_not_used.vv
Normal file
@ -0,0 +1,7 @@
|
||||
const (
|
||||
c = 1
|
||||
)
|
||||
|
||||
fn main() {
|
||||
c
|
||||
}
|
7
vlib/v/checker/tests/var_eval_not_used_scope.out
Normal file
7
vlib/v/checker/tests/var_eval_not_used_scope.out
Normal file
@ -0,0 +1,7 @@
|
||||
vlib/v/checker/tests/var_eval_not_used_scope.v:7:3: error: `c` evaluated but not used
|
||||
5 | fn main() {
|
||||
6 | {
|
||||
7 | c
|
||||
| ^
|
||||
8 | }
|
||||
9 | }
|
9
vlib/v/checker/tests/var_eval_not_used_scope.vv
Normal file
9
vlib/v/checker/tests/var_eval_not_used_scope.vv
Normal file
@ -0,0 +1,9 @@
|
||||
const (
|
||||
c = 1
|
||||
)
|
||||
|
||||
fn main() {
|
||||
{
|
||||
c
|
||||
}
|
||||
}
|
@ -37,6 +37,7 @@ pub fn (mut p Parser) call_expr(is_c, is_js bool, mod string) ast.CallExpr {
|
||||
mut or_stmts := []ast.Stmt{}
|
||||
mut is_or_block_used := false
|
||||
if p.tok.kind == .key_orelse {
|
||||
p.inside_or_expr = true
|
||||
p.next()
|
||||
p.open_scope()
|
||||
p.scope.register('err', ast.Var{
|
||||
@ -54,6 +55,7 @@ pub fn (mut p Parser) call_expr(is_c, is_js bool, mod string) ast.CallExpr {
|
||||
is_or_block_used = true
|
||||
or_stmts = p.parse_block_no_scope()
|
||||
p.close_scope()
|
||||
p.inside_or_expr = false
|
||||
}
|
||||
node := ast.CallExpr{
|
||||
name: fn_name
|
||||
|
@ -8,6 +8,8 @@ import v.table
|
||||
import v.token
|
||||
|
||||
fn (mut p Parser) if_expr() ast.IfExpr {
|
||||
p.inside_if_expr = true
|
||||
defer { p.inside_if_expr = false }
|
||||
pos := p.tok.position()
|
||||
mut branches := []ast.IfBranch{}
|
||||
mut has_else := false
|
||||
|
@ -26,6 +26,8 @@ mut:
|
||||
is_c bool
|
||||
is_js bool
|
||||
inside_if bool
|
||||
inside_if_expr bool
|
||||
inside_or_expr bool
|
||||
inside_for bool
|
||||
inside_fn bool
|
||||
pref &pref.Preferences
|
||||
@ -479,6 +481,8 @@ pub fn (mut p Parser) stmt() ast.Stmt {
|
||||
}
|
||||
} else if p.tok.kind == .name && p.peek_tok.kind == .name {
|
||||
p.error_with_pos('unexpected name `$p.peek_tok.lit`', p.peek_tok.position())
|
||||
} else if p.tok.kind == .name && !p.inside_if_expr && !p.inside_or_expr && p.peek_tok.kind in [.rcbr, .eof] {
|
||||
p.error_with_pos('`$p.tok.lit` evaluated but not used', p.tok.position())
|
||||
}
|
||||
epos := p.tok.position()
|
||||
expr := p.expr(0)
|
||||
|
Loading…
Reference in New Issue
Block a user