[clang] [Clang] Fix a crash when dumping a pack indexing type. (PR #80439)

Erich Keane via cfe-commits cfe-commits at lists.llvm.org
Fri Feb 2 10:15:25 PST 2024


================
@@ -0,0 +1,24 @@
+// RUN: not %clang_cc1 -std=c++2c -ast-dump %s | FileCheck  %s
+
+namespace InvalidPacksShouldNotCrash {
+
+struct NotAPack;
+template <typename T, auto V, template<typename> typename Tp>
+void not_pack() {
+    int i = 0;
+    i...[0]; // expected-error {{i does not refer to the name of a parameter pack}}
+    V...[0]; // expected-error {{V does not refer to the name of a parameter pack}}
+    NotAPack...[0] a; // expected-error{{'NotAPack' does not refer to the name of a parameter pack}}
+    T...[0] b;   // expected-error{{'T' does not refer to the name of a parameter pack}}
+    Tp...[0] c; // expected-error{{'Tp' does not refer to the name of a parameter pack}}
+}
+
+// CHECK:      -FunctionDecl {{.*}} not_pack 'void ()'
+// CHECK:           |-DeclStmt {{.*}}
----------------
erichkeane wrote:

So the fragility is from checking the `-` and the `|-` and the `| \`` characters.  I'd suggest removing those entirely.

https://github.com/llvm/llvm-project/pull/80439


More information about the cfe-commits mailing list