@@ -595,31 +595,38 @@ extension Parser {
595595 mutating func parseDottedExpressionSuffix( previousNode: ( some RawSyntaxNodeProtocol ) ? ) -> (
596596 unexpectedPeriod: RawUnexpectedNodesSyntax ? ,
597597 period: RawTokenSyntax ,
598- name: RawTokenSyntax ,
599- declNameArgs: RawDeclNameArgumentsSyntax ? ,
598+ declName: RawDeclReferenceExprSyntax ,
600599 generics: RawGenericArgumentClauseSyntax ?
601600 ) {
602601 precondition ( self . at ( . period) )
603602 let ( unexpectedPeriod, period, skipMemberName) = self . consumeMemberPeriod ( previousNode: previousNode)
604603 if skipMemberName {
605604 let missingIdentifier = missingToken ( . identifier)
606- return ( unexpectedPeriod, period, missingIdentifier, nil , nil )
605+ let declName = RawDeclReferenceExprSyntax (
606+ baseName: missingIdentifier,
607+ argumentNames: nil ,
608+ arena: self . arena
609+ )
610+ return ( unexpectedPeriod, period, declName, nil )
607611 }
608612
609613 // Parse the name portion.
610- let name : RawTokenSyntax
611- let declNameArgs : RawDeclNameArgumentsSyntax ?
612- if let index = self . consume ( if: . integerLiteral) {
614+ let declName : RawDeclReferenceExprSyntax
615+ if let indexOrSelf = self . consume ( if: . integerLiteral, . keyword( . self ) ) {
613616 // Handle "x.42" - a tuple index.
614- name = index
615- declNameArgs = nil
616- } else if let selfKeyword = self . consume ( if: . keyword( . self ) ) {
617- // Handle "x.self" expr.
618- name = selfKeyword
619- declNameArgs = nil
617+ declName = RawDeclReferenceExprSyntax (
618+ baseName: indexOrSelf,
619+ argumentNames: nil ,
620+ arena: self . arena
621+ )
620622 } else {
621623 // Handle an arbitrary declaration name.
622- ( name, declNameArgs) = self . parseDeclNameRef ( [ . keywords, . compoundNames] )
624+ let ( name, declNameArgs) = self . parseDeclNameRef ( [ . keywords, . compoundNames] )
625+ declName = RawDeclReferenceExprSyntax (
626+ baseName: name,
627+ argumentNames: declNameArgs,
628+ arena: self . arena
629+ )
623630 }
624631
625632 // Parse the generic arguments, if any.
@@ -630,18 +637,17 @@ extension Parser {
630637 generics = nil
631638 }
632639
633- return ( unexpectedPeriod, period, name , declNameArgs , generics)
640+ return ( unexpectedPeriod, period, declName , generics)
634641 }
635642
636643 mutating func parseDottedExpressionSuffix( _ start: RawExprSyntax ? ) -> RawExprSyntax {
637- let ( unexpectedPeriod, period, name , declNameArgs , generics) = parseDottedExpressionSuffix ( previousNode: start)
644+ let ( unexpectedPeriod, period, declName , generics) = parseDottedExpressionSuffix ( previousNode: start)
638645
639646 let memberAccess = RawMemberAccessExprSyntax (
640647 base: start,
641648 unexpectedPeriod,
642649 period: period,
643- name: name,
644- declNameArguments: declNameArgs,
650+ declName: declName,
645651 arena: self . arena
646652 )
647653
@@ -1036,7 +1042,7 @@ extension Parser {
10361042
10371043 // Check for a .name or .1 suffix.
10381044 if self . at ( . period) {
1039- let ( unexpectedPeriod, period, name , declNameArgs , generics) = parseDottedExpressionSuffix (
1045+ let ( unexpectedPeriod, period, declName , generics) = parseDottedExpressionSuffix (
10401046 previousNode: components. last? . raw ?? rootType? . raw ?? backslash. raw
10411047 )
10421048 components. append (
@@ -1045,8 +1051,7 @@ extension Parser {
10451051 period: period,
10461052 component: . property(
10471053 RawKeyPathPropertyComponentSyntax (
1048- property: name,
1049- declNameArguments: declNameArgs,
1054+ declName: declName,
10501055 genericArgumentClause: generics,
10511056 arena: self . arena
10521057 )
@@ -1203,12 +1208,16 @@ extension Parser {
12031208 }
12041209
12051210 let ( name, args) = self . parseDeclNameRef ( [ . keywords, . compoundNames] )
1211+ let declName = RawDeclReferenceExprSyntax (
1212+ baseName: name,
1213+ argumentNames: args,
1214+ arena: self . arena
1215+ )
12061216 return RawExprSyntax (
12071217 RawMemberAccessExprSyntax (
12081218 base: nil ,
12091219 period: period,
1210- name: name,
1211- declNameArguments: args,
1220+ declName: declName,
12121221 arena: self . arena
12131222 )
12141223 )
0 commit comments