aaronpuchert added inline comments.
================ Comment at: clang/include/clang/Basic/DiagnosticSemaKinds.td:4280 "candidate %sub{select_ovl_candidate_kind}0,1,2 not viable: " - "expects an l-value for " + "expects an %select{l-value|r-value}5 for " "%select{%ordinal4 argument|object argument}3">; ---------------- rsmith wrote: > Please change this to `lvalue|rvalue` (preferably in a separate commit, and > likewise for the half-dozen or so other diagnostics that use this > unconventional spelling). In both C and C++ contexts, these words are spelled > without a hyphen. I was wondering about the inconsistent spelling as well. Yes, I'll do this in a follow-up. ================ Comment at: clang/lib/Sema/SemaOverload.cpp:10410-10411 + if (Conv.Bad.Kind == BadConversionSequence::lvalue_ref_to_rvalue || + Conv.Bad.Kind == BadConversionSequence::rvalue_ref_to_lvalue) { + S.Diag(Fn->getLocation(), diag::note_ovl_candidate_bad_value_category) ---------------- rsmith wrote: > It's surprising to me that nothing else in this function is considering > `Conv.Bad.Kind`. Do you know what's going on there? I see that > `PerformObjectArgumentInitialization` has a `switch` on it, but it looks like > that's the *only* place that uses it, and we mostly instead try to recompute > what went wrong after the fact, which seems fragile. I wonder if more of the > complexity of this function could be reduced by using the stored bad > conversion kind. (But let's keep this patch targeted on just fixing the value > category diagnostics!) The previous `if` could perhaps be on `Conv.Bad.Kind == BadConversionSequence::bad_qualifiers` instead, but maybe we're not setting that correctly in some cases. I will try it out. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D90123/new/ https://reviews.llvm.org/D90123 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits