1 // RUN: clang-pseudo -grammar=cxx -source=%s --print-forest | FileCheck %s 2 3 // not parsed as Type{foo} Type{bar} 4 foo bar; 5 // CHECK-NOT: simple-declaration := decl-specifier-seq ; 6 // CHECK: simple-declaration := decl-specifier-seq init-declarator-list ; 7 // CHECK: ├─decl-specifier-seq~simple-type-specifier 8 // CHECK: ├─init-declarator-list~IDENTIFIER 9 // CHECK: └─; 10 // CHECK-NOT: simple-declaration := decl-specifier-seq ; 11 12 // not parsed as Type{std} Type{::string} Declarator{s}; 13 std::string s; 14 // CHECK-NOT: nested-name-specifier := :: 15 // CHECK: simple-declaration := decl-specifier-seq init-declarator-list ; 16 // CHECK: ├─decl-specifier-seq~simple-type-specifier := <ambiguous> 17 // CHECK: │ ├─simple-type-specifier := nested-name-specifier type-name 18 // CHECK: │ │ ├─nested-name-specifier := <ambiguous> #1 19 // CHECK: │ │ │ ├─nested-name-specifier := type-name :: 20 // CHECK: │ │ │ └─nested-name-specifier := namespace-name :: 21 // CHECK: │ │ └─type-name 22 // CHECK: │ └─simple-type-specifier := nested-name-specifier template-name 23 // CHECK: │ ├─nested-name-specifier =#1 24 // CHECK: │ └─template-name~IDENTIFIER 25 // CHECK: ├─init-declarator-list~IDENTIFIER 26 // CHECK: └─; 27 // CHECK-NOT: nested-name-specifier := :: 28