@@ -24,6 +24,9 @@ protocol NominalTypeDeclarationTrait {
2424 modifiers: RawDeclModifierListSyntax ,
2525 _ unexpectedBeforeIntroducerKeyword: RawUnexpectedNodesSyntax ? ,
2626 introducerKeyword: RawTokenSyntax ,
27+ extendedType: RawTypeSyntax ? ,
28+ _ unexpectedBeforePeriod: RawUnexpectedNodesSyntax ? ,
29+ period: RawTokenSyntax ? ,
2730 _ unexpectedBeforeIdentifier: RawUnexpectedNodesSyntax ? ,
2831 name: RawTokenSyntax ,
2932 primaryOrGenerics: PrimaryOrGenerics ? ,
@@ -42,6 +45,9 @@ extension RawProtocolDeclSyntax: NominalTypeDeclarationTrait {
4245 modifiers: RawDeclModifierListSyntax ,
4346 _ unexpectedBeforeIntroducerKeyword: RawUnexpectedNodesSyntax ? ,
4447 introducerKeyword: RawTokenSyntax ,
48+ extendedType: RawTypeSyntax ? ,
49+ _ unexpectedBeforePeriod: RawUnexpectedNodesSyntax ? ,
50+ period: RawTokenSyntax ? ,
4551 _ unexpectedBeforeIdentifier: RawUnexpectedNodesSyntax ? ,
4652 name: RawTokenSyntax ,
4753 primaryOrGenerics: RawPrimaryAssociatedTypeClauseSyntax ? ,
@@ -55,6 +61,9 @@ extension RawProtocolDeclSyntax: NominalTypeDeclarationTrait {
5561 modifiers: modifiers,
5662 unexpectedBeforeIntroducerKeyword,
5763 protocolKeyword: introducerKeyword,
64+ extendedType: extendedType,
65+ unexpectedBeforePeriod,
66+ period: period,
5867 unexpectedBeforeIdentifier,
5968 name: name,
6069 primaryAssociatedTypeClause: primaryOrGenerics,
@@ -76,6 +85,9 @@ extension RawClassDeclSyntax: NominalTypeDeclarationTrait {
7685 modifiers: RawDeclModifierListSyntax ,
7786 _ unexpectedBeforeIntroducerKeyword: RawUnexpectedNodesSyntax ? ,
7887 introducerKeyword: RawTokenSyntax ,
88+ extendedType: RawTypeSyntax ? ,
89+ _ unexpectedBeforePeriod: RawUnexpectedNodesSyntax ? ,
90+ period: RawTokenSyntax ? ,
7991 _ unexpectedBeforeIdentifier: RawUnexpectedNodesSyntax ? ,
8092 name: RawTokenSyntax ,
8193 primaryOrGenerics: RawGenericParameterClauseSyntax ? ,
@@ -89,6 +101,9 @@ extension RawClassDeclSyntax: NominalTypeDeclarationTrait {
89101 modifiers: modifiers,
90102 unexpectedBeforeIntroducerKeyword,
91103 classKeyword: introducerKeyword,
104+ extendedType: extendedType,
105+ unexpectedBeforePeriod,
106+ period: period,
92107 unexpectedBeforeIdentifier,
93108 name: name,
94109 genericParameterClause: primaryOrGenerics,
@@ -110,6 +125,9 @@ extension RawActorDeclSyntax: NominalTypeDeclarationTrait {
110125 modifiers: RawDeclModifierListSyntax ,
111126 _ unexpectedBeforeIntroducerKeyword: RawUnexpectedNodesSyntax ? ,
112127 introducerKeyword: RawTokenSyntax ,
128+ extendedType: RawTypeSyntax ? ,
129+ _ unexpectedBeforePeriod: RawUnexpectedNodesSyntax ? ,
130+ period: RawTokenSyntax ? ,
113131 _ unexpectedBeforeIdentifier: RawUnexpectedNodesSyntax ? ,
114132 name: RawTokenSyntax ,
115133 primaryOrGenerics: RawGenericParameterClauseSyntax ? ,
@@ -123,6 +141,9 @@ extension RawActorDeclSyntax: NominalTypeDeclarationTrait {
123141 modifiers: modifiers,
124142 unexpectedBeforeIntroducerKeyword,
125143 actorKeyword: introducerKeyword,
144+ extendedType: extendedType,
145+ unexpectedBeforePeriod,
146+ period: period,
126147 unexpectedBeforeIdentifier,
127148 name: name,
128149 genericParameterClause: primaryOrGenerics,
@@ -144,6 +165,9 @@ extension RawStructDeclSyntax: NominalTypeDeclarationTrait {
144165 modifiers: RawDeclModifierListSyntax ,
145166 _ unexpectedBeforeIntroducerKeyword: RawUnexpectedNodesSyntax ? ,
146167 introducerKeyword: RawTokenSyntax ,
168+ extendedType: RawTypeSyntax ? ,
169+ _ unexpectedBeforePeriod: RawUnexpectedNodesSyntax ? ,
170+ period: RawTokenSyntax ? ,
147171 _ unexpectedBeforeIdentifier: RawUnexpectedNodesSyntax ? ,
148172 name: RawTokenSyntax ,
149173 primaryOrGenerics: RawGenericParameterClauseSyntax ? ,
@@ -157,6 +181,9 @@ extension RawStructDeclSyntax: NominalTypeDeclarationTrait {
157181 modifiers: modifiers,
158182 unexpectedBeforeIntroducerKeyword,
159183 structKeyword: introducerKeyword,
184+ extendedType: extendedType,
185+ unexpectedBeforePeriod,
186+ period: period,
160187 unexpectedBeforeIdentifier,
161188 name: name,
162189 genericParameterClause: primaryOrGenerics,
@@ -178,6 +205,9 @@ extension RawEnumDeclSyntax: NominalTypeDeclarationTrait {
178205 modifiers: RawDeclModifierListSyntax ,
179206 _ unexpectedBeforeIntroducerKeyword: RawUnexpectedNodesSyntax ? ,
180207 introducerKeyword: RawTokenSyntax ,
208+ extendedType: RawTypeSyntax ? ,
209+ _ unexpectedBeforePeriod: RawUnexpectedNodesSyntax ? ,
210+ period: RawTokenSyntax ? ,
181211 _ unexpectedBeforeIdentifier: RawUnexpectedNodesSyntax ? ,
182212 name: RawTokenSyntax ,
183213 primaryOrGenerics: RawGenericParameterClauseSyntax ? ,
@@ -191,6 +221,9 @@ extension RawEnumDeclSyntax: NominalTypeDeclarationTrait {
191221 modifiers: modifiers,
192222 unexpectedBeforeIntroducerKeyword,
193223 enumKeyword: introducerKeyword,
224+ extendedType: extendedType,
225+ unexpectedBeforePeriod,
226+ period: period,
194227 unexpectedBeforeIdentifier,
195228 name: name,
196229 genericParameterClause: primaryOrGenerics,
@@ -214,13 +247,25 @@ extension Parser {
214247 introucerHandle: RecoveryConsumptionHandle
215248 ) -> T where T: NominalTypeDeclarationTrait {
216249 let ( unexpectedBeforeIntroducerKeyword, introducerKeyword) = self . eat ( introucerHandle)
250+
251+ var extendedType : RawTypeSyntax ? = nil
252+ var unexpectedBeforePeriod : RawUnexpectedNodesSyntax ? = nil
253+ var period : RawTokenSyntax ? = nil
254+ if self . lookahead ( ) . canParseExtendedTypeForNominalTypeDecl ( ) {
255+ extendedType = parseSimpleType ( parsingContext: . nominalTypeDeclExtendedName)
256+ ( unexpectedBeforePeriod, period) = self . expect ( . period)
257+ }
258+
217259 let ( unexpectedBeforeName, name) = self . expectIdentifier ( keywordRecovery: true )
218260 if unexpectedBeforeName == nil && name. isMissing && self . atStartOfLine {
219261 return T . init (
220262 attributes: attrs. attributes,
221263 modifiers: attrs. modifiers,
222264 unexpectedBeforeIntroducerKeyword,
223265 introducerKeyword: introducerKeyword,
266+ extendedType: extendedType,
267+ unexpectedBeforePeriod,
268+ period: period,
224269 unexpectedBeforeName,
225270 name: name,
226271 primaryOrGenerics: nil ,
@@ -264,6 +309,9 @@ extension Parser {
264309 modifiers: attrs. modifiers,
265310 unexpectedBeforeIntroducerKeyword,
266311 introducerKeyword: introducerKeyword,
312+ extendedType: extendedType,
313+ unexpectedBeforePeriod,
314+ period: period,
267315 unexpectedBeforeName,
268316 name: name,
269317 primaryOrGenerics: primaryOrGenerics,
0 commit comments