annotate clang/test/AST/ast-print-out-of-line-func.cpp @ 207:2e18cbf3894f

LLVM12
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 08 Jun 2021 06:07:14 +0900
parents 1d019706d866
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 // RUN: %clang_cc1 -ast-print -std=c++14 %s | FileCheck %s
anatofuz
parents:
diff changeset
2
anatofuz
parents:
diff changeset
3 namespace ns {
anatofuz
parents:
diff changeset
4
anatofuz
parents:
diff changeset
5 struct Wrapper {
anatofuz
parents:
diff changeset
6 class Inner {
anatofuz
parents:
diff changeset
7 Inner();
anatofuz
parents:
diff changeset
8 Inner(int);
anatofuz
parents:
diff changeset
9 ~Inner();
anatofuz
parents:
diff changeset
10
anatofuz
parents:
diff changeset
11 void operator += (int);
anatofuz
parents:
diff changeset
12
anatofuz
parents:
diff changeset
13 template<typename T>
anatofuz
parents:
diff changeset
14 void member();
anatofuz
parents:
diff changeset
15
anatofuz
parents:
diff changeset
16 static void staticMember();
anatofuz
parents:
diff changeset
17
anatofuz
parents:
diff changeset
18 operator int();
anatofuz
parents:
diff changeset
19
anatofuz
parents:
diff changeset
20 operator ns::Wrapper();
anatofuz
parents:
diff changeset
21 // CHECK: operator ns::Wrapper()
anatofuz
parents:
diff changeset
22 };
anatofuz
parents:
diff changeset
23 };
anatofuz
parents:
diff changeset
24
anatofuz
parents:
diff changeset
25 Wrapper::Inner::Inner() { }
anatofuz
parents:
diff changeset
26 // CHECK: Wrapper::Inner::Inner()
anatofuz
parents:
diff changeset
27
anatofuz
parents:
diff changeset
28 void Wrapper::Inner::operator +=(int) { }
anatofuz
parents:
diff changeset
29 // CHECK: void Wrapper::Inner::operator+=(int)
anatofuz
parents:
diff changeset
30
anatofuz
parents:
diff changeset
31 }
anatofuz
parents:
diff changeset
32
anatofuz
parents:
diff changeset
33 ns::Wrapper::Inner::Inner(int) { }
anatofuz
parents:
diff changeset
34 // CHECK: ns::Wrapper::Inner::Inner(int)
anatofuz
parents:
diff changeset
35
anatofuz
parents:
diff changeset
36 ns::Wrapper::Inner::~Inner() { }
anatofuz
parents:
diff changeset
37 // CHECK: ns::Wrapper::Inner::~Inner()
anatofuz
parents:
diff changeset
38
anatofuz
parents:
diff changeset
39 template<typename T>
anatofuz
parents:
diff changeset
40 void ::ns::Wrapper::Inner::member() { }
anatofuz
parents:
diff changeset
41 // CHECK: template <typename T> void ::ns::Wrapper::Inner::member()
anatofuz
parents:
diff changeset
42
anatofuz
parents:
diff changeset
43 ns::Wrapper::Inner::operator int() { return 0; }
anatofuz
parents:
diff changeset
44 // CHECK: ns::Wrapper::Inner::operator int()
anatofuz
parents:
diff changeset
45
anatofuz
parents:
diff changeset
46 ns::Wrapper::Inner::operator ::ns::Wrapper() { return ns::Wrapper(); }
anatofuz
parents:
diff changeset
47 // CHECK: ns::Wrapper::Inner::operator ::ns::Wrapper()
anatofuz
parents:
diff changeset
48
anatofuz
parents:
diff changeset
49 namespace ns {
anatofuz
parents:
diff changeset
50
anatofuz
parents:
diff changeset
51 void Wrapper::Inner::staticMember() { }
anatofuz
parents:
diff changeset
52 // CHECK: void Wrapper::Inner::staticMember()
anatofuz
parents:
diff changeset
53
anatofuz
parents:
diff changeset
54 }
anatofuz
parents:
diff changeset
55
anatofuz
parents:
diff changeset
56 template<int x, typename T>
anatofuz
parents:
diff changeset
57 class TemplateRecord {
anatofuz
parents:
diff changeset
58 void function();
anatofuz
parents:
diff changeset
59 template<typename U> void functionTemplate(T, U);
anatofuz
parents:
diff changeset
60 };
anatofuz
parents:
diff changeset
61
anatofuz
parents:
diff changeset
62 template<int x, typename T>
anatofuz
parents:
diff changeset
63 void TemplateRecord<x, T>::function() { }
anatofuz
parents:
diff changeset
64 // CHECK: template <int x, typename T> void TemplateRecord<x, T>::function()
anatofuz
parents:
diff changeset
65
anatofuz
parents:
diff changeset
66 template<int x, typename T>
anatofuz
parents:
diff changeset
67 template<typename U>
anatofuz
parents:
diff changeset
68 void TemplateRecord<x, T>::functionTemplate(T, U) { }
anatofuz
parents:
diff changeset
69 // CHECK: template <int x, typename T> template <typename U> void TemplateRecord<x, T>::functionTemplate(T, U)
anatofuz
parents:
diff changeset
70
anatofuz
parents:
diff changeset
71 template<>
anatofuz
parents:
diff changeset
72 class TemplateRecord<0, int> {
anatofuz
parents:
diff changeset
73 void function();
anatofuz
parents:
diff changeset
74 template<typename U> void functionTemplate(int, U);
anatofuz
parents:
diff changeset
75 };
anatofuz
parents:
diff changeset
76
anatofuz
parents:
diff changeset
77 void TemplateRecord<0, int>::function() { }
anatofuz
parents:
diff changeset
78 // CHECK: void TemplateRecord<0, int>::function()
anatofuz
parents:
diff changeset
79
anatofuz
parents:
diff changeset
80 template<typename U>
anatofuz
parents:
diff changeset
81 void TemplateRecord<0, int>::functionTemplate(int, U) { }
anatofuz
parents:
diff changeset
82 // CHECK: template <typename U> void TemplateRecord<0, int>::functionTemplate(int, U)
anatofuz
parents:
diff changeset
83
anatofuz
parents:
diff changeset
84 template<typename T>
anatofuz
parents:
diff changeset
85 struct OuterTemplateRecord {
anatofuz
parents:
diff changeset
86 template<typename U>
anatofuz
parents:
diff changeset
87 struct Inner {
anatofuz
parents:
diff changeset
88 void function();
anatofuz
parents:
diff changeset
89 };
anatofuz
parents:
diff changeset
90 };
anatofuz
parents:
diff changeset
91
anatofuz
parents:
diff changeset
92 template<typename T>
anatofuz
parents:
diff changeset
93 template<typename U>
anatofuz
parents:
diff changeset
94 void OuterTemplateRecord<T>::Inner<U>::function() { }
anatofuz
parents:
diff changeset
95 // CHECK: template <typename T> template <typename U> void OuterTemplateRecord<T>::Inner<U>::function()