[clang] [clang][NFC] Refactor `Sema::TemplateDeductionResult` (PR #81398)

Erich Keane via cfe-commits cfe-commits at lists.llvm.org
Mon Feb 12 06:35:14 PST 2024


================
@@ -11445,11 +11452,16 @@ static void DiagnoseBadDeduction(Sema &S, NamedDecl *Found, Decl *Templated,
   (ParamD = Param.dyn_cast<TemplateTypeParmDecl*>()) ||
   (ParamD = Param.dyn_cast<NonTypeTemplateParmDecl*>()) ||
   (ParamD = Param.dyn_cast<TemplateTemplateParmDecl*>());
-  switch (DeductionFailure.Result) {
-  case Sema::TDK_Success:
-    llvm_unreachable("TDK_success while diagnosing bad deduction");
+  switch (DeductionFailure.getResult()) {
+  case TemplateDeductionResult::Success:
+    llvm_unreachable(
+        "TemplateDeductionResult::Success while diagnosing bad deduction");
+  case TemplateDeductionResult::Invalid:
+  case TemplateDeductionResult::NonDependentConversionFailure:
+  case TemplateDeductionResult::AlreadyDiagnosed:
+    return;
----------------
erichkeane wrote:

Ah, shoot... `Invalid` and `AlreadyDiagnosed` make sense to me to be here.  I have no idea on the `NonDependentConversionFailure`, that one MIGHT be worth diagnosing, but I have no idea what such a diagnostic could look like.

Could you replace the 'return;' for that one with an assert and run the lit tests to see if it is something that might be valuable doing something with?

https://github.com/llvm/llvm-project/pull/81398


More information about the cfe-commits mailing list