diff --git a/clang-tools-extra/pseudo/lib/cxx.bnf b/clang-tools-extra/pseudo/lib/cxx.bnf --- a/clang-tools-extra/pseudo/lib/cxx.bnf +++ b/clang-tools-extra/pseudo/lib/cxx.bnf @@ -429,7 +429,7 @@ 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 --- /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]