[Diagnostics] Add CSFix::diagnoseForAmbiguity for diagnosing common

fixes that appear in all solutions.
This commit is contained in:
Holly Borla
2020-02-07 16:25:46 -08:00
committed by Pavel Yaskevich
parent 54706ba79b
commit 651c27b50b
7 changed files with 58 additions and 25 deletions

View File

@@ -479,6 +479,24 @@ bool DefineMemberBasedOnUse::diagnose(bool asNote) const {
return AlreadyDiagnosed || failure.diagnose(asNote);
}
bool
DefineMemberBasedOnUse::diagnoseForAmbiguity(ArrayRef<Solution> solutions) const {
Type concreteBaseType;
for (const auto &solution: solutions) {
auto baseType = solution.simplifyType(BaseType);
if (!concreteBaseType)
concreteBaseType = baseType;
if (concreteBaseType->getCanonicalType() != baseType->getCanonicalType()) {
getConstraintSystem().getASTContext().Diags.diagnose(getAnchor()->getLoc(),
diag::unresolved_member_no_inference, Name);
return true;
}
}
return diagnose();
}
DefineMemberBasedOnUse *
DefineMemberBasedOnUse::create(ConstraintSystem &cs, Type baseType,
DeclNameRef member, bool alreadyDiagnosed,