@@ -182,30 +182,34 @@ extension Parser {
182
182
}
183
183
184
184
185
- let atSign = self . eat ( . atSign)
185
+ let ( unexpectedBeforeAtSign , atSign) = self . eat ( . atSign)
186
186
let ident = self . consumeIdentifier ( )
187
+ let unexpectedBeforeLeftParen : RawUnexpectedNodesSyntax ?
187
188
let leftParen : RawTokenSyntax ?
188
189
let arg : RawSyntax ?
189
190
let unexpectedBeforeRightParen : RawUnexpectedNodesSyntax ?
190
191
let rightParen : RawTokenSyntax ?
191
192
if self . at ( . leftParen) {
192
193
var args = [ RawTokenSyntax] ( )
193
- leftParen = self . eat ( . leftParen)
194
+ ( unexpectedBeforeLeftParen , leftParen) = self . eat ( . leftParen)
194
195
var loopProgress = LoopProgressCondition ( )
195
196
while !self . at ( . eof) && !self . at ( . rightParen) && loopProgress. evaluate ( currentToken) {
196
197
args. append ( self . consumeAnyToken ( ) )
197
198
}
198
199
arg = RawSyntax ( RawTokenListSyntax ( elements: args, arena: self . arena) )
199
200
( unexpectedBeforeRightParen, rightParen) = self . expect ( . rightParen)
200
201
} else {
202
+ unexpectedBeforeLeftParen = nil
201
203
leftParen = nil
202
204
arg = nil
203
205
unexpectedBeforeRightParen = nil
204
206
rightParen = nil
205
207
}
206
208
return RawSyntax ( RawAttributeSyntax (
209
+ unexpectedBeforeAtSign,
207
210
atSignToken: atSign,
208
211
attributeName: ident,
212
+ unexpectedBeforeLeftParen,
209
213
leftParen: leftParen,
210
214
argument: arg,
211
215
unexpectedBeforeRightParen,
@@ -215,7 +219,7 @@ extension Parser {
215
219
}
216
220
217
221
mutating func parseCustomAttribute( ) -> RawCustomAttributeSyntax {
218
- let atSign = self . eat ( . atSign)
222
+ let ( unexpectedBeforeAtSign , atSign) = self . eat ( . atSign)
219
223
let attrName = self . parseType ( )
220
224
221
225
// Custom attributes are stricter than normal attributes about their
@@ -226,11 +230,14 @@ extension Parser {
226
230
leftParen: nil , argumentList: nil , rightParen: nil ,
227
231
arena: self . arena)
228
232
}
229
- let leftParen = self . eat ( . leftParen)
233
+ let ( unexpectedBeforeLeftParen , leftParen) = self . eat ( . leftParen)
230
234
let arguments = self . parseArgumentListElements ( )
231
235
let ( unexpectedBeforeRightParen, rightParen) = self . expect ( . rightParen)
232
236
return RawCustomAttributeSyntax (
233
- atSignToken: atSign, attributeName: attrName,
237
+ unexpectedBeforeAtSign,
238
+ atSignToken: atSign,
239
+ attributeName: attrName,
240
+ unexpectedBeforeLeftParen,
234
241
leftParen: leftParen,
235
242
argumentList: RawTupleExprElementListSyntax ( elements: arguments, arena: self . arena) ,
236
243
unexpectedBeforeRightParen,
@@ -241,7 +248,7 @@ extension Parser {
241
248
242
249
extension Parser {
243
250
mutating func parseAvailabilityAttribute( ) -> RawAttributeSyntax {
244
- let atSign = self . eat ( . atSign)
251
+ let ( unexpectedBeforeAtSign , atSign) = self . eat ( . atSign)
245
252
assert ( self . currentToken. tokenText == " available " )
246
253
let available = self . consumeAnyToken ( )
247
254
let ( unexpectedBeforeLeftParen, leftParen) = self . expect ( . leftParen)
@@ -259,6 +266,7 @@ extension Parser {
259
266
let ( unexpectedBeforeRightParen, rightParen) = self . expect ( . rightParen)
260
267
261
268
return RawAttributeSyntax (
269
+ unexpectedBeforeAtSign,
262
270
atSignToken: atSign,
263
271
attributeName: available,
264
272
unexpectedBeforeLeftParen,
@@ -273,7 +281,7 @@ extension Parser {
273
281
274
282
extension Parser {
275
283
mutating func parseDifferentiableAttribute( ) -> RawAttributeSyntax {
276
- let atSign = self . eat ( . atSign)
284
+ let ( unexpectedBeforeAtSign , atSign) = self . eat ( . atSign)
277
285
assert ( self . currentToken. tokenText == " differentiable " )
278
286
let differentiable = self . consumeAnyToken ( )
279
287
let ( unexpectedBeforeLeftParen, leftParen) = self . expect ( . leftParen)
@@ -282,6 +290,7 @@ extension Parser {
282
290
let ( unexpectedBeforeRightParen, rightParen) = self . expect ( . rightParen)
283
291
284
292
return RawAttributeSyntax (
293
+ unexpectedBeforeAtSign,
285
294
atSignToken: atSign,
286
295
attributeName: differentiable,
287
296
unexpectedBeforeLeftParen,
@@ -355,7 +364,7 @@ extension Parser {
355
364
)
356
365
}
357
366
358
- let leftParen = self . eat ( . leftParen)
367
+ let ( unexpectedBeforeLeftParen , leftParen) = self . eat ( . leftParen)
359
368
var elements = [ RawDifferentiabilityParamSyntax] ( )
360
369
var loopProgress = LoopProgressCondition ( )
361
370
while !self . at ( . eof) && !self . at ( . rightParen) && loopProgress. evaluate ( currentToken) {
@@ -368,6 +377,7 @@ extension Parser {
368
377
369
378
let parameters = RawDifferentiabilityParamListSyntax ( elements: elements, arena: self . arena)
370
379
let list = RawDifferentiabilityParamsSyntax (
380
+ unexpectedBeforeLeftParen,
371
381
leftParen: leftParen,
372
382
diffParams: parameters,
373
383
unexpectedBeforeRightParen,
@@ -396,10 +406,14 @@ extension Parser {
396
406
return RawDifferentiabilityParamSyntax (
397
407
parameter: RawSyntax ( token) , trailingComma: comma, arena: self . arena)
398
408
case . selfKeyword:
399
- let token = self . eat ( . selfKeyword)
409
+ let ( unexpectedBeforeToken , token) = self . eat ( . selfKeyword)
400
410
let comma = self . consume ( if: . comma)
401
411
return RawDifferentiabilityParamSyntax (
402
- parameter: RawSyntax ( token) , trailingComma: comma, arena: self . arena)
412
+ unexpectedBeforeToken,
413
+ parameter: RawSyntax ( token) ,
414
+ trailingComma: comma,
415
+ arena: self . arena
416
+ )
403
417
default :
404
418
return nil
405
419
}
@@ -408,27 +422,32 @@ extension Parser {
408
422
409
423
extension Parser {
410
424
mutating func parseObjectiveCAttribute( ) -> RawAttributeSyntax {
411
- let atSign = self . eat ( . atSign)
425
+ let ( unexpectedBeforeAtSign , atSign) = self . eat ( . atSign)
412
426
assert ( self . currentToken. tokenText == " objc " )
413
427
let objc = self . consumeAnyToken ( )
414
428
429
+ let unexpectedBeforeLeftParen : RawUnexpectedNodesSyntax ?
415
430
let leftParen : RawTokenSyntax ?
416
431
let argument : RawObjCSelectorSyntax ?
417
432
let unexpectedBeforeRightParen : RawUnexpectedNodesSyntax ?
418
433
let rightParen : RawTokenSyntax ?
419
434
if self . at ( . leftParen) {
420
- leftParen = self . eat ( . leftParen)
435
+ ( unexpectedBeforeLeftParen , leftParen) = self . eat ( . leftParen)
421
436
argument = self . parseObjectiveCSelector ( )
422
437
( unexpectedBeforeRightParen, rightParen) = self . expect ( . rightParen)
423
438
} else {
439
+ unexpectedBeforeLeftParen = nil
424
440
leftParen = nil
425
441
argument = nil
426
442
unexpectedBeforeRightParen = nil
427
443
rightParen = nil
428
444
}
429
445
430
446
return RawAttributeSyntax (
431
- atSignToken: atSign, attributeName: objc,
447
+ unexpectedBeforeAtSign,
448
+ atSignToken: atSign,
449
+ attributeName: objc,
450
+ unexpectedBeforeLeftParen,
432
451
leftParen: leftParen,
433
452
argument: argument. map ( RawSyntax . init) ,
434
453
unexpectedBeforeRightParen,
@@ -443,9 +462,13 @@ extension Parser {
443
462
while !self . at ( . eof) && !self . at ( . rightParen) && loopProgress. evaluate ( currentToken) {
444
463
// Empty selector piece.
445
464
if self . at ( . colon) {
446
- let colon = self . eat ( . colon)
465
+ let ( unexpectedBeforeColon , colon) = self . eat ( . colon)
447
466
elements. append ( RawObjCSelectorPieceSyntax (
448
- name: nil , colon: colon, arena: self . arena) )
467
+ name: nil ,
468
+ unexpectedBeforeColon,
469
+ colon: colon,
470
+ arena: self . arena
471
+ ) )
449
472
continue
450
473
}
451
474
@@ -465,13 +488,14 @@ extension Parser {
465
488
466
489
extension Parser {
467
490
mutating func parseSpecializeAttribute( ) -> RawAttributeSyntax {
468
- let atSign = self . eat ( . atSign)
491
+ let ( unexpectedBeforeAtSign , atSign) = self . eat ( . atSign)
469
492
assert ( self . currentToken. tokenText == " _specialize " )
470
493
let specializeToken = self . consumeAnyToken ( )
471
494
let ( unexpectedBeforeLeftParen, leftParen) = self . expect ( . leftParen)
472
495
let argument = self . parseSpecializeAttributeSpecList ( )
473
496
let ( unexpectedBeforeRightParen, rightParen) = self . expect ( . rightParen)
474
497
return RawAttributeSyntax (
498
+ unexpectedBeforeAtSign,
475
499
atSignToken: atSign,
476
500
attributeName: specializeToken,
477
501
unexpectedBeforeLeftParen,
@@ -649,7 +673,7 @@ extension Parser {
649
673
650
674
extension Parser {
651
675
mutating func parsePrivateImportAttribute( ) -> RawAttributeSyntax {
652
- let atSign = self . eat ( . atSign)
676
+ let ( unexpectedBeforeAtSign , atSign) = self . eat ( . atSign)
653
677
assert ( self . currentToken. tokenText == " _private " )
654
678
let privateToken = self . consumeAnyToken ( )
655
679
let ( unexpectedBeforeLeftParen, leftParen) = self . expect ( . leftParen)
@@ -658,6 +682,7 @@ extension Parser {
658
682
let filename = self . consumeAnyToken ( )
659
683
let ( unexpectedBeforeRightParen, rightParen) = self . expect ( . rightParen)
660
684
return RawAttributeSyntax (
685
+ unexpectedBeforeAtSign,
661
686
atSignToken: atSign,
662
687
attributeName: privateToken,
663
688
unexpectedBeforeLeftParen,
@@ -678,7 +703,7 @@ extension Parser {
678
703
679
704
extension Parser {
680
705
mutating func parseDynamicReplacementAttribute( ) -> RawAttributeSyntax {
681
- let atSign = self . eat ( . atSign)
706
+ let ( unexpectedBeforeAtSign , atSign) = self . eat ( . atSign)
682
707
assert ( self . currentToken. tokenText == " _dynamicReplacement " )
683
708
let dynamicReplacementToken = self . consumeAnyToken ( )
684
709
let ( unexpectedBeforeLeftParen, leftParen) = self . expect ( . leftParen)
@@ -695,6 +720,7 @@ extension Parser {
695
720
let method = RawDeclNameSyntax ( declBaseName: RawSyntax ( base) , declNameArguments: args, arena: self . arena)
696
721
let ( unexpectedBeforeRightParen, rightParen) = self . expect ( . rightParen)
697
722
return RawAttributeSyntax (
723
+ unexpectedBeforeAtSign,
698
724
atSignToken: atSign,
699
725
attributeName: dynamicReplacementToken,
700
726
unexpectedBeforeLeftParen,
@@ -715,13 +741,14 @@ extension Parser {
715
741
716
742
extension Parser {
717
743
mutating func parseSPIAttribute( ) -> RawAttributeSyntax {
718
- let atSign = self . eat ( . atSign)
744
+ let ( unexpectedBeforeAtSign , atSign) = self . eat ( . atSign)
719
745
assert ( self . currentToken. tokenText == " _spi " )
720
746
let spiToken = self . consumeAnyToken ( )
721
747
let ( unexpectedBeforeLeftParen, leftParen) = self . expect ( . leftParen)
722
748
let label = self . consumeAnyToken ( )
723
749
let ( unexpectedBeforeRightParen, rightParen) = self . expect ( . rightParen)
724
750
return RawAttributeSyntax (
751
+ unexpectedBeforeAtSign,
725
752
atSignToken: atSign,
726
753
attributeName: spiToken,
727
754
unexpectedBeforeLeftParen,
0 commit comments