diff --git a/vlib/v/ast/attr.v b/vlib/v/ast/attr.v index 20c597a4aa..1d473a4e19 100644 --- a/vlib/v/ast/attr.v +++ b/vlib/v/ast/attr.v @@ -13,6 +13,7 @@ pub: is_comptime_define bool // [if name] arg string // [name: arg] is_string_arg bool // [name: 'arg'] + is_number_arg bool // [name: 123] pos token.Position } diff --git a/vlib/v/parser/parser.v b/vlib/v/parser/parser.v index 469266c6d4..e2285da6b8 100644 --- a/vlib/v/parser/parser.v +++ b/vlib/v/parser/parser.v @@ -1512,6 +1512,7 @@ fn (mut p Parser) parse_attr() ast.Attr { mut arg := '' is_string := p.tok.kind == .string mut is_string_arg := false + mut is_number_arg := false if is_string { name = p.tok.lit p.next() @@ -1532,6 +1533,10 @@ fn (mut p Parser) parse_attr() ast.Attr { // `name: arg` if p.tok.kind == .name { arg = p.check_name() + } else if p.tok.kind == .number { + arg = p.tok.lit + is_number_arg = true + p.next() } else if p.tok.kind == .string { // `name: 'arg'` arg = p.tok.lit is_string_arg = true @@ -1545,6 +1550,7 @@ fn (mut p Parser) parse_attr() ast.Attr { is_comptime_define: is_comptime_define arg: arg is_string_arg: is_string_arg + is_number_arg: is_number_arg pos: apos.extend(p.tok.position()) } }