Skip to content

Commit db1175e

Browse files
committed
parser: handle [noreturn] on methods too
1 parent 1028f0b commit db1175e

File tree

3 files changed

+21
-0
lines changed

3 files changed

+21
-0
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Test.zz_exit called, as it should
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
struct Test {}
2+
3+
[noreturn]
4+
fn (mut t Test) zz_exit() {
5+
println('${@METHOD} called, as it should')
6+
flush_stdout()
7+
exit(0)
8+
}
9+
10+
fn optional() ?int {
11+
return error('oh no')
12+
}
13+
14+
fn main() {
15+
mut test := Test{}
16+
a := optional() or { test.zz_exit() }
17+
println(a)
18+
exit(1)
19+
}

vlib/v/parser/fn.v

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,7 @@ fn (mut p Parser) fn_decl() ast.FnDecl {
399399
generic_names: generic_names
400400
is_pub: is_pub
401401
is_deprecated: is_deprecated
402+
is_noreturn: is_noreturn
402403
is_unsafe: is_unsafe
403404
is_main: is_main
404405
is_test: is_test

0 commit comments

Comments
 (0)