1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

parser: proper error on fn decl in script mode (#7680)

This commit is contained in:
Daniel Däschle 2020-12-30 20:18:36 +01:00 committed by GitHub
parent e4edc5925a
commit 3ee3c8b3ed
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 0 deletions

View File

@ -424,6 +424,11 @@ fn (mut p Parser) fn_decl() ast.FnDecl {
fn (mut p Parser) anon_fn() ast.AnonFn {
pos := p.tok.position()
p.check(.key_fn)
if p.pref.is_script && p.tok.kind == .name {
p.error_with_pos('function declarations in script mode should be before all script statements',
p.tok.position())
return ast.AnonFn{}
}
p.open_scope()
// TODO generics
args, _, is_variadic := p.fn_args()

View File

@ -0,0 +1,7 @@
vlib/v/parser/tests/invalid_fn_decl_script_err.vv:3:4: error: function declarations in script mode should be before all script statements
1 | mynum := 10
2 |
3 | fn main() {
| ~~~~
4 | println(mynum)
5 | }

View File

@ -0,0 +1,5 @@
mynum := 10
fn main() {
println(mynum)
}