Skip to content

Commit 85ad4a1

Browse files
committed
Review feedback
1 parent 723d56c commit 85ad4a1

File tree

3 files changed

+8
-5
lines changed

3 files changed

+8
-5
lines changed

lib/Sema/TypeCheckProtocol.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -885,9 +885,9 @@ swift::matchWitness(TypeChecker &tc,
885885
return missingRequirementMatch(type);
886886

887887
type = type->mapTypeOutOfContext();
888-
if (auto typeParamTy = type->getAs<GenericTypeParamType>())
888+
if (type->hasTypeParameter())
889889
if (auto env = conformance->getGenericEnvironment())
890-
if (auto assocType = env->mapTypeIntoContext(typeParamTy))
890+
if (auto assocType = env->mapTypeIntoContext(type))
891891
return missingRequirementMatch(assocType);
892892

893893
auto reqSubMap = reqEnvironment.getRequirementToSyntheticMap();

lib/Sema/TypeCheckProtocol.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,9 @@ class CheckTypeWitnessResult {
7979
bool isConformanceRequirement() const {
8080
return Requirement->isExistentialType();
8181
}
82+
bool isSuperclassRequirement() const {
83+
return !isConformanceRequirement();
84+
}
8285
bool isError() const {
8386
return Requirement->is<ErrorType>();
8487
}

lib/Sema/TypeCheckProtocolInference.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1747,16 +1747,16 @@ bool AssociatedTypeInference::diagnoseNoSolutions(
17471747
if (failed.Result.isError())
17481748
continue;
17491749

1750-
if (!failed.TypeWitness->is<NominalType>() &&
1750+
if (!failed.TypeWitness->getAnyNominal() &&
17511751
failed.Result.isConformanceRequirement()) {
17521752
diags.diagnose(failed.Witness,
17531753
diag::associated_type_witness_conform_impossible,
17541754
assocType->getName(), failed.TypeWitness,
17551755
failed.Result.getRequirement());
17561756
continue;
17571757
}
1758-
if (!failed.TypeWitness->is<ClassType>() &&
1759-
!failed.Result.isConformanceRequirement()) {
1758+
if (!failed.TypeWitness->getClassOrBoundGenericClass() &&
1759+
failed.Result.isSuperclassRequirement()) {
17601760
diags.diagnose(failed.Witness,
17611761
diag::associated_type_witness_inherit_impossible,
17621762
assocType->getName(), failed.TypeWitness,

0 commit comments

Comments
 (0)