llvm-project/clang-tools-extra/pseudo/test/cxx/recovery-init-list.cpp
Haojian Wu d489b3807f [pseudo] Implement a guard to determine function declarator.
This eliminates some simple-declaration/function-definition false
parses.

- implement a function to determine whether a declarator ForestNode is a
  function declarator;
- extend the standard declarator to two guarded function-declarator and
  non-function-declarator nonterminals;

Differential Revision: https://reviews.llvm.org/D129222
2022-07-19 09:44:45 +02:00

14 lines
679 B
C++

// RUN: clang-pseudo -grammar=cxx -source=%s --print-forest | FileCheck %s
auto x = { complete garbage };
// CHECK: translation-unit~simple-declaration
// CHECK-NEXT: ├─decl-specifier-seq~AUTO := tok[0]
// CHECK-NEXT: ├─init-declarator-list~init-declarator
// CHECK-NEXT: │ ├─non-function-declarator~IDENTIFIER := tok[1]
// CHECK-NEXT: │ └─initializer~brace-or-equal-initializer
// CHECK-NEXT: │ ├─= := tok[2]
// CHECK-NEXT: │ └─initializer-clause~braced-init-list
// CHECK-NEXT: │ ├─{ := tok[3]
// CHECK-NEXT: │ ├─initializer-list := <opaque>
// CHECK-NEXT: │ └─} := tok[6]
// CHECK-NEXT: └─; := tok[7]