xref: /llvm-project/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p4-ast.cpp (revision f9ead46931aef2978ddf350ba6523638175d7861)
1 // RUN: %clang_cc1 -std=c++17 -ast-dump %s | FileCheck %s
2 
3 void f() noexcept;
4 
5 // CHECK: VarDecl {{.*}} ref 'void (&)()' cinit
6 // CHECK-NEXT: ImplicitCastExpr {{.*}} 'void ()' lvalue <NoOp>
7 // CHECK-NEXT: DeclRefExpr {{.*}} 'void () noexcept' lvalue Function {{.*}} 'f' 'void () noexcept'
8 void (&ref)() = f;
9 
10 struct X {
11   typedef void (&ref)() noexcept;
12   operator ref();
13 } x;
14 
15 // CHECK: VarDecl {{.*}} xp 'void (&)()' cinit
16 // CHECK-NEXT: ImplicitCastExpr {{.*}} 'void ()' lvalue <NoOp>
17 // CHECK-NEXT: ImplicitCastExpr {{.*}} 'void () noexcept' lvalue <UserDefinedConversion>
18 void (&xp)() = x;
19