brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · ad3b014 Raw
57 lines · cpp
1// RUN: %clang_cc1 -ast-dump %s 2>&1 | FileCheck %s2 3// CHECK-LABEL: example04void example0() {5  double d = 2.0;6  // CHECK: VarDecl{{.*}}rd 'double &'7  // CHECK-NEXT: DeclRefExpr8  double &rd = d;9  // CHECK: VarDecl{{.*}}rcd 'const double &'10  // CHECK-NEXT: ImplicitCastExpr{{.*}}'const double' lvalue <NoOp>11  const double &rcd = d;12}13 14struct A { };15struct B : A { } b;16 17// CHECK-LABEL: example118void example1() {19  // CHECK: VarDecl{{.*}}ra 'A &'20  // CHECK: ImplicitCastExpr{{.*}}'A' lvalue <DerivedToBase (A)>21  A &ra = b;22  // CHECK: VarDecl{{.*}}rca 'const A &'23  // CHECK: ImplicitCastExpr{{.*}}'const A' lvalue <DerivedToBase (A)>24  // CHECK-NOT: MaterializeTemporaryExpr25  // CHECK: ImplicitCastExpr{{.*}}'const struct B' lvalue <NoOp>26  const A& rca = b;27}28 29extern B f();30 31struct X {32  operator B();33} x;34 35// CHECK-LABEL: example236void example2() {37  // CHECK: VarDecl{{.*}}rca 'const A &'38  // CHECK: ImplicitCastExpr{{.*}}'const A' lvalue <DerivedToBase (A)>39  // CHECK: MaterializeTemporaryExpr{{.*}}'const B'40  // CHECK: ImplicitCastExpr{{.*}}'const B' <NoOp>41  // CHECK: CallExpr{{.*}}B42  const A &rca = f();43  // CHECK: VarDecl{{.*}}r 'const A &'44  // CHECK: ImplicitCastExpr{{.*}}'const A' lvalue <DerivedToBase (A)>45  // CHECK: MaterializeTemporaryExpr{{.*}}'const B'46  // CHECK: ImplicitCastExpr{{.*}}'const B' <NoOp>47  // CHECK: CXXMemberCallExpr{{.*}}'B'48  const A& r = x;49}50 51// CHECK-LABEL: example352void example3() {53  // CHECK: VarDecl{{.*}}rcd2 'const double &'54  // CHECK: ImplicitCastExpr{{.*}} <IntegralToFloating>55  const double& rcd2 = 2;56}57