Skip to content

Commit 526632c

Browse files
authored
Merge pull request swiftlang#17061 from slavapestov/fix-type-alias-validation-forum-bug
Fix validateDeclForNameLookup() to use the right flags when resolving type alias underlying type
2 parents 869931c + 29a04bd commit 526632c

File tree

3 files changed

+13
-5
lines changed

3 files changed

+13
-5
lines changed

lib/Sema/ITCDecl.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,7 @@ void IterativeTypeChecker::processResolveTypeDecl(
341341
if (typeAliasDecl->getDeclContext()->isModuleScopeContext() &&
342342
typeAliasDecl->getGenericParams() == nullptr) {
343343
TypeResolutionOptions options =
344-
TypeResolutionFlags::TypeAliasUnderlyingType;
344+
TypeResolutionFlags::TypeAliasUnderlyingType;
345345
if (!typeAliasDecl->getDeclContext()->isCascadingContextForLookup(
346346
/*functionsAreNonCascading*/true)) {
347347
options |= TypeResolutionFlags::KnownNonCascadingDependency;

lib/Sema/TypeCheckDecl.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3815,9 +3815,6 @@ void TypeChecker::resolveIsObjC(ValueDecl *VD) {
38153815
auto dc = VD->getDeclContext();
38163816
if (dc->getAsClassOrClassExtensionContext()) {
38173817
// Members of classes can be @objc.
3818-
3819-
// FIXME: We
3820-
validateDeclForNameLookup(VD);
38213818
}
38223819
else if (isa<ClassDecl>(VD)) {
38233820
// Classes can be @objc.
@@ -7990,8 +7987,10 @@ void TypeChecker::validateDeclForNameLookup(ValueDecl *D) {
79907987
validateAccessControl(typealias);
79917988

79927989
ProtocolRequirementTypeResolver resolver;
7990+
TypeResolutionOptions options =
7991+
TypeResolutionFlags::TypeAliasUnderlyingType;
79937992
if (validateType(typealias->getUnderlyingTypeLoc(),
7994-
typealias, TypeResolutionOptions(), &resolver)) {
7993+
typealias, options, &resolver)) {
79957994
typealias->setInvalid();
79967995
typealias->getUnderlyingTypeLoc().setInvalidType(Context);
79977996
}

test/decl/typealias/protocol.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,3 +290,12 @@ struct Y11: P11 { }
290290
extension P11 {
291291
func foo(_: X11<Self.A>) { }
292292
}
293+
294+
// Ordering issue
295+
struct SomeConformingType : UnboundGenericAliasProto {
296+
func f(_: G<Int>) {}
297+
}
298+
299+
protocol UnboundGenericAliasProto {
300+
typealias G = X
301+
}

0 commit comments

Comments
 (0)