Skip to content

Commit b78ca45

Browse files
authored
Merge pull request #15625 from DougGregor/extend-generic-typealias-rdar39023438
2 parents 5db2682 + c95d5e9 commit b78ca45

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

lib/AST/DeclContext.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,9 +146,14 @@ static Type computeExtensionType(const ExtensionDecl *ED, DeclTypeKind kind) {
146146
return type->getAnyNominal()->getDeclaredType();
147147
case DeclTypeKind::DeclaredTypeInContext:
148148
return type;
149-
case DeclTypeKind::DeclaredInterfaceType:
149+
case DeclTypeKind::DeclaredInterfaceType: {
150150
// FIXME: Need a sugar-preserving getExtendedInterfaceType for extensions
151-
return type->getAnyNominal()->getDeclaredInterfaceType();
151+
if (auto nominal = type->getAnyNominal())
152+
return nominal->getDeclaredInterfaceType();
153+
154+
auto typealias = cast<TypeAliasDecl>(type->getAnyGeneric());
155+
return typealias->getUnderlyingTypeLoc().getType();
156+
}
152157
}
153158

154159
llvm_unreachable("Unhandled DeclTypeKind in switch.");

test/Compatibility/stdlib_generic_typealiases.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,9 @@ extension DictionaryIndex {
2222
_ = RequiresHashable<Key>()
2323
}
2424
}
25+
26+
extension CountableRange where Element == Int {
27+
// expected-warning@-1{{'CountableRange' is deprecated: renamed to 'Range'}}
28+
// expected-note@-2{{use 'Range' instead}}
29+
func getLowerBoundAsInt() -> Int { return lowerBound }
30+
}

0 commit comments

Comments
 (0)