forked from OSchip/llvm-project
66 lines
1.9 KiB
C++
66 lines
1.9 KiB
C++
// RUN: %clang_cc1 -fsyntax-only -verify -std=c++17 %s
|
|
// RUN: not %clang_cc1 -fsyntax-only -ast-dump %s -std=c++17 | FileCheck %s
|
|
|
|
void test() {
|
|
while(!!!) // expected-error {{expected expression}}
|
|
int whileBody;
|
|
// CHECK: WhileStmt
|
|
// CHECK: RecoveryExpr {{.*}} <line:{{.*}}:9, col:11> 'bool'
|
|
// CHECK: whileBody 'int'
|
|
|
|
for(!!!) // expected-error {{expected expression}} expected-error {{expected ';'}}
|
|
int forBody;
|
|
// CHECK: ForStmt
|
|
// FIXME: the AST should have a RecoveryExpr to distinguish from for(;;)
|
|
// CHECK-NOT: RecoveryExpr
|
|
// CHECK: forBody 'int'
|
|
|
|
for(auto c : !!!) // expected-error {{expected expression}}
|
|
int forEachBody;
|
|
// FIXME: parse the foreach body
|
|
// CHECK-NOT: CXXForRangeStmt
|
|
// CHECK-NOT: forEachBody 'int'
|
|
|
|
do
|
|
int doBody;
|
|
while(!!!); // expected-error {{expected expression}}
|
|
// CHECK: DoStmt
|
|
// CHECK: doBody 'int'
|
|
// CHECK: RecoveryExpr {{.*}} <line:{{.*}}:9, col:11> 'bool'
|
|
|
|
if(!!!) // expected-error {{expected expression}}
|
|
int ifBody;
|
|
else
|
|
int elseBody;
|
|
// CHECK: IfStmt
|
|
// CHECK: RecoveryExpr {{.*}} <line:{{.*}}:6, col:8> 'bool'
|
|
// CHECK: ifBody 'int'
|
|
// CHECK: elseBody 'int'
|
|
|
|
switch(!!!) // expected-error {{expected expression}}
|
|
int switchBody;
|
|
// CHECK: SwitchStmt
|
|
// CHECK: RecoveryExpr {{.*}} <line:{{.*}}:10, col:12> 'int'
|
|
// CHECK: switchBody 'int'
|
|
|
|
switch (;) // expected-error {{expected expression}}
|
|
int switchBody;
|
|
// CHECK: SwitchStmt
|
|
// CHECK: NullStmt
|
|
// CHECK: RecoveryExpr {{.*}} <col:11> 'int'
|
|
// CHECK: switchBody 'int'
|
|
|
|
switch (;;) // expected-error {{expected expression}}
|
|
int switchBody;
|
|
// CHECK: SwitchStmt
|
|
// CHECK: NullStmt
|
|
// CHECK: RecoveryExpr {{.*}} <col:11, col:12> 'int'
|
|
// CHECK: switchBody 'int'
|
|
|
|
switch (!!!;) // expected-error {{expected expression}}
|
|
int switchBody;
|
|
// CHECK: SwitchStmt
|
|
// CHECK: RecoveryExpr {{.*}} <line:{{.*}}:11, col:14> 'int'
|
|
// CHECK: switchBody 'int'
|
|
}
|