checker: handle unexpected `or` blocks
parent
e5d4786371
commit
f49ef39708
|
@ -7,7 +7,6 @@ import os
|
|||
import time
|
||||
import v.cflag
|
||||
import v.pref
|
||||
import v.util
|
||||
import term
|
||||
|
||||
const (
|
||||
|
|
|
@ -935,6 +935,9 @@ pub fn (mut c Checker) check_expr_opt_call(x ast.Expr, xtype table.Type, is_retu
|
|||
ast.CallExpr {
|
||||
if it.return_type.flag_is(.optional) {
|
||||
c.check_or_block(it, xtype, is_return_used)
|
||||
} else if it.or_block.is_used {
|
||||
c.error('unexpected `or` block, the function does not return an optional',
|
||||
it.pos)
|
||||
}
|
||||
}
|
||||
else {}
|
||||
|
|
|
@ -61,9 +61,8 @@ pub fn (mut p Parser) call_expr(is_c, is_js bool, mod string) ast.CallExpr {
|
|||
// `foo()?`
|
||||
p.next()
|
||||
is_or_block_used = true
|
||||
//mut s := ast.Stmt{}
|
||||
//s = ast.ReturnStmt{}
|
||||
|
||||
// mut s := ast.Stmt{}
|
||||
// s = ast.ReturnStmt{}
|
||||
or_stmts << ast.Return{}
|
||||
}
|
||||
node := ast.CallExpr{
|
||||
|
|
Loading…
Reference in New Issue