Merge pull request #17062 from slavapestov/fix-type-alias-validation-forum-bug-4.2
Sema: Fix validateDeclForNameLookup() to use the right flags when resolving type alias underlying type [4.2]
diff --git a/lib/Sema/TypeCheckDecl.cpp b/lib/Sema/TypeCheckDecl.cpp
index e5327b2..949d0ac 100644
--- a/lib/Sema/TypeCheckDecl.cpp
+++ b/lib/Sema/TypeCheckDecl.cpp
@@ -7924,8 +7924,10 @@
validateAccessControl(typealias);
ProtocolRequirementTypeResolver resolver;
+ TypeResolutionOptions options =
+ TypeResolutionFlags::TypeAliasUnderlyingType;
if (validateType(typealias->getUnderlyingTypeLoc(),
- typealias, TypeResolutionOptions(), &resolver)) {
+ typealias, options, &resolver)) {
typealias->setInvalid();
typealias->getUnderlyingTypeLoc().setInvalidType(Context);
}
diff --git a/test/decl/typealias/protocol.swift b/test/decl/typealias/protocol.swift
index 4d577fc..b38215d 100644
--- a/test/decl/typealias/protocol.swift
+++ b/test/decl/typealias/protocol.swift
@@ -290,3 +290,12 @@
extension P11 {
func foo(_: X11<Self.A>) { }
}
+
+// Ordering issue
+struct SomeConformingType : UnboundGenericAliasProto {
+ func f(_: G<Int>) {}
+}
+
+protocol UnboundGenericAliasProto {
+ typealias G = X
+}