mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
The code that diagnosed availability for types was reverse-engineering the Type itself, rather than making use of the declaration already stored within the TypeRepr. More importantly, it would completely skip nested types, so it would fail to diagnose a deprecated/unavailable “Bar” in “Foo.Bar”. Replace the type-inspecting check with a much-simpler walk over the components of the IdentTypeRepr that looks at the declarations stored in the IdentTypeRepr directly. This provides proper source-location information and handles nested types. This is a source-breaking change for ill-formed Swift 3 code that used nested type references to refer to something that should be unavailable. Given that such Swift 3 code was ill-formed, and most uses of it would crash at runtime, we likely do not need to provide specific logic to address this in Swift 3 compatibility mode.
6.1 KiB
6.1 KiB