@@ -181,29 +181,33 @@ extension Parser {
181
181
}
182
182
183
183
184
- let atSign = self . eat ( . atSign)
184
+ let ( unexpectedBeforeAtSign , atSign) = self . eat ( . atSign)
185
185
let ident = self . consumeIdentifier ( )
186
+ let unexpectedBeforeLeftParen : RawUnexpectedNodesSyntax ?
186
187
let leftParen : RawTokenSyntax ?
187
188
let arg : RawSyntax ?
188
189
let unexpectedBeforeRightParen : RawUnexpectedNodesSyntax ?
189
190
let rightParen : RawTokenSyntax ?
190
191
if self . at ( . leftParen) {
191
192
var args = [ RawTokenSyntax] ( )
192
- leftParen = self . eat ( . leftParen)
193
+ ( unexpectedBeforeLeftParen , leftParen) = self . eat ( . leftParen)
193
194
while !self . at ( . eof) , !self . at ( . rightParen) {
194
195
args. append ( self . consumeAnyToken ( ) )
195
196
}
196
197
arg = RawSyntax ( RawTokenListSyntax ( elements: args, arena: self . arena) )
197
198
( unexpectedBeforeRightParen, rightParen) = self . expect ( . rightParen)
198
199
} else {
200
+ unexpectedBeforeLeftParen = nil
199
201
leftParen = nil
200
202
arg = nil
201
203
unexpectedBeforeRightParen = nil
202
204
rightParen = nil
203
205
}
204
206
return RawSyntax ( RawAttributeSyntax (
207
+ unexpectedBeforeAtSign,
205
208
atSignToken: atSign,
206
209
attributeName: ident,
210
+ unexpectedBeforeLeftParen,
207
211
leftParen: leftParen,
208
212
argument: arg,
209
213
unexpectedBeforeRightParen,
@@ -213,7 +217,7 @@ extension Parser {
213
217
}
214
218
215
219
mutating func parseCustomAttribute( ) -> RawCustomAttributeSyntax {
216
- let atSign = self . eat ( . atSign)
220
+ let ( unexpectedBeforeAtSign , atSign) = self . eat ( . atSign)
217
221
let attrName = self . parseType ( )
218
222
219
223
// Custom attributes are stricter than normal attributes about their
@@ -224,11 +228,14 @@ extension Parser {
224
228
leftParen: nil , argumentList: nil , rightParen: nil ,
225
229
arena: self . arena)
226
230
}
227
- let leftParen = self . eat ( . leftParen)
231
+ let ( unexpectedBeforeLeftParen , leftParen) = self . eat ( . leftParen)
228
232
let arguments = self . parseArgumentListElements ( )
229
233
let ( unexpectedBeforeRightParen, rightParen) = self . expect ( . rightParen)
230
234
return RawCustomAttributeSyntax (
231
- atSignToken: atSign, attributeName: attrName,
235
+ unexpectedBeforeAtSign,
236
+ atSignToken: atSign,
237
+ attributeName: attrName,
238
+ unexpectedBeforeLeftParen,
232
239
leftParen: leftParen,
233
240
argumentList: RawTupleExprElementListSyntax ( elements: arguments, arena: self . arena) ,
234
241
unexpectedBeforeRightParen,
@@ -239,7 +246,7 @@ extension Parser {
239
246
240
247
extension Parser {
241
248
mutating func parseAvailabilityAttribute( ) -> RawAttributeSyntax {
242
- let atSign = self . eat ( . atSign)
249
+ let ( unexpectedBeforeAtSign , atSign) = self . eat ( . atSign)
243
250
assert ( self . currentToken. tokenText == " available " )
244
251
let available = self . consumeAnyToken ( )
245
252
let ( unexpectedBeforeLeftParen, leftParen) = self . expect ( . leftParen)
@@ -257,6 +264,7 @@ extension Parser {
257
264
let ( unexpectedBeforeRightParen, rightParen) = self . expect ( . rightParen)
258
265
259
266
return RawAttributeSyntax (
267
+ unexpectedBeforeAtSign,
260
268
atSignToken: atSign,
261
269
attributeName: available,
262
270
unexpectedBeforeLeftParen,
@@ -271,7 +279,7 @@ extension Parser {
271
279
272
280
extension Parser {
273
281
mutating func parseDifferentiableAttribute( ) -> RawAttributeSyntax {
274
- let atSign = self . eat ( . atSign)
282
+ let ( unexpectedBeforeAtSign , atSign) = self . eat ( . atSign)
275
283
assert ( self . currentToken. tokenText == " differentiable " )
276
284
let differentiable = self . consumeAnyToken ( )
277
285
let ( unexpectedBeforeLeftParen, leftParen) = self . expect ( . leftParen)
@@ -280,6 +288,7 @@ extension Parser {
280
288
let ( unexpectedBeforeRightParen, rightParen) = self . expect ( . rightParen)
281
289
282
290
return RawAttributeSyntax (
291
+ unexpectedBeforeAtSign,
283
292
atSignToken: atSign,
284
293
attributeName: differentiable,
285
294
unexpectedBeforeLeftParen,
@@ -353,7 +362,7 @@ extension Parser {
353
362
)
354
363
}
355
364
356
- let leftParen = self . eat ( . leftParen)
365
+ let ( unexpectedBeforeLeftParen , leftParen) = self . eat ( . leftParen)
357
366
var elements = [ RawDifferentiabilityParamSyntax] ( )
358
367
while !self . at ( . eof) && !self . at ( . rightParen) {
359
368
guard let param = self . parseDifferentiabilityParameter ( ) else {
@@ -365,6 +374,7 @@ extension Parser {
365
374
366
375
let parameters = RawDifferentiabilityParamListSyntax ( elements: elements, arena: self . arena)
367
376
let list = RawDifferentiabilityParamsSyntax (
377
+ unexpectedBeforeLeftParen,
368
378
leftParen: leftParen,
369
379
diffParams: parameters,
370
380
unexpectedBeforeRightParen,
@@ -393,10 +403,14 @@ extension Parser {
393
403
return RawDifferentiabilityParamSyntax (
394
404
parameter: RawSyntax ( token) , trailingComma: comma, arena: self . arena)
395
405
case . selfKeyword:
396
- let token = self . eat ( . selfKeyword)
406
+ let ( unexpectedBeforeToken , token) = self . eat ( . selfKeyword)
397
407
let comma = self . consume ( if: . comma)
398
408
return RawDifferentiabilityParamSyntax (
399
- parameter: RawSyntax ( token) , trailingComma: comma, arena: self . arena)
409
+ unexpectedBeforeToken,
410
+ parameter: RawSyntax ( token) ,
411
+ trailingComma: comma,
412
+ arena: self . arena
413
+ )
400
414
default :
401
415
return nil
402
416
}
@@ -405,27 +419,32 @@ extension Parser {
405
419
406
420
extension Parser {
407
421
mutating func parseObjectiveCAttribute( ) -> RawAttributeSyntax {
408
- let atSign = self . eat ( . atSign)
422
+ let ( unexpectedBeforeAtSign , atSign) = self . eat ( . atSign)
409
423
assert ( self . currentToken. tokenText == " objc " )
410
424
let objc = self . consumeAnyToken ( )
411
425
426
+ let unexpectedBeforeLeftParen : RawUnexpectedNodesSyntax ?
412
427
let leftParen : RawTokenSyntax ?
413
428
let argument : RawObjCSelectorSyntax ?
414
429
let unexpectedBeforeRightParen : RawUnexpectedNodesSyntax ?
415
430
let rightParen : RawTokenSyntax ?
416
431
if self . at ( . leftParen) {
417
- leftParen = self . eat ( . leftParen)
432
+ ( unexpectedBeforeLeftParen , leftParen) = self . eat ( . leftParen)
418
433
argument = self . parseObjectiveCSelector ( )
419
434
( unexpectedBeforeRightParen, rightParen) = self . expect ( . rightParen)
420
435
} else {
436
+ unexpectedBeforeLeftParen = nil
421
437
leftParen = nil
422
438
argument = nil
423
439
unexpectedBeforeRightParen = nil
424
440
rightParen = nil
425
441
}
426
442
427
443
return RawAttributeSyntax (
428
- atSignToken: atSign, attributeName: objc,
444
+ unexpectedBeforeAtSign,
445
+ atSignToken: atSign,
446
+ attributeName: objc,
447
+ unexpectedBeforeLeftParen,
429
448
leftParen: leftParen,
430
449
argument: argument. map ( RawSyntax . init) ,
431
450
unexpectedBeforeRightParen,
@@ -439,9 +458,13 @@ extension Parser {
439
458
while !self . at ( . eof) && !self . at ( . rightParen) {
440
459
// Empty selector piece.
441
460
if self . at ( . colon) {
442
- let colon = self . eat ( . colon)
461
+ let ( unexpectedBeforeColon , colon) = self . eat ( . colon)
443
462
elements. append ( RawObjCSelectorPieceSyntax (
444
- name: nil , colon: colon, arena: self . arena) )
463
+ name: nil ,
464
+ unexpectedBeforeColon,
465
+ colon: colon,
466
+ arena: self . arena
467
+ ) )
445
468
continue
446
469
}
447
470
@@ -461,13 +484,14 @@ extension Parser {
461
484
462
485
extension Parser {
463
486
mutating func parseSpecializeAttribute( ) -> RawAttributeSyntax {
464
- let atSign = self . eat ( . atSign)
487
+ let ( unexpectedBeforeAtSign , atSign) = self . eat ( . atSign)
465
488
assert ( self . currentToken. tokenText == " _specialize " )
466
489
let specializeToken = self . consumeAnyToken ( )
467
490
let ( unexpectedBeforeLeftParen, leftParen) = self . expect ( . leftParen)
468
491
let argument = self . parseSpecializeAttributeSpecList ( )
469
492
let ( unexpectedBeforeRightParen, rightParen) = self . expect ( . rightParen)
470
493
return RawAttributeSyntax (
494
+ unexpectedBeforeAtSign,
471
495
atSignToken: atSign,
472
496
attributeName: specializeToken,
473
497
unexpectedBeforeLeftParen,
@@ -644,7 +668,7 @@ extension Parser {
644
668
645
669
extension Parser {
646
670
mutating func parsePrivateImportAttribute( ) -> RawAttributeSyntax {
647
- let atSign = self . eat ( . atSign)
671
+ let ( unexpectedBeforeAtSign , atSign) = self . eat ( . atSign)
648
672
assert ( self . currentToken. tokenText == " _private " )
649
673
let privateToken = self . consumeAnyToken ( )
650
674
let ( unexpectedBeforeLeftParen, leftParen) = self . expect ( . leftParen)
@@ -653,6 +677,7 @@ extension Parser {
653
677
let filename = self . consumeAnyToken ( )
654
678
let ( unexpectedBeforeRightParen, rightParen) = self . expect ( . rightParen)
655
679
return RawAttributeSyntax (
680
+ unexpectedBeforeAtSign,
656
681
atSignToken: atSign,
657
682
attributeName: privateToken,
658
683
unexpectedBeforeLeftParen,
@@ -673,7 +698,7 @@ extension Parser {
673
698
674
699
extension Parser {
675
700
mutating func parseDynamicReplacementAttribute( ) -> RawAttributeSyntax {
676
- let atSign = self . eat ( . atSign)
701
+ let ( unexpectedBeforeAtSign , atSign) = self . eat ( . atSign)
677
702
assert ( self . currentToken. tokenText == " _dynamicReplacement " )
678
703
let dynamicReplacementToken = self . consumeAnyToken ( )
679
704
let ( unexpectedBeforeLeftParen, leftParen) = self . expect ( . leftParen)
@@ -690,6 +715,7 @@ extension Parser {
690
715
let method = RawDeclNameSyntax ( declBaseName: RawSyntax ( base) , declNameArguments: args, arena: self . arena)
691
716
let ( unexpectedBeforeRightParen, rightParen) = self . expect ( . rightParen)
692
717
return RawAttributeSyntax (
718
+ unexpectedBeforeAtSign,
693
719
atSignToken: atSign,
694
720
attributeName: dynamicReplacementToken,
695
721
unexpectedBeforeLeftParen,
@@ -710,13 +736,14 @@ extension Parser {
710
736
711
737
extension Parser {
712
738
mutating func parseSPIAttribute( ) -> RawAttributeSyntax {
713
- let atSign = self . eat ( . atSign)
739
+ let ( unexpectedBeforeAtSign , atSign) = self . eat ( . atSign)
714
740
assert ( self . currentToken. tokenText == " _spi " )
715
741
let spiToken = self . consumeAnyToken ( )
716
742
let ( unexpectedBeforeLeftParen, leftParen) = self . expect ( . leftParen)
717
743
let label = self . consumeAnyToken ( )
718
744
let ( unexpectedBeforeRightParen, rightParen) = self . expect ( . rightParen)
719
745
return RawAttributeSyntax (
746
+ unexpectedBeforeAtSign,
720
747
atSignToken: atSign,
721
748
attributeName: spiToken,
722
749
unexpectedBeforeLeftParen,
0 commit comments