forked from OSchip/llvm-project
68 lines
1.8 KiB
C++
68 lines
1.8 KiB
C++
// RUN: %clang_cc1 -fcxx-exceptions -ast-dump -ast-dump-filter Test %s | FileCheck -strict-whitespace %s
|
|
|
|
namespace n {
|
|
void function() {}
|
|
int Variable;
|
|
}
|
|
using n::function;
|
|
using n::Variable;
|
|
void TestFunction() {
|
|
void (*f)() = &function;
|
|
// CHECK: DeclRefExpr{{.*}} (UsingShadow{{.*}}function
|
|
Variable = 4;
|
|
// CHECK: DeclRefExpr{{.*}} (UsingShadow{{.*}}Variable
|
|
}
|
|
|
|
// CHECK: FunctionDecl {{.*}} TestCatch1
|
|
void TestCatch1() {
|
|
// CHECK: CXXTryStmt
|
|
// CHECK-NEXT: CompoundStmt
|
|
try {
|
|
}
|
|
// CHECK-NEXT: CXXCatchStmt
|
|
// CHECK-NEXT: VarDecl {{.*}} x
|
|
// CHECK-NEXT: CompoundStmt
|
|
catch (int x) {
|
|
}
|
|
}
|
|
|
|
// CHECK: FunctionDecl {{.*}} TestCatch2
|
|
void TestCatch2() {
|
|
// CHECK: CXXTryStmt
|
|
// CHECK-NEXT: CompoundStmt
|
|
try {
|
|
}
|
|
// CHECK-NEXT: CXXCatchStmt
|
|
// CHECK-NEXT: NULL
|
|
// CHECK-NEXT: CompoundStmt
|
|
catch (...) {
|
|
}
|
|
}
|
|
|
|
void TestAllocationExprs() {
|
|
int *p;
|
|
p = new int;
|
|
delete p;
|
|
p = new int[2];
|
|
delete[] p;
|
|
p = ::new int;
|
|
::delete p;
|
|
}
|
|
// CHECK: FunctionDecl {{.*}} TestAllocationExprs
|
|
// CHECK: CXXNewExpr {{.*}} 'int *' Function {{.*}} 'operator new'
|
|
// CHECK: CXXDeleteExpr {{.*}} 'void' Function {{.*}} 'operator delete'
|
|
// CHECK: CXXNewExpr {{.*}} 'int *' array Function {{.*}} 'operator new[]'
|
|
// CHECK: CXXDeleteExpr {{.*}} 'void' array Function {{.*}} 'operator delete[]'
|
|
// CHECK: CXXNewExpr {{.*}} 'int *' global Function {{.*}} 'operator new'
|
|
// CHECK: CXXDeleteExpr {{.*}} 'void' global Function {{.*}} 'operator delete'
|
|
|
|
// Don't crash on dependent exprs that haven't been resolved yet.
|
|
template <typename T>
|
|
void TestDependentAllocationExpr() {
|
|
T *p = new T;
|
|
delete p;
|
|
}
|
|
// CHECK: FunctionTemplateDecl {{.*}} TestDependentAllocationExpr
|
|
// CHECK: CXXNewExpr {{.*'T \*'$}}
|
|
// CHECK: CXXDeleteExpr {{.*'void'$}}
|