AST: Don't forget to check ProtocolCompositionType::hasExplicitAnyObject() in TypeMatcher

This commit is contained in:
Slava Pestov
2022-10-03 19:30:40 -04:00
parent 1336277bdc
commit c8f2331c40
2 changed files with 17 additions and 0 deletions

View File

@@ -358,6 +358,12 @@ class TypeMatcher {
Type secondType,
Type sugaredFirstType) {
if (auto secondProtocolComposition = secondType->getAs<ProtocolCompositionType>()) {
if (firstProtocolComposition->hasExplicitAnyObject() !=
secondProtocolComposition->hasExplicitAnyObject()) {
return mismatch(firstProtocolComposition.getPointer(), secondType,
sugaredFirstType);
}
auto firstMembers = firstProtocolComposition->getMembers();
auto secondMembers = secondProtocolComposition->getMembers();

View File

@@ -0,0 +1,11 @@
// RUN: %target-typecheck-verify-swift
protocol B {
typealias A = Any
}
protocol D : B {
// expected-error@-1 {{no type for 'Self.A' can satisfy both 'Self.A == Any' and 'Self.A == AnyObject'}}
// expected-error@-2 {{no type for 'Self.A' can satisfy both 'Self.A : AnyObject' and 'Self.A == Any'}}
typealias A = AnyObject
}