Skip to content

Commit 5a9f674

Browse files
committed
Sema: Use the return value of checkGenericArguments()
1 parent fc3244b commit 5a9f674

File tree

4 files changed

+9
-36
lines changed

4 files changed

+9
-36
lines changed

lib/Sema/CSDiag.cpp

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5738,31 +5738,23 @@ bool FailureDiagnosis::diagnoseArgumentGenericRequirements(
57385738
return false;
57395739

57405740
class RequirementsListener : public GenericRequirementsCheckListener {
5741-
private:
5742-
bool DiagnosedAny = false;
5743-
57445741
public:
57455742
bool shouldCheck(RequirementKind kind, Type first, Type second) override {
57465743
// This means that we have encountered requirement which references
57475744
// generic parameter not used in the arguments, we can't diagnose it here.
57485745
return !(first->hasTypeParameter() || first->isTypeVariableOrMember());
57495746
}
5750-
5751-
void diagnosed(const Requirement *requirement) override {
5752-
DiagnosedAny = true;
5753-
}
5754-
5755-
bool foundProblems() const { return DiagnosedAny; }
57565747
};
57575748

57585749
RequirementsListener genericReqListener;
5759-
TC.checkGenericArguments(env->getOwningDeclContext(), argExpr->getLoc(),
5760-
AFD->getLoc(), AFD->getInterfaceType(),
5761-
env->getGenericSignature(), substitutions, nullptr,
5762-
ConformanceCheckFlags::SuppressDependencyTracking,
5763-
&genericReqListener);
5764-
5765-
return genericReqListener.foundProblems();
5750+
auto result =
5751+
TC.checkGenericArguments(env->getOwningDeclContext(), argExpr->getLoc(),
5752+
AFD->getLoc(), AFD->getInterfaceType(),
5753+
env->getGenericSignature(), substitutions, nullptr,
5754+
ConformanceCheckFlags::SuppressDependencyTracking,
5755+
&genericReqListener);
5756+
5757+
return !result.second;
57665758
}
57675759

57685760
/// When initializing Unsafe[Mutable]Pointer<T> from Unsafe[Mutable]RawPointer,

lib/Sema/TypeCheckConstraints.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1388,9 +1388,6 @@ bool GenericRequirementsCheckListener::shouldCheck(RequirementKind kind,
13881388
return true;
13891389
}
13901390

1391-
void GenericRequirementsCheckListener::diagnosed(
1392-
const Requirement *requirement) {}
1393-
13941391
bool TypeChecker::
13951392
solveForExpression(Expr *&expr, DeclContext *dc, Type convertType,
13961393
FreeTypeVariableBinding allowFreeTypeVariables,

lib/Sema/TypeCheckGeneric.cpp

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -900,12 +900,8 @@ std::pair<bool, bool> TypeChecker::checkGenericArguments(
900900
return std::make_pair(true, false);
901901

902902
// Conformance check failure case.
903-
if (!result.second) {
904-
if (listener && loc.isValid())
905-
listener->diagnosed(&req);
906-
903+
if (!result.second)
907904
return std::make_pair(false, false);
908-
}
909905

910906
continue;
911907
}
@@ -929,9 +925,6 @@ std::pair<bool, bool> TypeChecker::checkGenericArguments(
929925
genericSig->gatherGenericParamBindingsText(
930926
{req.getFirstType(), req.getSecondType()}, substitutions));
931927

932-
if (listener)
933-
listener->diagnosed(&req);
934-
935928
return std::make_pair(false, false);
936929
}
937930
continue;
@@ -946,9 +939,6 @@ std::pair<bool, bool> TypeChecker::checkGenericArguments(
946939
genericSig->gatherGenericParamBindingsText(
947940
{req.getFirstType(), req.getSecondType()}, substitutions));
948941

949-
if (listener)
950-
listener->diagnosed(&req);
951-
952942
return std::make_pair(false, false);
953943
}
954944
continue;

lib/Sema/TypeChecker.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -352,12 +352,6 @@ class GenericRequirementsCheckListener {
352352
///
353353
/// \returns true if it's ok to validate requirement, false otherwise.
354354
virtual bool shouldCheck(RequirementKind kind, Type first, Type second);
355-
356-
/// Callback invoked when given requirement has been diagnosed as invalid.
357-
///
358-
/// \param requirement The requirement which didn't pass the check.
359-
///
360-
virtual void diagnosed(const Requirement *requirement);
361355
};
362356

363357
/// Flags that describe the context of type checking a pattern or

0 commit comments

Comments
 (0)