@@ -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 . consumeIdentifierOrRethrows ( )
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
@@ -475,13 +498,14 @@ extension Parser {
475
498
476
499
extension Parser {
477
500
mutating func parseSpecializeAttribute( ) -> RawAttributeSyntax {
478
- let atSign = self . eat ( . atSign)
501
+ let ( unexpectedBeforeAtSign , atSign) = self . eat ( . atSign)
479
502
assert ( self . currentToken. tokenText == " _specialize " )
480
503
let specializeToken = self . consumeAnyToken ( )
481
504
let ( unexpectedBeforeLeftParen, leftParen) = self . expect ( . leftParen)
482
505
let argument = self . parseSpecializeAttributeSpecList ( )
483
506
let ( unexpectedBeforeRightParen, rightParen) = self . expect ( . rightParen)
484
507
return RawAttributeSyntax (
508
+ unexpectedBeforeAtSign,
485
509
atSignToken: atSign,
486
510
attributeName: specializeToken,
487
511
unexpectedBeforeLeftParen,
@@ -659,7 +683,7 @@ extension Parser {
659
683
660
684
extension Parser {
661
685
mutating func parsePrivateImportAttribute( ) -> RawAttributeSyntax {
662
- let atSign = self . eat ( . atSign)
686
+ let ( unexpectedBeforeAtSign , atSign) = self . eat ( . atSign)
663
687
assert ( self . currentToken. tokenText == " _private " )
664
688
let privateToken = self . consumeAnyToken ( )
665
689
let ( unexpectedBeforeLeftParen, leftParen) = self . expect ( . leftParen)
@@ -668,6 +692,7 @@ extension Parser {
668
692
let filename = self . consumeAnyToken ( )
669
693
let ( unexpectedBeforeRightParen, rightParen) = self . expect ( . rightParen)
670
694
return RawAttributeSyntax (
695
+ unexpectedBeforeAtSign,
671
696
atSignToken: atSign,
672
697
attributeName: privateToken,
673
698
unexpectedBeforeLeftParen,
@@ -688,7 +713,7 @@ extension Parser {
688
713
689
714
extension Parser {
690
715
mutating func parseDynamicReplacementAttribute( ) -> RawAttributeSyntax {
691
- let atSign = self . eat ( . atSign)
716
+ let ( unexpectedBeforeAtSign , atSign) = self . eat ( . atSign)
692
717
assert ( self . currentToken. tokenText == " _dynamicReplacement " )
693
718
let dynamicReplacementToken = self . consumeAnyToken ( )
694
719
let ( unexpectedBeforeLeftParen, leftParen) = self . expect ( . leftParen)
@@ -705,6 +730,7 @@ extension Parser {
705
730
let method = RawDeclNameSyntax ( declBaseName: RawSyntax ( base) , declNameArguments: args, arena: self . arena)
706
731
let ( unexpectedBeforeRightParen, rightParen) = self . expect ( . rightParen)
707
732
return RawAttributeSyntax (
733
+ unexpectedBeforeAtSign,
708
734
atSignToken: atSign,
709
735
attributeName: dynamicReplacementToken,
710
736
unexpectedBeforeLeftParen,
@@ -725,13 +751,14 @@ extension Parser {
725
751
726
752
extension Parser {
727
753
mutating func parseSPIAttribute( ) -> RawAttributeSyntax {
728
- let atSign = self . eat ( . atSign)
754
+ let ( unexpectedBeforeAtSign , atSign) = self . eat ( . atSign)
729
755
assert ( self . currentToken. tokenText == " _spi " )
730
756
let spiToken = self . consumeAnyToken ( )
731
757
let ( unexpectedBeforeLeftParen, leftParen) = self . expect ( . leftParen)
732
758
let label = self . consumeAnyToken ( )
733
759
let ( unexpectedBeforeRightParen, rightParen) = self . expect ( . rightParen)
734
760
return RawAttributeSyntax (
761
+ unexpectedBeforeAtSign,
735
762
atSignToken: atSign,
736
763
attributeName: spiToken,
737
764
unexpectedBeforeLeftParen,
0 commit comments