summaryrefslogtreecommitdiffstats
path: root/test/SemaCXX/ast-print.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/SemaCXX/ast-print.cpp')
-rw-r--r--test/SemaCXX/ast-print.cpp83
1 files changed, 83 insertions, 0 deletions
diff --git a/test/SemaCXX/ast-print.cpp b/test/SemaCXX/ast-print.cpp
new file mode 100644
index 0000000..aeb4039
--- /dev/null
+++ b/test/SemaCXX/ast-print.cpp
@@ -0,0 +1,83 @@
+// RUN: %clang_cc1 -ast-print %s | FileCheck %s
+
+// CHECK: r;
+// CHECK-NEXT: (r->method());
+struct MyClass
+{
+ void method() {}
+};
+
+struct Reference
+{
+ MyClass* object;
+ MyClass* operator ->() { return object; }
+};
+
+void test1() {
+ Reference r;
+ (r->method());
+}
+
+// CHECK: if (int a = 1)
+// CHECK: while (int a = 1)
+// CHECK: switch (int a = 1)
+
+void test2()
+{
+ if (int a = 1) { }
+ while (int a = 1) { }
+ switch (int a = 1) { }
+}
+
+// CHECK: new (1) int;
+void *operator new (typeof(sizeof(1)), int, int = 2);
+void test3() {
+ new (1) int;
+}
+
+// CHECK: new X;
+struct X {
+ void *operator new (typeof(sizeof(1)), int = 2);
+};
+void test4() { new X; }
+
+// CHECK: for (int i = 2097, j = 42; false;)
+void test5() {
+ for (int i = 2097, j = 42; false;) {}
+}
+
+// CHECK: test6fn((int &)y);
+void test6fn(int& x);
+void test6() {
+ unsigned int y = 0;
+ test6fn((int&)y);
+}
+
+// CHECK: S s( 1, 2 );
+
+template <class S> void test7()
+{
+ S s( 1,2 );
+}
+
+
+// CHECK: t.~T();
+
+template <typename T> void test8(T t) { t.~T(); }
+
+
+// CHECK: enum E {
+// CHECK-NEXT: A,
+// CHECK-NEXT: B,
+// CHECK-NEXT: C
+// CHECK-NEXT: };
+// CHECK-NEXT: {{^[ ]+}}E a = A;
+
+struct test9
+{
+ void f()
+ {
+ enum E { A, B, C };
+ E a = A;
+ }
+};
OpenPOWER on IntegriCloud