1 // RUN: %clang_cc1 -ast-dump %s 2>&1 | FileCheck %s
3 // CHECK-LABEL: example0
6 // CHECK: VarDecl{{.*}}rd 'double &'
7 // CHECK-NEXT: DeclRefExpr
9 // CHECK: VarDecl{{.*}}rcd 'const double &'
10 // CHECK-NEXT: ImplicitCastExpr{{.*}}'const double' lvalue <NoOp>
11 const double &rcd
= d
;
17 // CHECK-LABEL: example1
19 // CHECK: VarDecl{{.*}}ra 'A &'
20 // CHECK: ImplicitCastExpr{{.*}}'A' lvalue <DerivedToBase (A)>
22 // CHECK: VarDecl{{.*}}rca 'const A &'
23 // CHECK: ImplicitCastExpr{{.*}}'const A' lvalue <DerivedToBase (A)>
24 // CHECK-NOT: MaterializeTemporaryExpr
25 // CHECK: ImplicitCastExpr{{.*}}'const B' lvalue <NoOp>
35 // CHECK-LABEL: 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{{.*}}B
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'
51 // CHECK-LABEL: example3
53 // CHECK: VarDecl{{.*}}rcd2 'const double &'
54 // CHECK: ImplicitCastExpr{{.*}} <IntegralToFloating>
55 const double& rcd2
= 2;