[docs] Add LICENSE.txt to the root of the mono-repo
[llvm-project.git] / llvm / test / Demangle / rust.test
blobd926b686101264086a451f059616ba1f4fed1f11
1 RUN: llvm-cxxfilt -n  < %s | FileCheck --match-full-lines %s
3 CHECK: a::main
4        _RNvC1a4main
6 CHECK: hello::rust
7        _RNvCshGpAVYOtgW1_5hello4rust
9 CHECK: a::b::c
10        _RNvNvC1a1b1c
12 ; Instantiating crate
14 CHECK: crate
15        _RC5crateC3foo
17 ; Closure namespace
19 CHECK: crate::{closure#0}
20        _RNCC5crate0
22 CHECK: crate::{closure#1}
23        _RNCC5crates_0
25 CHECK: crate::{closure:foo#0}
26        _RNCC5crate3foo
28 CHECK: crate::{closure:foo#1}
29        _RNCC5crates_3foo
31 ; Shim namespace
33 CHECK: crate::{shim:reify#0}
34        _RNSC5crate5reify
36 ; Unrecognized special namespace
38 CHECK: crate::{Z:ident#10}
39        _RNZC5crates8_5ident
41 ; Inherent impl
43 CHECK: <_>
44        _RMC5cratep
46 CHECK: <_>
47        _RMs_C5cratep
49 ; Trait impl
51 CHECK: <_ as Clone>
52        _RXC5cratepC5Clone
54 CHECK: <_ as Clone>
55        _RXs_C5cratepC5Clone
57 ; Trait definition
59 CHECK: <_ as Ord>
60        _RYpC3Ord
62 ; Generic type arguments
64 CHECK: generic::<_>
65        _RIC7genericpE
67 CHECK: generic::<_, _>
68        _RIC7genericppE
70 CHECK: generic::<_, _, _>
71        _RIC7genericpppE
73 ; Generic const arguments
75 CHECK: generic_const::<_>
76        _RIC13generic_constKpE
78 ; Generic lifetime arguments
80 CHECK: generic_lifetime::<'_>
81        _RIC16generic_lifetimeL_E
83 ; Invalid lifetime index.
85 CHECK: _RIC16generic_lifetimeL0_E
86        _RIC16generic_lifetimeL0_E
88 ; Basic types
90 CHECK: basic::<i8>
91        _RIC5basicaE
93 CHECK: basic::<bool>
94        _RIC5basicbE
96 CHECK: basic::<char>
97        _RIC5basiccE
99 CHECK: basic::<f64>
100        _RIC5basicdE
102 CHECK: basic::<str>
103        _RIC5basiceE
105 CHECK: basic::<f32>
106        _RIC5basicfE
108 CHECK: basic::<u8>
109        _RIC5basichE
111 CHECK: basic::<isize>
112        _RIC5basiciE
114 CHECK: basic::<usize>
115        _RIC5basicjE
117 CHECK: basic::<i32>
118        _RIC5basiclE
120 CHECK: basic::<u32>
121        _RIC5basicmE
123 CHECK: basic::<i128>
124        _RIC5basicnE
126 CHECK: basic::<u128>
127        _RIC5basicoE
129 CHECK: basic::<_>
130        _RIC5basicpE
132 CHECK: basic::<i16>
133        _RIC5basicsE
135 CHECK: basic::<u16>
136        _RIC5basictE
138 CHECK: basic::<()>
139        _RIC5basicuE
141 CHECK: basic::<...>
142        _RIC5basicvE
144 CHECK: basic::<i64>
145        _RIC5basicxE
147 CHECK: basic::<u64>
148        _RIC5basicyE
150 CHECK: basic::<!>
151        _RIC5basiczE
153 ; Named types. Test possible paths productions.
155 CHECK: named::<name>
156        _RIC5namedC4nameE
158 CHECK: named::<<_>>
159        _RIC5namedMC5cratepE
161 CHECK: named::<<_ as Name>>
162        _RIC5namedXC5cratepC4NameE
164 CHECK: named::<<_ as Name>>
165        _RIC5namedYpC4NameE
167 CHECK: named::<name::Name>
168        _RIC5namedNvC4name4NameE
170 CHECK: named::<Name<>>
171        _RIC5namedIC4NameEE
173 ; Types
175 CHECK: types::<[u8; 0]>
176        _RIC5typesAhj0_E
178 CHECK: types::<[_]>
179        _RIC5typesSpE
181 CHECK: types::<()>
182        _RIC5typesTEE
184 CHECK: types::<(_,)>
185        _RIC5typesTpEE
187 CHECK: types::<(_, _)>
188        _RIC5typesTppEE
190 CHECK: types::<(_, _, _)>
191        _RIC5typesTpppEE
193 CHECK: types::<&_>
194        _RIC5typesRpE
196 CHECK: types::<&_>
197        _RIC5typesRL_pE
199 CHECK: types::<&mut _>
200        _RIC5typesQpE
202 CHECK: types::<&mut _>
203        _RIC5typesQL_pE
205 CHECK: types::<*const _>
206        _RIC5typesPpE
208 CHECK: types::<*mut _>
209        _RIC5typesOpE
211 ; Function signatures
213 CHECK: function::<fn()>
214        _RIC8functionFEuE
216 CHECK: function::<fn() -> _>
217        _RIC8functionFEpE
219 CHECK: function::<fn(_)>
220        _RIC8functionFpEuE
222 CHECK: function::<fn(_, _)>
223        _RIC8functionFppEuE
225 CHECK: function::<fn(_, _, _)>
226        _RIC8functionFpppEuE
228 CHECK: function::<unsafe fn()>
229        _RIC8functionFUEuE
231 CHECK: function::<extern "C" fn()>
232        _RIC8functionFKCEuE
234 CHECK: function::<extern "cdecl" fn()>
235        _RIC8functionFK5cdeclEuE
237 CHECK: function::<unsafe extern "C-cmse-nonsecure-call" fn()>
238        _RIC8functionFUK21C_cmse_nonsecure_callEuE
240 ; Invalid ABI with punycode.
242 CHECK: _RIC8functionFKu3n3hEuE
243        _RIC8functionFKu3n3hEuE
245 ; Trait objects
247 CHECK: trait::<dyn >
248        _RIC5traitDEL_E
250 CHECK: trait::<dyn for<'a> >
251        _RIC5traitDG_EL_E
253 CHECK: trait::<for<'a> fn(dyn for<'b> + 'a)>
254        _RIC5traitFG_DG_EL0_EuE
256 CHECK: trait::<dyn Display>
257        _RIC5traitDC7DisplayEL_E
259 CHECK: trait::<dyn Display + Send + Sync>
260        _RIC5traitDC7DisplayC4SendC4SyncEL_E
262 CHECK: trait::<dyn for<'a> Display>
263        _RIC5traitDG_C7DisplayEL_E
265 CHECK: trait::<dyn IntoIterator<_, Item = _>>
266        _RIC5traitDIC12IntoIteratorpEp4ItempEL_E
268 CHECK: trait::<dyn IntoIterator<Item = _>>
269        _RIC5traitDC12IntoIteratorp4ItempEL_E
271 CHECK: trait::<dyn IntoIterator<Item = _, IntoIter = _>>
272        _RIC5traitDC12IntoIteratorp4Itempp8IntoIterpEL_E
274 ; Invalid trait object, missing lifetime.
276 CHECK: _RIC5traitDEE
277        _RIC5traitDEE
279 ; Binders
281 CHECK: binders::<for<'a> fn(&'a _)>
282        _RIC7bindersFG_RL0_pEuE
284 CHECK: binders::<for<'a> fn(&'a mut _)>
285        _RIC7bindersFG_QL0_pEuE
287 CHECK: binders::<for<'a, 'b> fn(&'a _, &'b _)>
288        _RIC7bindersFG0_RL1_pRL0_pEuE
290 CHECK: binders::<for<'a, 'b> fn() -> for<'c, 'd> fn(&'a _, &'d _)>
291        _RIC7bindersFG0_EFG0_RL3_pRL0_pEuE
293 CHECK: binders::<for<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j, 'k, 'l, 'm, 'n, 'o, 'p, 'q, 'r, 's, 't, 'u, 'v, 'w, 'x, 'y, 'z, 'z1, 'z2, 'z3, 'z4> fn(&'a &'b &'c &'d &'e &'f &'g &'h &'i &'j &'k &'l &'m &'n &'o &'p &'q &'r &'s &'t &'u &'v &'w &'x &'y &'z &'z1 &'z2 &'z3 &'z4 ())>
294        _RIC7bindersFGs_RLt_RLs_RLr_RLq_RLp_RLo_RLn_RLm_RLl_RLk_RLj_RLi_RLh_RLg_RLf_RLe_RLd_RLc_RLb_RLa_RL9_RL8_RL7_RL6_RL5_RL4_RL3_RL2_RL1_RL0_uEuE
296 ; Invalid binder. Too many bound lifetimes.
298 CHECK: _RIC7bindersFGFF_EuE
299        _RIC7bindersFGFF_EuE
301 ; Integer constants. Test value demangling.
303 CHECK: integer::<0>
304        _RIC7integerKi0_E
306 CHECK: integer::<1>
307        _RIC7integerKi1_E
309 CHECK: integer::<-1>
310        _RIC7integerKin1_E
312 CHECK: integer::<-15>
313        _RIC7integerKinf_E
315 CHECK: integer::<-16>
316        _RIC7integerKin10_E
318 CHECK: integer::<18446744073709551615>
319        _RIC7integerKoffffffffffffffff_E
321 CHECK: integer::<0x10000000000000000>
322        _RIC7integerKo10000000000000000_E
324 CHECK: integer::<-0x123456789abcdef01>
325        _RIC7integerKnn123456789abcdef01_E
327 ; Invalid integer constant without any digits:
329 CHECK: _RIC7integerKi_E
330        _RIC7integerKi_E
332 ; Invalid integer constants with insignificant leading zeros:
334 CHECK: _RIC7integerKi00_E
335        _RIC7integerKi00_E
337 CHECK: _RIC7integerKi01_E
338        _RIC7integerKi01_E
340 ; Integer constants. Test all integer types.
342 CHECK: i8::<0>
343        _RIC2i8Ka0_E
345 CHECK: u8::<0>
346        _RIC2u8Kh0_E
348 CHECK: isize::<0>
349        _RIC5isizeKi0_E
351 CHECK: usize::<0>
352        _RIC5usizeKj0_E
354 CHECK: i32::<0>
355        _RIC3i32Kl0_E
357 CHECK: u32::<0>
358        _RIC3u32Km0_E
360 CHECK: i128::<0>
361        _RIC4i128Kn0_E
363 CHECK: u128::<0>
364        _RIC4u128Ko0_E
366 CHECK: i16::<0>
367        _RIC3i16Ks0_E
369 CHECK: u16::<0>
370        _RIC3u16Kt0_E
372 CHECK: i64::<0>
373        _RIC3i64Kx0_E
375 CHECK: u64::<0>
376        _RIC3u64Ky0_E
378 ; Bool constants
380 CHECK: bool::<false>
381        _RIC4boolKb0_E
383 CHECK: bool::<true>
384        _RIC4boolKb1_E
386 ; Invalid bool constants
388 CHECK: _RIC4boolKb2_E
389        _RIC4boolKb2_E
391 CHECK: _RIC4boolKbn0_E
392        _RIC4boolKbn0_E
394 ; Char constants
396 CHECK: char::<'a'>
397        _RIC4charKc61_E
399 CHECK: char::<'"'>
400        _RIC4charKc22_E
402 CHECK: char::<'\t'>
403        _RIC4charKc9_E
405 CHECK: char::<'\r'>
406        _RIC4charKcd_E
408 CHECK: char::<'\n'>
409        _RIC4charKca_E
411 CHECK: char::<'\\'>
412        _RIC4charKc5c_E
414 CHECK: char::<'\''>
415        _RIC4charKc27_E
417 CHECK: char::<'\u{1f40d}'>
418        _RIC4charKc1f40d_E
420 CHECK: char::<'\u{10ffff}'>
421        _RIC4charKc10ffff_E
423 ; Invalid char constants
425 CHECK: _RIC4charKc1234567_E
426        _RIC4charKc1234567_E
428 ; Backreferences
430 CHECK: backref::<backref::ident>
431        _RIC7backrefNvB0_5identE
433 CHECK: backref::<(), ()>
434        _RIC7backrefuB9_E
436 CHECK: backref::<7, 7>
437        _RIC7backrefKi7_KBa_E
439 ; Invalid backreferences
441 CHECK: _RB_
442        _RB_
444 CHECK: _RB5_
445        _RB5_
447 CHECK: _RNvB_1a
448        _RNvB_1a
450 CHECK: _RIC7backrefSB9_E
451        _RIC7backrefSB9_E
453 CHECK: _RIC7backrefKBa_E
454        _RIC7backrefKBa_E
456 ; Dot suffix
458 CHECK: dot (.llvm.1234)
459        _RC3dot.llvm.1234
461 CHECK: dot (.llvm.6789)
462        _RC3dotC5crate.llvm.6789
464 ; Punycode
466 CHECK: punycode::東京
467        _RNvC8punycodeu7_1lqs71d
469 CHECK: punycode::zażółć_gęślą_jaźń
470        _RNvC8punycodeu29za_gl_ja_w3a7psa2tqtgb10airva
472 CHECK: punycode::საჭმელად_გემრიელი_სადილი
473        _RNvC8punycodeu30____7hkackfecea1cbdathfdh9hlq6y
475 CHECK: Gödel::Escher::Bach
476        _RNtNvCu8Gdel_5qa6Escher4Bach
478 CHECK: punycode::🦁🐅
479        _RNvC8punycodeu7wn8hx1g
481 ; Punycode - invalid code point
483 CHECK: _RCu5r731r
484        _RCu5r731r
486 CHECK: _RCu8b44444yy
487        _RCu8b44444yy
489 CHECK: _RNvC1au25zzzzzzzzzzzzzzzzzzzzzzzzz
490        _RNvC1au25zzzzzzzzzzzzzzzzzzzzzzzzz
492 ; Punycode - early EOF
494 CHECK: _RCu8_CCCAR_u4
495        _RCu8_CCCAR_u4
497 ; Punycode - overflow
499 CHECK: _RNvC1au21p18888888888888888888
500        _RNvC1au21p18888888888888888888
502 ; Invalid mangled characters
504 CHECK: _RNvC2a.1c
505        _RNvC2a.1c
507 CHECK: _RNvC2a$1c
508        _RNvC2a$1c
510 ; Invalid namespace (not in [a-zA-Z]).
512 CHECK: _RN_C5crate4main
513        _RN_C5crate4main
515 ; Invalid identifier length (UINT64_MAX + 3, which happens to be ok after a wraparound).
517 CHECK: _RNvC2ab18446744073709551618xy
518        _RNvC2ab18446744073709551618xy
520 ; Mangling scheme includes an optional encoding version. When present it would
521 ; indicate an encoding we don't support yet. Check that it is rejected:
523 CHECK: _R0NvC1a4main
524        _R0NvC1a4main
526 ; Early EOF
528 CHECK: _RNv
529        _RNv
531 CHECK: _RNvC
532        _RNvC
534 CHECK: _RNvC1a5main
535        _RNvC1a5main
537 CHECK: _RNvC1a20abc
538        _RNvC1a20abc