yvvan added inline comments.
================ Comment at: cfe/trunk/lib/Sema/SemaOverload.cpp:6365 cast<CXXMethodDecl>(FD)->getParent(), ObjectType, - ObjectClassification, Args.slice(1), CandidateSet, + ObjectClassification, FunctionArgs, CandidateSet, SuppressUserConversions, PartialOverloading); ---------------- cameron314 wrote: > yvvan wrote: > > cameron314 wrote: > > > This breaks normal (non-static) method overload resolution, since the > > > `this` argument is now passed to `AddMethodCandidate` which is not > > > expecting it. It always thinks too many arguments are passed to methods > > > with no parameters; most other calls to `AddMethodCandidate` in > > > SemaOverload.cpp don't pass the implicit `this`. > > This code is correct. It is sliced at line 6361 - only in the case when the > > args size is greater than 0. > Hmm, you're right, I didn't see that. That line was missing after a rebase on > our side, my fault for not properly cross-referencing the diffs. Sorry for > the false alarm. > > But shouldn't the slice only be done now when `Args.size() > 0 && (!Args[0] > || (FirstArgumentIsBase && isa<CXXMethodDecl>(FD) && > !isa<CXXConstructorDecl>(FD)))`? there's already a check for this case that it's a CXXMethodDecl, it's not static. That means that we always need to slice (except those rare cases when we don't have any args, and in fact I don't know why these cases exist) Repository: rL LLVM https://reviews.llvm.org/D36390 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits