mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
parser: check if guard condition (#13765)
This commit is contained in:
parent
54b0a2aa62
commit
bb2ddb98a3
@ -107,6 +107,10 @@ fn (mut p Parser) if_expr(is_comptime bool) ast.IfExpr {
|
|||||||
p.check(.decl_assign)
|
p.check(.decl_assign)
|
||||||
comments << p.eat_comments()
|
comments << p.eat_comments()
|
||||||
expr := p.expr(0)
|
expr := p.expr(0)
|
||||||
|
if expr !in [ast.CallExpr, ast.IndexExpr, ast.PrefixExpr] {
|
||||||
|
p.error_with_pos('if guard condition expression is illegal, it should return optional',
|
||||||
|
expr.pos())
|
||||||
|
}
|
||||||
|
|
||||||
cond = ast.IfGuardExpr{
|
cond = ast.IfGuardExpr{
|
||||||
vars: vars
|
vars: vars
|
||||||
|
7
vlib/v/parser/tests/if_guard_cond_err.out
Normal file
7
vlib/v/parser/tests/if_guard_cond_err.out
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
vlib/v/parser/tests/if_guard_cond_err.vv:16:16: error: if guard condition expression is illegal, it should return optional
|
||||||
|
14 | fp.usage_example('GOOG AAPL')
|
||||||
|
15 | _ := fp.bool('version', `v`, false, 'version information.')
|
||||||
|
16 | if args := fp.finalize() && args.len > 0 {
|
||||||
|
| ~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
17 | return args
|
||||||
|
18 | } else {
|
28
vlib/v/parser/tests/if_guard_cond_err.vv
Normal file
28
vlib/v/parser/tests/if_guard_cond_err.vv
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
import os
|
||||||
|
import flag
|
||||||
|
|
||||||
|
const version = "v0.1.0"
|
||||||
|
|
||||||
|
// getting command line options and arguments
|
||||||
|
// returns the arguments
|
||||||
|
fn get_args() ?[]string {
|
||||||
|
mut fp := flag.new_flag_parser(os.args)
|
||||||
|
fp.application('ticker')
|
||||||
|
fp.version(version)
|
||||||
|
fp.description('A CLI yahoo ticker app')
|
||||||
|
fp.skip_executable()
|
||||||
|
fp.usage_example('GOOG AAPL')
|
||||||
|
_ := fp.bool('version', `v`, false, 'version information.')
|
||||||
|
if args := fp.finalize() && args.len > 0 {
|
||||||
|
return args
|
||||||
|
} else {
|
||||||
|
eprintln(err.msg())
|
||||||
|
println(fp.usage())
|
||||||
|
return none
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
tickers := get_args() or { return }
|
||||||
|
println(tickers)
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user