rZhBoYao added a comment. In D153156#4599324 <https://reviews.llvm.org/D153156#4599324>, @jyknight wrote:
> If proper spec-conformance means we can no longer support the ability to > allow such out-of-spec pre-c++11 code to work anymore, that's probably > OK...but, in that case, we also need to eliminate the warning option, and > mention the change in the release notes. Works in C++98 mode tho. TIL people exploit this to mix pre-C++11 code into modern C++. I agree that a reminder for those people in the release note is needed. > And, if that _was_ an intended change, then we have other diagnostics which > need to be fixed up now Agreed In D153156#4599292 <https://reviews.llvm.org/D153156#4599292>, @rupprecht wrote: > IIUC, the question is not whether the diagnostic is correct, but rather why > `-Wno-reserved-user-defined-literal` does not workaround the breakage. Is > that right? > > An example of this in the wild is older versions of swig: > https://github.com/swig/swig/blob/939dd5e1c8c17e5f8b38747bf18e9041ab5f377e/Source/Modules/php.cxx#L1724 We simply stop pretending a whitespace precedes an invalid ud-suffix as that affects the grammar production and therefore diagnosis in Sema. IMHO, people should stop using `-Wno-reserved-user-defined-literal` and exploiting the addition of a whitespace to mingle pre-c++11 and post-c++11 code. What if a programmer is really trying to call operator""b here (albeit ill-formed): const char* operator""b(const char*, decltype(sizeof 0)); const char* f() { #define b "a" return "ONE"b; // NOW: IFNDR but calls operator""b // // BEFORE: string concat by exploiting the impl of // ext_reserved_user_defined_literal (controlled by // -Wreserved-user-defined-literal diag group) } Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D153156/new/ https://reviews.llvm.org/D153156 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits