Skip to content

Commit d9bf48d

Browse files
authored
Merge pull request #66 from yoheimuta/populate-lastpos-ph2
feat: Populate Meta.LastPos of import and option
2 parents 3465d9e + bb43acf commit d9bf48d

File tree

10 files changed

+244
-3
lines changed

10 files changed

+244
-3
lines changed

parser/enum_test.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,11 @@ func TestParser_ParseEnum(t *testing.T) {
5656
Line: 2,
5757
Column: 3,
5858
},
59+
LastPos: meta.Position{
60+
Offset: 52,
61+
Line: 2,
62+
Column: 28,
63+
},
5964
},
6065
},
6166
&parser.EnumField{
@@ -195,6 +200,11 @@ func TestParser_ParseEnum(t *testing.T) {
195200
Line: 3,
196201
Column: 3,
197202
},
203+
LastPos: meta.Position{
204+
Offset: 64,
205+
Line: 3,
206+
Column: 28,
207+
},
198208
},
199209
},
200210
&parser.EnumField{
@@ -274,6 +284,11 @@ func TestParser_ParseEnum(t *testing.T) {
274284
Line: 2,
275285
Column: 3,
276286
},
287+
LastPos: meta.Position{
288+
Offset: 76,
289+
Line: 2,
290+
Column: 28,
291+
},
277292
},
278293
},
279294
&parser.EnumField{
@@ -351,6 +366,11 @@ func TestParser_ParseEnum(t *testing.T) {
351366
Line: 2,
352367
Column: 3,
353368
},
369+
LastPos: meta.Position{
370+
Offset: 52,
371+
Line: 2,
372+
Column: 28,
373+
},
354374
},
355375
},
356376
},
@@ -389,6 +409,11 @@ func TestParser_ParseEnum(t *testing.T) {
389409
Line: 2,
390410
Column: 3,
391411
},
412+
LastPos: meta.Position{
413+
Offset: 52,
414+
Line: 2,
415+
Column: 28,
416+
},
392417
},
393418
},
394419
&parser.Comment{

parser/import.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ func (p *Parser) ParseImport() (*Import, error) {
8484
return &Import{
8585
Modifier: modifier,
8686
Location: location,
87-
Meta: meta.Meta{Pos: startPos.Position},
87+
Meta: meta.Meta{
88+
Pos: startPos.Position,
89+
LastPos: p.lex.Pos.Position,
90+
},
8891
}, nil
8992
}

parser/import_test.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@ func TestParser_ParseImport(t *testing.T) {
4343
Line: 1,
4444
Column: 1,
4545
},
46+
LastPos: meta.Position{
47+
Offset: 40,
48+
Line: 1,
49+
Column: 41,
50+
},
4651
},
4752
},
4853
},
@@ -58,6 +63,11 @@ func TestParser_ParseImport(t *testing.T) {
5863
Line: 1,
5964
Column: 1,
6065
},
66+
LastPos: meta.Position{
67+
Offset: 27,
68+
Line: 1,
69+
Column: 28,
70+
},
6171
},
6272
},
6373
},
@@ -73,6 +83,11 @@ func TestParser_ParseImport(t *testing.T) {
7383
Line: 1,
7484
Column: 1,
7585
},
86+
LastPos: meta.Position{
87+
Offset: 25,
88+
Line: 1,
89+
Column: 26,
90+
},
7691
},
7792
},
7893
},

parser/message_test.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@ message Outer {
4747
Line: 3,
4848
Column: 3,
4949
},
50+
LastPos: meta.Position{
51+
Offset: 46,
52+
Line: 3,
53+
Column: 30,
54+
},
5055
},
5156
},
5257
&parser.Message{
@@ -131,6 +136,11 @@ message outer {
131136
Line: 3,
132137
Column: 3,
133138
},
139+
LastPos: meta.Position{
140+
Offset: 46,
141+
Line: 3,
142+
Column: 30,
143+
},
134144
},
135145
},
136146
&parser.Message{
@@ -294,6 +304,11 @@ message outer {
294304
Line: 4,
295305
Column: 3,
296306
},
307+
LastPos: meta.Position{
308+
Offset: 58,
309+
Line: 4,
310+
Column: 30,
311+
},
297312
},
298313
},
299314
&parser.Message{
@@ -399,6 +414,11 @@ message outer {
399414
Line: 13,
400415
Column: 5,
401416
},
417+
LastPos: meta.Position{
418+
Offset: 241,
419+
Line: 13,
420+
Column: 30,
421+
},
402422
},
403423
},
404424
},
@@ -669,6 +689,11 @@ message SearchRequest {
669689
Line: 7,
670690
Column: 5,
671691
},
692+
LastPos: meta.Position{
693+
Offset: 231,
694+
Line: 7,
695+
Column: 30,
696+
},
672697
},
673698
},
674699
},
@@ -902,6 +927,11 @@ message Outer {
902927
Line: 3,
903928
Column: 3,
904929
},
930+
LastPos: meta.Position{
931+
Offset: 46,
932+
Line: 3,
933+
Column: 30,
934+
},
905935
},
906936
},
907937
&parser.Message{

parser/meta/meta.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ type Meta struct {
55
// Pos is the source position.
66
Pos Position
77
// LastPos is the last source position.
8-
// Currently it is set when the parsed element type is syntax, package, comment, message, enum, oneof, rpc or service.
8+
// Currently it is set when the parsed element type is
9+
// syntax, package, comment, import, option, message, enum, oneof, rpc or service.
910
LastPos Position
1011
}

parser/oneof_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,11 @@ func TestParser_ParseOneof(t *testing.T) {
469469
Line: 2,
470470
Column: 3,
471471
},
472+
LastPos: meta.Position{
473+
Offset: 63,
474+
Line: 2,
475+
Column: 46,
476+
},
472477
},
473478
},
474479
},
@@ -504,6 +509,11 @@ func TestParser_ParseOneof(t *testing.T) {
504509
Line: 2,
505510
Column: 3,
506511
},
512+
LastPos: meta.Position{
513+
Offset: 47,
514+
Line: 2,
515+
Column: 30,
516+
},
507517
},
508518
},
509519
},

parser/option.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,10 @@ func (p *Parser) ParseOption() (*Option, error) {
7373
return &Option{
7474
OptionName: optionName,
7575
Constant: constant,
76-
Meta: meta.Meta{Pos: startPos.Position},
76+
Meta: meta.Meta{
77+
Pos: startPos.Position,
78+
LastPos: p.lex.Pos.Position,
79+
},
7780
}, nil
7881
}
7982

parser/option_test.go

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ func TestParser_ParseOption(t *testing.T) {
4949
Line: 1,
5050
Column: 1,
5151
},
52+
LastPos: meta.Position{
53+
Offset: 39,
54+
Line: 1,
55+
Column: 40,
56+
},
5257
},
5358
},
5459
},
@@ -64,6 +69,11 @@ func TestParser_ParseOption(t *testing.T) {
6469
Line: 1,
6570
Column: 1,
6671
},
72+
LastPos: meta.Position{
73+
Offset: 27,
74+
Line: 1,
75+
Column: 28,
76+
},
6777
},
6878
},
6979
},
@@ -79,6 +89,11 @@ func TestParser_ParseOption(t *testing.T) {
7989
Line: 1,
8090
Column: 1,
8191
},
92+
LastPos: meta.Position{
93+
Offset: 47,
94+
Line: 1,
95+
Column: 48,
96+
},
8297
},
8398
},
8499
},
@@ -100,6 +115,11 @@ rest_collection:"projects.addresses"}`,
100115
Line: 2,
101116
Column: 1,
102117
},
118+
LastPos: meta.Position{
119+
Offset: 131,
120+
Line: 5,
121+
Column: 2,
122+
},
103123
},
104124
},
105125
},
@@ -121,6 +141,11 @@ option (google.api.http) = {
121141
Line: 2,
122142
Column: 1,
123143
},
144+
LastPos: meta.Position{
145+
Offset: 111,
146+
Line: 6,
147+
Column: 2,
148+
},
124149
},
125150
},
126151
},
@@ -143,6 +168,11 @@ option (google.api.http) = {
143168
Line: 2,
144169
Column: 1,
145170
},
171+
LastPos: meta.Position{
172+
Offset: 122,
173+
Line: 7,
174+
Column: 2,
175+
},
146176
},
147177
},
148178
},
@@ -165,6 +195,11 @@ option (google.api.http) = {
165195
Line: 2,
166196
Column: 1,
167197
},
198+
LastPos: meta.Position{
199+
Offset: 113,
200+
Line: 7,
201+
Column: 2,
202+
},
168203
},
169204
},
170205
},
@@ -185,6 +220,11 @@ option (google.api.http) = {
185220
Line: 2,
186221
Column: 1,
187222
},
223+
LastPos: meta.Position{
224+
Offset: 76,
225+
Line: 5,
226+
Column: 2,
227+
},
188228
},
189229
},
190230
},
@@ -207,6 +247,11 @@ option (opt) = {
207247
Line: 2,
208248
Column: 1,
209249
},
250+
LastPos: meta.Position{
251+
Offset: 76,
252+
Line: 7,
253+
Column: 2,
254+
},
210255
},
211256
},
212257
},
@@ -239,6 +284,11 @@ body:"*"}]}`,
239284
Line: 2,
240285
Column: 1,
241286
},
287+
LastPos: meta.Position{
288+
Offset: 265,
289+
Line: 14,
290+
Column: 2,
291+
},
242292
},
243293
},
244294
},
@@ -255,6 +305,11 @@ body:"*"}]}`,
255305
Line: 1,
256306
Column: 1,
257307
},
308+
LastPos: meta.Position{
309+
Offset: 31,
310+
Line: 1,
311+
Column: 32,
312+
},
258313
},
259314
},
260315
},

0 commit comments

Comments
 (0)