Author: Aaron Ballman Date: 2021-10-15T10:00:16-04:00 New Revision: f2ea85255075606563370c9249f61dfad6a3f98b
URL: https://github.com/llvm/llvm-project/commit/f2ea85255075606563370c9249f61dfad6a3f98b DIFF: https://github.com/llvm/llvm-project/commit/f2ea85255075606563370c9249f61dfad6a3f98b.diff LOG: Fix a crash on an invalid templated UDL declaration We were missing a null pointer check that a template parameter existed at all. Added: Modified: clang/lib/Sema/SemaDeclCXX.cpp clang/test/SemaCXX/literal-operators.cpp Removed: ################################################################################ diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 31eda99089295..2d1fd1b14040f 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -15908,7 +15908,7 @@ checkLiteralOperatorTemplateParameterList(Sema &SemaRef, // // As a DR resolution, we also allow placeholders for deduced class // template specializations. - if (SemaRef.getLangOpts().CPlusPlus20 && + if (SemaRef.getLangOpts().CPlusPlus20 && PmDecl && !PmDecl->isTemplateParameterPack() && (PmDecl->getType()->isRecordType() || PmDecl->getType()->getAs<DeducedTemplateSpecializationType>())) diff --git a/clang/test/SemaCXX/literal-operators.cpp b/clang/test/SemaCXX/literal-operators.cpp index 834d5ec7923e6..067e151606202 100644 --- a/clang/test/SemaCXX/literal-operators.cpp +++ b/clang/test/SemaCXX/literal-operators.cpp @@ -51,3 +51,9 @@ void test_if_2() { "foo"if; } // expected-error {{no matching literal operator f template<typename T> void dependent_member_template() { T().template operator""_foo<int>(); // expected-error {{'operator""_foo' following the 'template' keyword cannot refer to a dependent template}} } + +namespace PR51142 { +// This code previously crashed due to a null template parameter declaration. +template<typename T> // expected-error {{template parameter list for literal operator must be either 'char...' or 'typename T, T...'}} +constexpr auto operator ""_l(); +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits