Open 1ec5 opened 7 years ago
Ooh, good catch. @slavapestov, think this is easy enough to be a starter bug? (The original @compatibility_alias
support was a starter bug.)
Yeah. The ClangImporter already has some code to cook up generic type aliases for renamed things, it should be easy to generalize. Constructing generic things by hand is still rather tedious but there are enough examples to look at that it might be a good learning experience.
Environment
Apple Swift version 3.1 (swiftlang-802.0.48 clang-802.0.38) Target: x86_64-apple-macosx10.9Additional Detail from JIRA
| | | |------------------|-----------------| |Votes | 0 | |Component/s | Compiler | |Labels | Bug, ClangImporter, CompilerCrash | |Assignee | None | |Priority | Medium | md5: 7957eccbc827156c9c704b0311e1268eIssue Description:
Any reference to an Objective-C
@compatibility_alias
of a class that uses lightweight generics causes the compiler to segfault in Swift 3.1 but not in Swift 3.0. The crash only reproduces if the actual class has a lightweight generics parameter.To reproduce this bug, declare the following class and compatibility alias in an Objective-C header:
Then refer to it anywhere in a Swift file:
The compiler crashes with the following crash trace:
This issue was originally reported in the Mapbox GL Native project. The Mapbox iOS and macOS SDKs define a couple compatibility aliases, but only the alias to a class using lightweight generics is affected.