@@ -6864,8 +6864,7 @@ void Sema::AddOverloadCandidate(
6864
6864
OverloadCandidateSet &CandidateSet, bool SuppressUserConversions,
6865
6865
bool PartialOverloading, bool AllowExplicit, bool AllowExplicitConversions,
6866
6866
ADLCallKind IsADLCandidate, ConversionSequenceList EarlyConversions,
6867
- OverloadCandidateParamOrder PO, bool AggregateCandidateDeduction,
6868
- bool HasMatchedPackOnParmToNonPackOnArg) {
6867
+ OverloadCandidateParamOrder PO, bool AggregateCandidateDeduction) {
6869
6868
const FunctionProtoType *Proto
6870
6869
= dyn_cast<FunctionProtoType>(Function->getType()->getAs<FunctionType>());
6871
6870
assert(Proto && "Functions without a prototype cannot be overloaded");
@@ -6884,8 +6883,7 @@ void Sema::AddOverloadCandidate(
6884
6883
AddMethodCandidate(Method, FoundDecl, Method->getParent(), QualType(),
6885
6884
Expr::Classification::makeSimpleLValue(), Args,
6886
6885
CandidateSet, SuppressUserConversions,
6887
- PartialOverloading, EarlyConversions, PO,
6888
- HasMatchedPackOnParmToNonPackOnArg);
6886
+ PartialOverloading, EarlyConversions, PO);
6889
6887
return;
6890
6888
}
6891
6889
// We treat a constructor like a non-member function, since its object
@@ -6928,8 +6926,6 @@ void Sema::AddOverloadCandidate(
6928
6926
CandidateSet.getRewriteInfo().getRewriteKind(Function, PO);
6929
6927
Candidate.IsADLCandidate = IsADLCandidate;
6930
6928
Candidate.ExplicitCallArguments = Args.size();
6931
- Candidate.HasMatchedPackOnParmToNonPackOnArg =
6932
- HasMatchedPackOnParmToNonPackOnArg;
6933
6929
6934
6930
// Explicit functions are not actually candidates at all if we're not
6935
6931
// allowing them in this context, but keep them around so we can point
@@ -7457,13 +7453,16 @@ void Sema::AddMethodCandidate(DeclAccessPair FoundDecl, QualType ObjectType,
7457
7453
}
7458
7454
}
7459
7455
7460
- void Sema::AddMethodCandidate(
7461
- CXXMethodDecl *Method, DeclAccessPair FoundDecl,
7462
- CXXRecordDecl *ActingContext, QualType ObjectType,
7463
- Expr::Classification ObjectClassification, ArrayRef<Expr *> Args,
7464
- OverloadCandidateSet &CandidateSet, bool SuppressUserConversions,
7465
- bool PartialOverloading, ConversionSequenceList EarlyConversions,
7466
- OverloadCandidateParamOrder PO, bool HasMatchedPackOnParmToNonPackOnArg) {
7456
+ void
7457
+ Sema::AddMethodCandidate(CXXMethodDecl *Method, DeclAccessPair FoundDecl,
7458
+ CXXRecordDecl *ActingContext, QualType ObjectType,
7459
+ Expr::Classification ObjectClassification,
7460
+ ArrayRef<Expr *> Args,
7461
+ OverloadCandidateSet &CandidateSet,
7462
+ bool SuppressUserConversions,
7463
+ bool PartialOverloading,
7464
+ ConversionSequenceList EarlyConversions,
7465
+ OverloadCandidateParamOrder PO) {
7467
7466
const FunctionProtoType *Proto
7468
7467
= dyn_cast<FunctionProtoType>(Method->getType()->getAs<FunctionType>());
7469
7468
assert(Proto && "Methods without a prototype cannot be overloaded");
@@ -7494,8 +7493,6 @@ void Sema::AddMethodCandidate(
7494
7493
Candidate.TookAddressOfOverload =
7495
7494
CandidateSet.getKind() == OverloadCandidateSet::CSK_AddressOfOverloadSet;
7496
7495
Candidate.ExplicitCallArguments = Args.size();
7497
- Candidate.HasMatchedPackOnParmToNonPackOnArg =
7498
- HasMatchedPackOnParmToNonPackOnArg;
7499
7496
7500
7497
bool IgnoreExplicitObject =
7501
7498
(Method->isExplicitObjectMemberFunction() &&
@@ -7666,8 +7663,8 @@ void Sema::AddMethodTemplateCandidate(
7666
7663
ConversionSequenceList Conversions;
7667
7664
if (TemplateDeductionResult Result = DeduceTemplateArguments(
7668
7665
MethodTmpl, ExplicitTemplateArgs, Args, Specialization, Info,
7669
- PartialOverloading, /*AggregateDeductionCandidate=*/false,
7670
- /*PartialOrdering=*/false, ObjectType, ObjectClassification,
7666
+ PartialOverloading, /*AggregateDeductionCandidate=*/false, ObjectType,
7667
+ ObjectClassification,
7671
7668
[&](ArrayRef<QualType> ParamTypes) {
7672
7669
return CheckNonDependentConversions(
7673
7670
MethodTmpl, ParamTypes, Args, CandidateSet, Conversions,
@@ -7705,8 +7702,7 @@ void Sema::AddMethodTemplateCandidate(
7705
7702
AddMethodCandidate(cast<CXXMethodDecl>(Specialization), FoundDecl,
7706
7703
ActingContext, ObjectType, ObjectClassification, Args,
7707
7704
CandidateSet, SuppressUserConversions, PartialOverloading,
7708
- Conversions, PO,
7709
- Info.hasMatchedPackOnParmToNonPackOnArg());
7705
+ Conversions, PO);
7710
7706
}
7711
7707
7712
7708
/// Determine whether a given function template has a simple explicit specifier
@@ -7752,7 +7748,6 @@ void Sema::AddTemplateOverloadCandidate(
7752
7748
if (TemplateDeductionResult Result = DeduceTemplateArguments(
7753
7749
FunctionTemplate, ExplicitTemplateArgs, Args, Specialization, Info,
7754
7750
PartialOverloading, AggregateCandidateDeduction,
7755
- /*PartialOrdering=*/false,
7756
7751
/*ObjectType=*/QualType(),
7757
7752
/*ObjectClassification=*/Expr::Classification(),
7758
7753
[&](ArrayRef<QualType> ParamTypes) {
@@ -7793,8 +7788,7 @@ void Sema::AddTemplateOverloadCandidate(
7793
7788
Specialization, FoundDecl, Args, CandidateSet, SuppressUserConversions,
7794
7789
PartialOverloading, AllowExplicit,
7795
7790
/*AllowExplicitConversions=*/false, IsADLCandidate, Conversions, PO,
7796
- Info.AggregateDeductionCandidateHasMismatchedArity,
7797
- Info.hasMatchedPackOnParmToNonPackOnArg());
7791
+ Info.AggregateDeductionCandidateHasMismatchedArity);
7798
7792
}
7799
7793
7800
7794
bool Sema::CheckNonDependentConversions(
@@ -7916,8 +7910,7 @@ void Sema::AddConversionCandidate(
7916
7910
CXXConversionDecl *Conversion, DeclAccessPair FoundDecl,
7917
7911
CXXRecordDecl *ActingContext, Expr *From, QualType ToType,
7918
7912
OverloadCandidateSet &CandidateSet, bool AllowObjCConversionOnExplicit,
7919
- bool AllowExplicit, bool AllowResultConversion,
7920
- bool HasMatchedPackOnParmToNonPackOnArg) {
7913
+ bool AllowExplicit, bool AllowResultConversion) {
7921
7914
assert(!Conversion->getDescribedFunctionTemplate() &&
7922
7915
"Conversion function templates use AddTemplateConversionCandidate");
7923
7916
QualType ConvType = Conversion->getConversionType().getNonReferenceType();
@@ -7962,8 +7955,6 @@ void Sema::AddConversionCandidate(
7962
7955
Candidate.FinalConversion.setAllToTypes(ToType);
7963
7956
Candidate.Viable = true;
7964
7957
Candidate.ExplicitCallArguments = 1;
7965
- Candidate.HasMatchedPackOnParmToNonPackOnArg =
7966
- HasMatchedPackOnParmToNonPackOnArg;
7967
7958
7968
7959
// Explicit functions are not actually candidates at all if we're not
7969
7960
// allowing them in this context, but keep them around so we can point
@@ -8165,8 +8156,7 @@ void Sema::AddTemplateConversionCandidate(
8165
8156
assert(Specialization && "Missing function template specialization?");
8166
8157
AddConversionCandidate(Specialization, FoundDecl, ActingDC, From, ToType,
8167
8158
CandidateSet, AllowObjCConversionOnExplicit,
8168
- AllowExplicit, AllowResultConversion,
8169
- Info.hasMatchedPackOnParmToNonPackOnArg());
8159
+ AllowExplicit, AllowResultConversion);
8170
8160
}
8171
8161
8172
8162
void Sema::AddSurrogateCandidate(CXXConversionDecl *Conversion,
@@ -10519,10 +10509,6 @@ bool clang::isBetterOverloadCandidate(
10519
10509
isa<CXXConstructorDecl>(Cand2.Function))
10520
10510
return isa<CXXConstructorDecl>(Cand1.Function);
10521
10511
10522
- if (Cand1.HasMatchedPackOnParmToNonPackOnArg !=
10523
- Cand2.HasMatchedPackOnParmToNonPackOnArg)
10524
- return Cand2.HasMatchedPackOnParmToNonPackOnArg;
10525
-
10526
10512
// -- F1 is a non-template function and F2 is a function template
10527
10513
// specialization, or, if not that,
10528
10514
bool Cand1IsSpecialization = Cand1.Function &&
0 commit comments