diff options
Diffstat (limited to 'lib/Sema')
| -rw-r--r-- | lib/Sema/SemaOverload.cpp | 26 | ||||
| -rw-r--r-- | lib/Sema/SemaTemplateDeduction.cpp | 7 | 
2 files changed, 3 insertions, 30 deletions
| diff --git a/lib/Sema/SemaOverload.cpp b/lib/Sema/SemaOverload.cpp index b5c0e634fa504..1c026d7adb36d 100644 --- a/lib/Sema/SemaOverload.cpp +++ b/lib/Sema/SemaOverload.cpp @@ -644,10 +644,6 @@ clang::MakeDeductionFailureInfo(ASTContext &Context,        Result.HasDiagnostic = true;      }      break; - -  case Sema::TDK_FailedOverloadResolution: -    Result.Data = Info.Expression; -    break;    }    return Result; @@ -662,7 +658,6 @@ void DeductionFailureInfo::Destroy() {    case Sema::TDK_TooManyArguments:    case Sema::TDK_TooFewArguments:    case Sema::TDK_InvalidExplicitArguments: -  case Sema::TDK_FailedOverloadResolution:    case Sema::TDK_CUDATargetMismatch:      break; @@ -705,7 +700,6 @@ TemplateParameter DeductionFailureInfo::getTemplateParameter() {    case Sema::TDK_SubstitutionFailure:    case Sema::TDK_DeducedMismatch:    case Sema::TDK_NonDeducedMismatch: -  case Sema::TDK_FailedOverloadResolution:    case Sema::TDK_CUDATargetMismatch:      return TemplateParameter(); @@ -737,7 +731,6 @@ TemplateArgumentList *DeductionFailureInfo::getTemplateArgumentList() {    case Sema::TDK_Inconsistent:    case Sema::TDK_Underqualified:    case Sema::TDK_NonDeducedMismatch: -  case Sema::TDK_FailedOverloadResolution:    case Sema::TDK_CUDATargetMismatch:      return nullptr; @@ -765,7 +758,6 @@ const TemplateArgument *DeductionFailureInfo::getFirstArg() {    case Sema::TDK_TooFewArguments:    case Sema::TDK_InvalidExplicitArguments:    case Sema::TDK_SubstitutionFailure: -  case Sema::TDK_FailedOverloadResolution:    case Sema::TDK_CUDATargetMismatch:      return nullptr; @@ -793,7 +785,6 @@ const TemplateArgument *DeductionFailureInfo::getSecondArg() {    case Sema::TDK_TooFewArguments:    case Sema::TDK_InvalidExplicitArguments:    case Sema::TDK_SubstitutionFailure: -  case Sema::TDK_FailedOverloadResolution:    case Sema::TDK_CUDATargetMismatch:      return nullptr; @@ -811,14 +802,6 @@ const TemplateArgument *DeductionFailureInfo::getSecondArg() {    return nullptr;  } -Expr *DeductionFailureInfo::getExpr() { -  if (static_cast<Sema::TemplateDeductionResult>(Result) == -        Sema::TDK_FailedOverloadResolution) -    return static_cast<Expr*>(Data); - -  return nullptr; -} -  llvm::Optional<unsigned> DeductionFailureInfo::getCallArgIndex() {    if (static_cast<Sema::TemplateDeductionResult>(Result) ==          Sema::TDK_DeducedMismatch) @@ -9699,14 +9682,6 @@ static void DiagnoseBadDeduction(Sema &S, NamedDecl *Found, Decl *Templated,      return;    } -  case Sema::TDK_FailedOverloadResolution: { -    OverloadExpr::FindResult R = OverloadExpr::find(DeductionFailure.getExpr()); -    S.Diag(Templated->getLocation(), -           diag::note_ovl_candidate_failed_overload_resolution) -        << R.Expression->getName(); -    return; -  } -    case Sema::TDK_DeducedMismatch: {      // Format the template argument list into the argument string.      SmallString<128> TemplateArgString; @@ -10043,7 +10018,6 @@ static unsigned RankDeductionFailure(const DeductionFailureInfo &DFI) {      return 3;    case Sema::TDK_InstantiationDepth: -  case Sema::TDK_FailedOverloadResolution:      return 4;    case Sema::TDK_InvalidExplicitArguments: diff --git a/lib/Sema/SemaTemplateDeduction.cpp b/lib/Sema/SemaTemplateDeduction.cpp index 7f1fd91c46f05..c16b28bcf1390 100644 --- a/lib/Sema/SemaTemplateDeduction.cpp +++ b/lib/Sema/SemaTemplateDeduction.cpp @@ -3279,10 +3279,9 @@ DeduceTemplateArgumentByListElement(Sema &S,    // For all other cases, just match by type.    QualType ArgType = Arg->getType();    if (AdjustFunctionParmAndArgTypesForDeduction(S, TemplateParams, ParamType, -                                                ArgType, Arg, TDF)) { -    Info.Expression = Arg; -    return Sema::TDK_FailedOverloadResolution; -  } +                                                ArgType, Arg, TDF)) +    return Sema::TDK_Success; +    return DeduceTemplateArgumentsByTypeMatch(S, TemplateParams, ParamType,                                              ArgType, Info, Deduced, TDF);  } | 
