xref: /llvm-project/llvm/test/Demangle/ms-templates.test (revision 463854846853c3e4e099d31c51edec18e00730c0)
1; These tests are based on clang/test/CodeGenCXX/mangle-ms-cxx11.cpp
2
3; RUN: llvm-undname < %s | FileCheck %s
4
5; CHECK-NOT: Invalid mangled name
6
7?f@@3V?$C@H@@A
8; CHECK: class C<int> f
9
10??0?$Class@VTypename@@@@QAE@XZ
11; CHECK: __thiscall Class<class Typename>::Class<class Typename>(void)
12??0?$Class@VTypename@@@@QEAA@XZ
13; CHECK: __cdecl Class<class Typename>::Class<class Typename>(void)
14
15??0?$Class@$$CBVTypename@@@@QAE@XZ
16; CHECK: __thiscall Class<class Typename const>::Class<class Typename const>(void)
17??0?$Class@$$CBVTypename@@@@QEAA@XZ
18; CHECK: __cdecl Class<class Typename const>::Class<class Typename const>(void)
19
20??0?$Class@$$CCVTypename@@@@QAE@XZ
21; CHECK: __thiscall Class<class Typename volatile>::Class<class Typename volatile>(void)
22??0?$Class@$$CCVTypename@@@@QEAA@XZ
23; CHECK: __cdecl Class<class Typename volatile>::Class<class Typename volatile>(void)
24
25??0?$Class@$$CDVTypename@@@@QAE@XZ
26; CHECK: __thiscall Class<class Typename const volatile>::Class<class Typename const volatile>(void)
27??0?$Class@$$CDVTypename@@@@QEAA@XZ
28; CHECK: __cdecl Class<class Typename const volatile>::Class<class Typename const volatile>(void)
29
30??0?$Class@V?$Nested@VTypename@@@@@@QAE@XZ
31; CHECK: __thiscall Class<class Nested<class Typename>>::Class<class Nested<class Typename>>(void)
32??0?$Class@V?$Nested@VTypename@@@@@@QEAA@XZ
33; CHECK: __cdecl Class<class Nested<class Typename>>::Class<class Nested<class Typename>>(void)
34
35??0?$Class@QAH@@QAE@XZ
36; CHECK: __thiscall Class<int *const>::Class<int *const>(void)
37??0?$Class@QEAH@@QEAA@XZ
38; CHECK: __cdecl Class<int *const>::Class<int *const>(void)
39
40??0?$Class@$$A6AHXZ@@QAE@XZ
41; CHECK: __thiscall Class<int __cdecl(void)>::Class<int __cdecl(void)>(void)
42??0?$Class@$$A6AHXZ@@QEAA@XZ
43; CHECK: __cdecl Class<int __cdecl(void)>::Class<int __cdecl(void)>(void)
44
45??0?$Class@$$BY0A@H@@QAE@XZ
46; CHECK: __thiscall Class<int[]>::Class<int[]>(void)
47??0?$Class@$$BY0A@H@@QEAA@XZ
48; CHECK: __cdecl Class<int[]>::Class<int[]>(void)
49
50??0?$Class@$$BY04H@@QAE@XZ
51; CHECK: __thiscall Class<int[5]>::Class<int[5]>(void)
52??0?$Class@$$BY04H@@QEAA@XZ
53; CHECK: __cdecl Class<int[5]>::Class<int[5]>(void)
54
55??0?$Class@$$BY04$$CBH@@QAE@XZ
56; CHECK: __thiscall Class<int const[5]>::Class<int const[5]>(void)
57??0?$Class@$$BY04$$CBH@@QEAA@XZ
58; CHECK: __cdecl Class<int const[5]>::Class<int const[5]>(void)
59
60??0?$Class@$$BY04QAH@@QAE@XZ
61; CHECK: __thiscall Class<int *const[5]>::Class<int *const[5]>(void)
62??0?$Class@$$BY04QEAH@@QEAA@XZ
63; CHECK: __cdecl Class<int *const[5]>::Class<int *const[5]>(void)
64
65??0?$BoolTemplate@$0A@@@QAE@XZ
66; CHECK: __thiscall BoolTemplate<0>::BoolTemplate<0>(void)
67??0?$BoolTemplate@$0A@@@QEAA@XZ
68; CHECK: __cdecl BoolTemplate<0>::BoolTemplate<0>(void)
69
70??0?$BoolTemplate@$00@@QAE@XZ
71; CHECK: __thiscall BoolTemplate<1>::BoolTemplate<1>(void)
72??0?$BoolTemplate@$00@@QEAA@XZ
73; CHECK: __cdecl BoolTemplate<1>::BoolTemplate<1>(void)
74
75??$Foo@H@?$BoolTemplate@$00@@QAEXH@Z
76; CHECK: void __thiscall BoolTemplate<1>::Foo<int>(int)
77??$Foo@H@?$BoolTemplate@$00@@QEAAXH@Z
78; CHECK: void __cdecl BoolTemplate<1>::Foo<int>(int)
79
80??0?$IntTemplate@$0A@@@QAE@XZ
81; CHECK: __thiscall IntTemplate<0>::IntTemplate<0>(void)
82??0?$IntTemplate@$0A@@@QEAA@XZ
83; CHECK: __cdecl IntTemplate<0>::IntTemplate<0>(void)
84
85??0?$IntTemplate@$04@@QAE@XZ
86; CHECK: __thiscall IntTemplate<5>::IntTemplate<5>(void)
87??0?$IntTemplate@$04@@QEAA@XZ
88; CHECK: __cdecl IntTemplate<5>::IntTemplate<5>(void)
89
90??0?$IntTemplate@$0L@@@QAE@XZ
91; CHECK: __thiscall IntTemplate<11>::IntTemplate<11>(void)
92??0?$IntTemplate@$0L@@@QEAA@XZ
93; CHECK: __cdecl IntTemplate<11>::IntTemplate<11>(void)
94
95??0?$IntTemplate@$0BAA@@@QAE@XZ
96; CHECK: __thiscall IntTemplate<256>::IntTemplate<256>(void)
97??0?$IntTemplate@$0BAA@@@QEAA@XZ
98; CHECK: __cdecl IntTemplate<256>::IntTemplate<256>(void)
99
100??0?$IntTemplate@$0CAB@@@QAE@XZ
101; CHECK: __thiscall IntTemplate<513>::IntTemplate<513>(void)
102??0?$IntTemplate@$0CAB@@@QEAA@XZ
103; CHECK: __cdecl IntTemplate<513>::IntTemplate<513>(void)
104
105??0?$IntTemplate@$0EAC@@@QAE@XZ
106; CHECK: __thiscall IntTemplate<1026>::IntTemplate<1026>(void)
107??0?$IntTemplate@$0EAC@@@QEAA@XZ
108; CHECK: __cdecl IntTemplate<1026>::IntTemplate<1026>(void)
109
110??0?$IntTemplate@$0PPPP@@@QAE@XZ
111; CHECK: __thiscall IntTemplate<65535>::IntTemplate<65535>(void)
112??0?$IntTemplate@$0PPPP@@@QEAA@XZ
113; CHECK: __cdecl IntTemplate<65535>::IntTemplate<65535>(void)
114
115??0?$IntTemplate@$0?0@@QAE@XZ
116; CHECK: __thiscall IntTemplate<-1>::IntTemplate<-1>(void)
117??0?$IntTemplate@$0?0@@QEAA@XZ
118; CHECK: __cdecl IntTemplate<-1>::IntTemplate<-1>(void)
119
120??0?$IntTemplate@$0?8@@QAE@XZ
121; CHECK: __thiscall IntTemplate<-9>::IntTemplate<-9>(void)
122??0?$IntTemplate@$0?8@@QEAA@XZ
123; CHECK: __cdecl IntTemplate<-9>::IntTemplate<-9>(void)
124
125??0?$IntTemplate@$0?9@@QAE@XZ
126; CHECK: __thiscall IntTemplate<-10>::IntTemplate<-10>(void)
127??0?$IntTemplate@$0?9@@QEAA@XZ
128; CHECK: __cdecl IntTemplate<-10>::IntTemplate<-10>(void)
129
130??0?$IntTemplate@$0?L@@@QAE@XZ
131; CHECK: __thiscall IntTemplate<-11>::IntTemplate<-11>(void)
132??0?$IntTemplate@$0?L@@@QEAA@XZ
133; CHECK: __cdecl IntTemplate<-11>::IntTemplate<-11>(void)
134
135??0?$UnsignedIntTemplate@$0PPPPPPPP@@@QAE@XZ
136; CHECK: __thiscall UnsignedIntTemplate<4294967295>::UnsignedIntTemplate<4294967295>(void)
137??0?$UnsignedIntTemplate@$0PPPPPPPP@@@QEAA@XZ
138; CHECK: __cdecl UnsignedIntTemplate<4294967295>::UnsignedIntTemplate<4294967295>(void)
139
140??0?$LongLongTemplate@$0?IAAAAAAAAAAAAAAA@@@QAE@XZ
141; CHECK: __thiscall LongLongTemplate<-9223372036854775808>::LongLongTemplate<-9223372036854775808>(void)
142??0?$LongLongTemplate@$0?IAAAAAAAAAAAAAAA@@@QEAA@XZ
143; CHECK: __cdecl LongLongTemplate<-9223372036854775808>::LongLongTemplate<-9223372036854775808>(void)
144
145??0?$LongLongTemplate@$0HPPPPPPPPPPPPPPP@@@QAE@XZ
146; CHECK: __thiscall LongLongTemplate<9223372036854775807>::LongLongTemplate<9223372036854775807>(void)
147??0?$LongLongTemplate@$0HPPPPPPPPPPPPPPP@@@QEAA@XZ
148; CHECK: __cdecl LongLongTemplate<9223372036854775807>::LongLongTemplate<9223372036854775807>(void)
149
150; -1 is indistinguishable from uint64_max in this encoding.
151??0?$UnsignedLongLongTemplate@$0?0@@QAE@XZ
152; CHECK: __thiscall UnsignedLongLongTemplate<-1>::UnsignedLongLongTemplate<-1>(void)
153??0?$UnsignedLongLongTemplate@$0?0@@QEAA@XZ
154; CHECK: __cdecl UnsignedLongLongTemplate<-1>::UnsignedLongLongTemplate<-1>(void)
155
156??$foo@H@space@@YAABHABH@Z
157; CHECK: int const & __cdecl space::foo<int>(int const &)
158??$foo@H@space@@YAAEBHAEBH@Z
159; CHECK: int const & __cdecl space::foo<int>(int const &)
160
161??$FunctionPointerTemplate@$1?spam@@YAXXZ@@YAXXZ
162; CHECK: void __cdecl FunctionPointerTemplate<&void __cdecl spam(void)>(void)
163
164??$variadic_fn_template@HHHH@@YAXABH000@Z
165; CHECK: void __cdecl variadic_fn_template<int, int, int,   int>(int const &, int const &, int const &, int const &)
166??$variadic_fn_template@HHD$$BY01D@@YAXABH0ABDAAY01$$CBD@Z
167; CHECK: void __cdecl variadic_fn_template<int, int, char, char[2]>(int const &, int const &, char const &, char const (&)[2]
168
169??0?$VariadicClass@HD_N@@QAE@XZ
170; CHECK: __thiscall VariadicClass<int, char, bool>::VariadicClass<int, char, bool>(void)
171
172??0?$VariadicClass@_NDH@@QAE@XZ
173; CHECK: __thiscall VariadicClass<bool, char, int>::VariadicClass<bool, char, int>(void)
174
175
176?template_template_fun@@YAXU?$Type@U?$Thing@USecond@@$00@@USecond@@@@@Z
177; CHECK: void __cdecl template_template_fun(struct Type<struct Thing<struct Second, 1>, struct Second>)
178
179??$template_template_specialization@$$A6AXU?$Type@U?$Thing@USecond@@$00@@USecond@@@@@Z@@YAXXZ
180; CHECK: void __cdecl template_template_specialization<void __cdecl(struct Type<struct Thing<struct Second, 1>, struct Second>)>(void)
181
182?f@@YAXU?$S1@$0A@@@@Z
183; CHECK: void __cdecl f(struct S1<0>)
184
185?recref@@YAXU?$type1@$E?inst@@3Urecord@@B@@@Z
186; CHECK: void __cdecl recref(struct type1<struct record const inst>)
187
188?fun@@YAXU?$UUIDType1@Uuuid@@$1?_GUID_12345678_1234_1234_1234_1234567890ab@@3U__s_GUID@@B@@@Z
189; CHECK: void __cdecl fun(struct UUIDType1<struct uuid, &struct __s_GUID const _GUID_12345678_1234_1234_1234_1234567890ab>)
190?fun@@YAXU?$UUIDType2@Uuuid@@$E?_GUID_12345678_1234_1234_1234_1234567890ab@@3U__s_GUID@@B@@@Z
191; CHECK: void __cdecl fun(struct UUIDType2<struct uuid, struct __s_GUID const _GUID_12345678_1234_1234_1234_1234567890ab>)
192
193?FunctionDefinedWithInjectedName@@YAXU?$TypeWithFriendDefinition@H@@@Z
194; CHECK: void __cdecl FunctionDefinedWithInjectedName(struct TypeWithFriendDefinition<int>)
195
196?bar@?$UUIDType4@$1?_GUID_12345678_1234_1234_1234_1234567890ab@@3U__s_GUID@@B@@QAEXXZ
197; CHECK: void __thiscall UUIDType4<&struct __s_GUID const _GUID_12345678_1234_1234_1234_1234567890ab>::bar(void)
198
199??$f@US@@$1?g@1@QEAAXXZ@@YAXXZ
200; CHECK: void __cdecl f<struct S, &public: void __cdecl S::g(void)>(void)
201
202??$?0N@?$Foo@H@@QEAA@N@Z
203; CHECK: __cdecl Foo<int>::Foo<int><double>(double)
204