@@ -82,7 +82,7 @@ extension ASTGenVisitor {
8282 case . implicitlyUnwrappedOptionalType( let node) :
8383 return self . generate ( implicitlyUnwrappedOptionalType: node) . asTypeRepr
8484 case . memberType( let node) :
85- return self . generate ( memberType: node)
85+ return self . generate ( memberType: node) . asTypeRepr
8686 case . metatypeType( let node) :
8787 return self . generate ( metatypeType: node)
8888 case . missingType:
@@ -137,45 +137,29 @@ extension ASTGenVisitor {
137137 ) . asTypeRepr
138138 }
139139
140- func generate( memberType node: MemberTypeSyntax ) -> BridgedTypeRepr {
141- // Gather the member components, in decreasing depth order.
142- var reverseMemberComponents = [ BridgedTypeRepr] ( )
140+ func generate( memberType node: MemberTypeSyntax ) -> BridgedDeclRefTypeRepr {
141+ let ( name, nameLoc) = self . generateIdentifierAndSourceLoc ( node. name)
143142
144- var baseType = TypeSyntax ( node)
145- while let memberType = baseType. as ( MemberTypeSyntax . self) {
146- let ( name, nameLoc) = self . generateIdentifierAndSourceLoc ( node. name)
143+ let genericArguments : BridgedArrayRef
144+ let angleRange : BridgedSourceRange
145+ if let generics = node. genericArgumentClause {
146+ genericArguments = generics. arguments. lazy. map {
147+ self . generate ( type: $0. argument)
148+ } . bridgedArray ( in: self )
147149
148- if let generics = memberType. genericArgumentClause {
149- let genericArguments = generics. arguments. lazy. map {
150- self . generate ( type: $0. argument)
151- }
152-
153- reverseMemberComponents. append (
154- BridgedGenericIdentTypeRepr . createParsed (
155- self . ctx,
156- name: name,
157- nameLoc: nameLoc,
158- genericArgs: genericArguments. bridgedArray ( in: self ) ,
159- leftAngleLoc: self . generateSourceLoc ( generics. leftAngle) ,
160- rightAngleLoc: self . generateSourceLoc ( generics. rightAngle)
161- ) . asTypeRepr
162- )
163- } else {
164- reverseMemberComponents. append (
165- BridgedSimpleIdentTypeRepr . createParsed ( self . ctx, loc: nameLoc, name: name) . asTypeRepr
166- )
167- }
168-
169- baseType = memberType. baseType
150+ angleRange = self . generateSourceRange ( start: generics. leftAngle, end: generics. rightAngle)
151+ } else {
152+ genericArguments = . init( )
153+ angleRange = . init( )
170154 }
171155
172- let baseComponent = generate ( type: baseType)
173- let memberComponents = reverseMemberComponents. reversed ( ) . bridgedArray ( in: self )
174-
175- return BridgedMemberTypeRepr . createParsed (
156+ return BridgedDeclRefTypeRepr . createParsed (
176157 self . ctx,
177- base: baseComponent,
178- members: memberComponents
158+ base: self . generate ( type: node. baseType) ,
159+ name: name,
160+ nameLoc: nameLoc,
161+ genericArguments: genericArguments,
162+ angleRange: angleRange
179163 )
180164 }
181165
0 commit comments