This repository was archived by the owner on Jun 1, 2023. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +21
-2
lines changed Expand file tree Collapse file tree 2 files changed +21
-2
lines changed Original file line number Diff line number Diff line change @@ -173,10 +173,19 @@ public final class Interface {
173
173
let `typealias` = symbol. api as? Typealias ,
174
174
let initializedType = `typealias`. initializedType
175
175
{
176
- pathComponents = ( symbol. context. compactMap { ( $0 as? Symbol ) ? . name ?? ( $0 as? Extension ) ? . extendedType } ) + [ initializedType]
176
+ let initializedTypePathComponents = initializedType. split ( separator: " . " )
177
+ let candidates = symbolsGroupedByIdentifier. keys
178
+ . filter { $0. name == initializedType }
179
+ . filter { $0. pathComponents. count <= initializedTypePathComponents. count }
180
+ if let id = candidates. max ( by: { $0. pathComponents. count > $1. pathComponents. count } ) {
181
+ pathComponents = id. pathComponents + CollectionOfOne( id. name)
182
+ } else {
183
+ return [ ]
184
+ }
177
185
}
178
186
}
179
187
180
- return symbolsGroupedByQualifiedName [ pathComponents. joined ( separator: " . " ) ] ?? [ ]
188
+ let path = pathComponents. joined ( separator: " . " )
189
+ return symbolsGroupedByQualifiedName [ path] ?? [ ]
181
190
}
182
191
}
Original file line number Diff line number Diff line change @@ -282,6 +282,10 @@ final class InterfaceTypeTests: XCTestCase {
282
282
}
283
283
284
284
public typealias MyClass = SomeClass
285
+
286
+ public class AnotherClass {
287
+ typealias PublicClass = SomeClass
288
+ }
285
289
286
290
public typealias ExternalClass = UIGestureRecognizer
287
291
"""#
@@ -306,6 +310,12 @@ final class InterfaceTypeTests: XCTestCase {
306
310
XCTAssertEqual ( module. interface. symbols ( named: " MyClass.InnerObject " , resolvingTypealiases: true ) . first? . name, " InnerObject " )
307
311
XCTAssertNil ( module. interface. symbols ( named: " MyClass.InnerObject " , resolvingTypealiases: false ) . first)
308
312
313
+ XCTAssertEqual ( module. interface. symbols ( named: " AnotherClass.PublicClass " , resolvingTypealiases: true ) . first? . name, " SomeClass " )
314
+ XCTAssertTrue ( module. interface. symbols ( named: " AnotherClass.PublicClass " , resolvingTypealiases: false ) . first? . api is Typealias )
315
+
316
+ XCTAssertEqual ( module. interface. symbols ( named: " AnotherClass.PublicClass.ActuallyInternal " , resolvingTypealiases: true ) . first? . name, " InnerStruct " )
317
+ XCTAssertNil ( module. interface. symbols ( named: " AnotherClass.PublicClass.ActuallyInternal " , resolvingTypealiases: false ) . first)
318
+
309
319
XCTAssertNil ( module. interface. symbols ( named: " ExternalClass " , resolvingTypealiases: true ) . first)
310
320
XCTAssertTrue ( module. interface. symbols ( named: " ExternalClass " , resolvingTypealiases: false ) . first? . api is Typealias )
311
321
You can’t perform that action at this time.
0 commit comments