parser: display correct position on boolean expression error (#8563)
parent
44ab0154b2
commit
6b776e686e
|
@ -17,17 +17,17 @@ vlib/v/checker/tests/infix_err.vv:9:9: error: `+` cannot be used with `?string`
|
|||
8 | _ = f() + ''
|
||||
9 | _ = f() + f()
|
||||
| ^
|
||||
10 |
|
||||
10 |
|
||||
11 | _ = 4 + g()
|
||||
vlib/v/checker/tests/infix_err.vv:11:7: error: `+` cannot be used with `?int`
|
||||
9 | _ = f() + f()
|
||||
10 |
|
||||
10 |
|
||||
11 | _ = 4 + g()
|
||||
| ^
|
||||
12 | _ = int(0) + g() // FIXME not detected
|
||||
13 | _ = g() + int(3)
|
||||
vlib/v/checker/tests/infix_err.vv:12:12: error: unwrapped optional cannot be used in an infix expression
|
||||
10 |
|
||||
10 |
|
||||
11 | _ = 4 + g()
|
||||
12 | _ = int(0) + g() // FIXME not detected
|
||||
| ^
|
||||
|
@ -45,16 +45,37 @@ vlib/v/checker/tests/infix_err.vv:14:9: error: `+` cannot be used with `?int`
|
|||
13 | _ = g() + int(3)
|
||||
14 | _ = g() + 3
|
||||
| ^
|
||||
15 |
|
||||
15 |
|
||||
16 | // binary operands
|
||||
vlib/v/checker/tests/infix_err.vv:17:5: error: left operand for `&&` is not a boolean
|
||||
15 |
|
||||
15 |
|
||||
16 | // binary operands
|
||||
17 | _ = 1 && 2
|
||||
| ^
|
||||
18 | _ = true || 2
|
||||
19 |
|
||||
vlib/v/checker/tests/infix_err.vv:18:13: error: right operand for `||` is not a boolean
|
||||
16 | // binary operands
|
||||
17 | _ = 1 && 2
|
||||
18 | _ = true || 2
|
||||
| ^
|
||||
19 |
|
||||
20 | // boolean expressions
|
||||
vlib/v/checker/tests/infix_err.vv:21:22: error: use `()` to make the boolean expression clear
|
||||
19 |
|
||||
20 | // boolean expressions
|
||||
21 | _ = 1 == 1 && 2 == 2 || 3 == 3
|
||||
| ~~
|
||||
22 | _ = 1 == 1
|
||||
23 | && 2 == 2 || 3 == 3
|
||||
vlib/v/checker/tests/infix_err.vv:23:12: error: use `()` to make the boolean expression clear
|
||||
21 | _ = 1 == 1 && 2 == 2 || 3 == 3
|
||||
22 | _ = 1 == 1
|
||||
23 | && 2 == 2 || 3 == 3
|
||||
| ~~
|
||||
24 | && 4 == 4
|
||||
vlib/v/checker/tests/infix_err.vv:24:2: error: use `()` to make the boolean expression clear
|
||||
22 | _ = 1 == 1
|
||||
23 | && 2 == 2 || 3 == 3
|
||||
24 | && 4 == 4
|
||||
| ~~
|
||||
|
|
|
@ -16,3 +16,9 @@ _ = g() + 3
|
|||
// binary operands
|
||||
_ = 1 && 2
|
||||
_ = true || 2
|
||||
|
||||
// boolean expressions
|
||||
_ = 1 == 1 && 2 == 2 || 3 == 3
|
||||
_ = 1 == 1
|
||||
&& 2 == 2 || 3 == 3
|
||||
&& 4 == 4
|
||||
|
|
|
@ -397,12 +397,6 @@ fn (mut p Parser) infix_expr(left ast.Expr) ast.Expr {
|
|||
}
|
||||
precedence := p.tok.precedence()
|
||||
mut pos := p.tok.position()
|
||||
if left.position().line_nr < pos.line_nr {
|
||||
pos = token.Position{
|
||||
...pos
|
||||
line_nr: left.position().line_nr
|
||||
}
|
||||
}
|
||||
p.next()
|
||||
mut right := ast.Expr{}
|
||||
prev_expecting_type := p.expecting_type
|
||||
|
|
Loading…
Reference in New Issue