From 58b33bc8c48ab1640e93bbad5d2c5b80504f67b5 Mon Sep 17 00:00:00 2001 From: Haojian Wu Date: Fri, 3 Jun 2022 21:13:26 +0200 Subject: [PATCH] [pseudo] Fix noptr-abstract-declarator rule. The const-expression in the [] can be empty. Differential Revision: https://reviews.llvm.org/D126992 --- clang-tools-extra/pseudo/lib/cxx.bnf | 2 +- clang-tools-extra/pseudo/test/cxx/unsized-array.cpp | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 clang-tools-extra/pseudo/test/cxx/unsized-array.cpp diff --git a/clang-tools-extra/pseudo/lib/cxx.bnf b/clang-tools-extra/pseudo/lib/cxx.bnf index 60cf0a99d419..16d639bc7770 100644 --- a/clang-tools-extra/pseudo/lib/cxx.bnf +++ b/clang-tools-extra/pseudo/lib/cxx.bnf @@ -429,7 +429,7 @@ abstract-declarator := abstract-pack-declarator ptr-abstract-declarator := noptr-abstract-declarator ptr-abstract-declarator := ptr-operator ptr-abstract-declarator_opt noptr-abstract-declarator := noptr-abstract-declarator_opt parameters-and-qualifiers -noptr-abstract-declarator := noptr-abstract-declarator_opt [ constant-expression ] +noptr-abstract-declarator := noptr-abstract-declarator_opt [ constant-expression_opt ] noptr-abstract-declarator := ( ptr-abstract-declarator ) abstract-pack-declarator := noptr-abstract-pack-declarator abstract-pack-declarator := ptr-operator abstract-pack-declarator diff --git a/clang-tools-extra/pseudo/test/cxx/unsized-array.cpp b/clang-tools-extra/pseudo/test/cxx/unsized-array.cpp new file mode 100644 index 000000000000..16d4da94039c --- /dev/null +++ b/clang-tools-extra/pseudo/test/cxx/unsized-array.cpp @@ -0,0 +1,7 @@ +// RUN: clang-pseudo -grammar=%cxx-bnf-file -source=%s --print-forest | FileCheck %s +void s(int[]); +// CHECK: parameter-declaration-list~parameter-declaration := decl-specifier-seq abstract-declarator +// CHECK-NEXT: ├─decl-specifier-seq~INT := tok[3] +// CHECK-NEXT: └─abstract-declarator~noptr-abstract-declarator := [ ] +// CHECK-NEXT: ├─[ := tok[4] +// CHECK-NEXT: └─] := tok[5]