diff --git a/vlib/v/parser/parser.v b/vlib/v/parser/parser.v index 96523b10a4..3c5dcb62ea 100644 --- a/vlib/v/parser/parser.v +++ b/vlib/v/parser/parser.v @@ -2399,6 +2399,8 @@ pub fn (mut p Parser) name_expr() ast.Expr { p.check(.question) } } + is_array := p.tok.kind == .lsbr + is_fixed_array := is_array && p.peek_tok.kind == .number mut mod := '' // p.warn('resetting') p.expr_mod = '' @@ -2553,8 +2555,6 @@ pub fn (mut p Parser) name_expr() ast.Expr { || (p.tok.kind == .lsbr && p.peek_tok.kind == .number && p.peek_token(2).kind == .rsbr && p.peek_token(4).kind == .lpar) { // ?[]foo(), ?[1]foo, foo(), foo() or type() cast - is_array := p.tok.kind == .lsbr - is_fixed_array := is_array && p.peek_tok.kind == .number mut name := if is_array { p.peek_token(if is_fixed_array { 3 } else { 2 }).lit } else { diff --git a/vlib/v/tests/option_array_submodule_test.v b/vlib/v/tests/option_array_submodule_test.v new file mode 100644 index 0000000000..3e68b8763b --- /dev/null +++ b/vlib/v/tests/option_array_submodule_test.v @@ -0,0 +1,11 @@ +import another_module as amodule + +fn test_submodule_array_instance() { + x := ?[]amodule.SomeStruct{} + dump(x) + assert x == none + + y := ?amodule.SomeStruct(none) + dump(y) + assert y == none +}