@@ -43,10 +43,12 @@ fn (mut p Parser) parse_attr_call(name string, is_at bool, apos token.Pos) []ast
4343 mut base_arg := ''
4444 mut base_quote := u8 (`'` )
4545 mut base_arg_name := ''
46+ mut base_call_arg_idx := - 1
4647 mut base_has_arg := false
4748 mut attrs := []ast.Attr{}
4849 mut has_base_arg := false
4950 mut positional_arg_idx := 1
51+ mut call_arg_idx := 0
5052 for p.tok.kind ! in [.rpar, .eof] {
5153 mut is_named := false
5254 mut arg_name := ''
@@ -68,6 +70,7 @@ fn (mut p Parser) parse_attr_call(name string, is_at bool, apos token.Pos) []ast
6870 base_kind = kind
6971 base_quote = quote
7072 base_arg_name = arg_name
73+ base_call_arg_idx = call_arg_idx
7174 has_base_arg = true
7275 } else {
7376 attrs << ast.Attr{
@@ -80,27 +83,32 @@ fn (mut p Parser) parse_attr_call(name string, is_at bool, apos token.Pos) []ast
8083 has_at: is_at
8184 call_name: name
8285 call_arg_name: arg_name
86+ call_arg_idx: call_arg_idx
8387 }
8488 }
8589 } else if ! has_base_arg {
8690 base_has_arg = true
8791 base_arg = arg
8892 base_kind = kind
8993 base_quote = quote
94+ base_arg_name = arg_name
95+ base_call_arg_idx = call_arg_idx
9096 has_base_arg = true
9197 } else {
9298 attrs << ast.Attr{
93- name: '${name} _${positional_arg_idx} '
94- has_arg: true
95- arg: arg
96- kind: kind
97- quote: quote
98- pos: apos.extend (p.prev_tok.pos ())
99- has_at: is_at
100- call_name: name
99+ name: '${name} _${positional_arg_idx} '
100+ has_arg: true
101+ arg: arg
102+ kind: kind
103+ quote: quote
104+ pos: apos.extend (p.prev_tok.pos ())
105+ has_at: is_at
106+ call_name: name
107+ call_arg_idx: call_arg_idx
101108 }
102109 positional_arg_idx++
103110 }
111+ call_arg_idx++
104112 if p.tok.kind == .comma {
105113 p.next ()
106114 continue
@@ -118,6 +126,7 @@ fn (mut p Parser) parse_attr_call(name string, is_at bool, apos token.Pos) []ast
118126 has_at: is_at
119127 call_name: name
120128 call_arg_name: base_arg_name
129+ call_arg_idx: base_call_arg_idx
121130 }
122131 attrs.insert (0 , base_attr)
123132 return attrs
0 commit comments