p5-examples.cpp revision 0c42bb653dc40b1caae010618831e320af824b18
1// RUN: %clang_cc1 -ast-dump %s 2>&1 | FileCheck %s 2 3// CHECK: example0 4void example0() { 5 double d = 2.0; 6 // CHECK: double &rd = 7 // CHECK-NEXT: DeclRefExpr 8 double &rd = d; 9 // CHECK: const double &rcd = 10 // CHECK-NEXT: ImplicitCastExpr{{.*}}'const double' <NoOp> 11 const double &rcd = d; 12} 13 14struct A { }; 15struct B : A { } b; 16 17// CHECK: example1 18void example1() { 19 // CHECK: A &ra = 20 // CHECK: ImplicitCastExpr{{.*}}'struct A' <DerivedToBase (A)> lvalue 21 A &ra = b; 22 // CHECK: const A &rca = 23 // CHECK: ImplicitCastExpr{{.*}}'const struct A' <NoOp> 24 // CHECK: ImplicitCastExpr{{.*}}'struct A' <DerivedToBase (A)> 25 const A& rca = b; 26} 27 28extern B f(); 29 30struct X { 31 operator B(); 32} x; 33 34// CHECK: example2 35void example2() { 36 // CHECK: const A &rca = 37 // CHECK: ImplicitCastExpr{{.*}}'const struct A' <NoOp> 38 // CHECK: ImplicitCastExpr{{.*}}'struct A' <DerivedToBase (A)> 39 // CHECK: CallExpr{{.*}}B 40 const A &rca = f(); 41 // CHECK: const A &r = 42 // CHECK: ImplicitCastExpr{{.*}}'const struct A' <NoOp> 43 // CHECK: ImplicitCastExpr{{.*}}'struct A' <DerivedToBase (A)> 44 // CHECK: CXXMemberCallExpr{{.*}}'struct B' 45 const A& r = x; 46} 47 48// CHECK: example3 49void example3() { 50 // CHECK: const double &rcd2 = 51 // CHECK: ImplicitCastExpr{{.*}}<IntegralToFloating> 52 const double& rcd2 = 2; 53} 54