| RUN: llvm-cxxfilt -n < %s | FileCheck --match-full-lines %s |
| |
| CHECK: a::main |
| _RNvC1a4main |
| |
| CHECK: hello::rust |
| _RNvCshGpAVYOtgW1_5hello4rust |
| |
| CHECK: a::b::c |
| _RNvNvC1a1b1c |
| |
| ; Instantiating crate |
| |
| CHECK: crate |
| _RC5crateC3foo |
| |
| ; Closure namespace |
| |
| CHECK: crate::{closure#0} |
| _RNCC5crate0 |
| |
| CHECK: crate::{closure#1} |
| _RNCC5crates_0 |
| |
| CHECK: crate::{closure:foo#0} |
| _RNCC5crate3foo |
| |
| CHECK: crate::{closure:foo#1} |
| _RNCC5crates_3foo |
| |
| ; Shim namespace |
| |
| CHECK: crate::{shim:reify#0} |
| _RNSC5crate5reify |
| |
| ; Unrecognized special namespace |
| |
| CHECK: crate::{Z:ident#10} |
| _RNZC5crates8_5ident |
| |
| ; Inherent impl |
| |
| CHECK: <_> |
| _RMC5cratep |
| |
| CHECK: <_> |
| _RMs_C5cratep |
| |
| ; Trait impl |
| |
| CHECK: <_ as Clone> |
| _RXC5cratepC5Clone |
| |
| CHECK: <_ as Clone> |
| _RXs_C5cratepC5Clone |
| |
| ; Trait definition |
| |
| CHECK: <_ as Ord> |
| _RYpC3Ord |
| |
| ; Generic type arguments |
| |
| CHECK: generic::<_> |
| _RIC7genericpE |
| |
| CHECK: generic::<_, _> |
| _RIC7genericppE |
| |
| CHECK: generic::<_, _, _> |
| _RIC7genericpppE |
| |
| ; Generic const arguments |
| |
| CHECK: generic_const::<_> |
| _RIC13generic_constKpE |
| |
| ; Generic lifetime arguments |
| |
| CHECK: generic_lifetime::<'_> |
| _RIC16generic_lifetimeL_E |
| |
| ; Invalid lifetime index. |
| |
| CHECK: _RIC16generic_lifetimeL0_E |
| _RIC16generic_lifetimeL0_E |
| |
| ; Basic types |
| |
| CHECK: basic::<i8> |
| _RIC5basicaE |
| |
| CHECK: basic::<bool> |
| _RIC5basicbE |
| |
| CHECK: basic::<char> |
| _RIC5basiccE |
| |
| CHECK: basic::<f64> |
| _RIC5basicdE |
| |
| CHECK: basic::<str> |
| _RIC5basiceE |
| |
| CHECK: basic::<f32> |
| _RIC5basicfE |
| |
| CHECK: basic::<u8> |
| _RIC5basichE |
| |
| CHECK: basic::<isize> |
| _RIC5basiciE |
| |
| CHECK: basic::<usize> |
| _RIC5basicjE |
| |
| CHECK: basic::<i32> |
| _RIC5basiclE |
| |
| CHECK: basic::<u32> |
| _RIC5basicmE |
| |
| CHECK: basic::<i128> |
| _RIC5basicnE |
| |
| CHECK: basic::<u128> |
| _RIC5basicoE |
| |
| CHECK: basic::<_> |
| _RIC5basicpE |
| |
| CHECK: basic::<i16> |
| _RIC5basicsE |
| |
| CHECK: basic::<u16> |
| _RIC5basictE |
| |
| CHECK: basic::<()> |
| _RIC5basicuE |
| |
| CHECK: basic::<...> |
| _RIC5basicvE |
| |
| CHECK: basic::<i64> |
| _RIC5basicxE |
| |
| CHECK: basic::<u64> |
| _RIC5basicyE |
| |
| CHECK: basic::<!> |
| _RIC5basiczE |
| |
| ; Named types. Test possible paths productions. |
| |
| CHECK: named::<name> |
| _RIC5namedC4nameE |
| |
| CHECK: named::<<_>> |
| _RIC5namedMC5cratepE |
| |
| CHECK: named::<<_ as Name>> |
| _RIC5namedXC5cratepC4NameE |
| |
| CHECK: named::<<_ as Name>> |
| _RIC5namedYpC4NameE |
| |
| CHECK: named::<name::Name> |
| _RIC5namedNvC4name4NameE |
| |
| CHECK: named::<Name<>> |
| _RIC5namedIC4NameEE |
| |
| ; Types |
| |
| CHECK: types::<[u8; 0]> |
| _RIC5typesAhj0_E |
| |
| CHECK: types::<[_]> |
| _RIC5typesSpE |
| |
| CHECK: types::<()> |
| _RIC5typesTEE |
| |
| CHECK: types::<(_,)> |
| _RIC5typesTpEE |
| |
| CHECK: types::<(_, _)> |
| _RIC5typesTppEE |
| |
| CHECK: types::<(_, _, _)> |
| _RIC5typesTpppEE |
| |
| CHECK: types::<&_> |
| _RIC5typesRpE |
| |
| CHECK: types::<&_> |
| _RIC5typesRL_pE |
| |
| CHECK: types::<&mut _> |
| _RIC5typesQpE |
| |
| CHECK: types::<&mut _> |
| _RIC5typesQL_pE |
| |
| CHECK: types::<*const _> |
| _RIC5typesPpE |
| |
| CHECK: types::<*mut _> |
| _RIC5typesOpE |
| |
| ; Function signatures |
| |
| CHECK: function::<fn()> |
| _RIC8functionFEuE |
| |
| CHECK: function::<fn() -> _> |
| _RIC8functionFEpE |
| |
| CHECK: function::<fn(_)> |
| _RIC8functionFpEuE |
| |
| CHECK: function::<fn(_, _)> |
| _RIC8functionFppEuE |
| |
| CHECK: function::<fn(_, _, _)> |
| _RIC8functionFpppEuE |
| |
| CHECK: function::<unsafe fn()> |
| _RIC8functionFUEuE |
| |
| CHECK: function::<extern "C" fn()> |
| _RIC8functionFKCEuE |
| |
| CHECK: function::<extern "cdecl" fn()> |
| _RIC8functionFK5cdeclEuE |
| |
| CHECK: function::<unsafe extern "C-cmse-nonsecure-call" fn()> |
| _RIC8functionFUK21C_cmse_nonsecure_callEuE |
| |
| ; Invalid ABI with punycode. |
| |
| CHECK: _RIC8functionFKu3n3hEuE |
| _RIC8functionFKu3n3hEuE |
| |
| ; Trait objects |
| |
| CHECK: trait::<dyn > |
| _RIC5traitDEL_E |
| |
| CHECK: trait::<dyn for<'a> > |
| _RIC5traitDG_EL_E |
| |
| CHECK: trait::<for<'a> fn(dyn for<'b> + 'a)> |
| _RIC5traitFG_DG_EL0_EuE |
| |
| CHECK: trait::<dyn Display> |
| _RIC5traitDC7DisplayEL_E |
| |
| CHECK: trait::<dyn Display + Send + Sync> |
| _RIC5traitDC7DisplayC4SendC4SyncEL_E |
| |
| CHECK: trait::<dyn for<'a> Display> |
| _RIC5traitDG_C7DisplayEL_E |
| |
| CHECK: trait::<dyn IntoIterator<_, Item = _>> |
| _RIC5traitDIC12IntoIteratorpEp4ItempEL_E |
| |
| CHECK: trait::<dyn IntoIterator<Item = _>> |
| _RIC5traitDC12IntoIteratorp4ItempEL_E |
| |
| CHECK: trait::<dyn IntoIterator<Item = _, IntoIter = _>> |
| _RIC5traitDC12IntoIteratorp4Itempp8IntoIterpEL_E |
| |
| ; Invalid trait object, missing lifetime. |
| |
| CHECK: _RIC5traitDEE |
| _RIC5traitDEE |
| |
| ; Binders |
| |
| CHECK: binders::<for<'a> fn(&'a _)> |
| _RIC7bindersFG_RL0_pEuE |
| |
| CHECK: binders::<for<'a> fn(&'a mut _)> |
| _RIC7bindersFG_QL0_pEuE |
| |
| CHECK: binders::<for<'a, 'b> fn(&'a _, &'b _)> |
| _RIC7bindersFG0_RL1_pRL0_pEuE |
| |
| CHECK: binders::<for<'a, 'b> fn() -> for<'c, 'd> fn(&'a _, &'d _)> |
| _RIC7bindersFG0_EFG0_RL3_pRL0_pEuE |
| |
| 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 ())> |
| _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 |
| |
| ; Invalid binder. Too many bound lifetimes. |
| |
| CHECK: _RIC7bindersFGFF_EuE |
| _RIC7bindersFGFF_EuE |
| |
| ; Integer constants. Test value demangling. |
| |
| CHECK: integer::<0> |
| _RIC7integerKi0_E |
| |
| CHECK: integer::<1> |
| _RIC7integerKi1_E |
| |
| CHECK: integer::<-1> |
| _RIC7integerKin1_E |
| |
| CHECK: integer::<-15> |
| _RIC7integerKinf_E |
| |
| CHECK: integer::<-16> |
| _RIC7integerKin10_E |
| |
| CHECK: integer::<18446744073709551615> |
| _RIC7integerKoffffffffffffffff_E |
| |
| CHECK: integer::<0x10000000000000000> |
| _RIC7integerKo10000000000000000_E |
| |
| CHECK: integer::<-0x123456789abcdef01> |
| _RIC7integerKnn123456789abcdef01_E |
| |
| ; Invalid integer constant without any digits: |
| |
| CHECK: _RIC7integerKi_E |
| _RIC7integerKi_E |
| |
| ; Invalid integer constants with insignificant leading zeros: |
| |
| CHECK: _RIC7integerKi00_E |
| _RIC7integerKi00_E |
| |
| CHECK: _RIC7integerKi01_E |
| _RIC7integerKi01_E |
| |
| ; Integer constants. Test all integer types. |
| |
| CHECK: i8::<0> |
| _RIC2i8Ka0_E |
| |
| CHECK: u8::<0> |
| _RIC2u8Kh0_E |
| |
| CHECK: isize::<0> |
| _RIC5isizeKi0_E |
| |
| CHECK: usize::<0> |
| _RIC5usizeKj0_E |
| |
| CHECK: i32::<0> |
| _RIC3i32Kl0_E |
| |
| CHECK: u32::<0> |
| _RIC3u32Km0_E |
| |
| CHECK: i128::<0> |
| _RIC4i128Kn0_E |
| |
| CHECK: u128::<0> |
| _RIC4u128Ko0_E |
| |
| CHECK: i16::<0> |
| _RIC3i16Ks0_E |
| |
| CHECK: u16::<0> |
| _RIC3u16Kt0_E |
| |
| CHECK: i64::<0> |
| _RIC3i64Kx0_E |
| |
| CHECK: u64::<0> |
| _RIC3u64Ky0_E |
| |
| ; Bool constants |
| |
| CHECK: bool::<false> |
| _RIC4boolKb0_E |
| |
| CHECK: bool::<true> |
| _RIC4boolKb1_E |
| |
| ; Invalid bool constants |
| |
| CHECK: _RIC4boolKb2_E |
| _RIC4boolKb2_E |
| |
| CHECK: _RIC4boolKbn0_E |
| _RIC4boolKbn0_E |
| |
| ; Char constants |
| |
| CHECK: char::<'a'> |
| _RIC4charKc61_E |
| |
| CHECK: char::<'"'> |
| _RIC4charKc22_E |
| |
| CHECK: char::<'\t'> |
| _RIC4charKc9_E |
| |
| CHECK: char::<'\r'> |
| _RIC4charKcd_E |
| |
| CHECK: char::<'\n'> |
| _RIC4charKca_E |
| |
| CHECK: char::<'\\'> |
| _RIC4charKc5c_E |
| |
| CHECK: char::<'\''> |
| _RIC4charKc27_E |
| |
| CHECK: char::<'\u{1f40d}'> |
| _RIC4charKc1f40d_E |
| |
| CHECK: char::<'\u{10ffff}'> |
| _RIC4charKc10ffff_E |
| |
| ; Invalid char constants |
| |
| CHECK: _RIC4charKc1234567_E |
| _RIC4charKc1234567_E |
| |
| ; Backreferences |
| |
| CHECK: backref::<backref::ident> |
| _RIC7backrefNvB0_5identE |
| |
| CHECK: backref::<(), ()> |
| _RIC7backrefuB9_E |
| |
| CHECK: backref::<7, 7> |
| _RIC7backrefKi7_KBa_E |
| |
| ; Invalid backreferences |
| |
| CHECK: _RB_ |
| _RB_ |
| |
| CHECK: _RB5_ |
| _RB5_ |
| |
| CHECK: _RNvB_1a |
| _RNvB_1a |
| |
| CHECK: _RIC7backrefSB9_E |
| _RIC7backrefSB9_E |
| |
| CHECK: _RIC7backrefKBa_E |
| _RIC7backrefKBa_E |
| |
| ; Dot suffix |
| |
| CHECK: dot (.llvm.1234) |
| _RC3dot.llvm.1234 |
| |
| CHECK: dot (.llvm.6789) |
| _RC3dotC5crate.llvm.6789 |
| |
| ; Punycode |
| |
| CHECK: punycode::東京 |
| _RNvC8punycodeu7_1lqs71d |
| |
| CHECK: punycode::zażółć_gęślą_jaźń |
| _RNvC8punycodeu29za_gl_ja_w3a7psa2tqtgb10airva |
| |
| CHECK: punycode::საჭმელად_გემრიელი_სადილი |
| _RNvC8punycodeu30____7hkackfecea1cbdathfdh9hlq6y |
| |
| CHECK: Gödel::Escher::Bach |
| _RNtNvCu8Gdel_5qa6Escher4Bach |
| |
| CHECK: punycode::🦁🐅 |
| _RNvC8punycodeu7wn8hx1g |
| |
| ; Punycode - invalid code point |
| |
| CHECK: _RCu5r731r |
| _RCu5r731r |
| |
| CHECK: _RCu8b44444yy |
| _RCu8b44444yy |
| |
| CHECK: _RNvC1au25zzzzzzzzzzzzzzzzzzzzzzzzz |
| _RNvC1au25zzzzzzzzzzzzzzzzzzzzzzzzz |
| |
| ; Punycode - early EOF |
| |
| CHECK: _RCu8_CCCAR_u4 |
| _RCu8_CCCAR_u4 |
| |
| ; Punycode - overflow |
| |
| CHECK: _RNvC1au21p18888888888888888888 |
| _RNvC1au21p18888888888888888888 |
| |
| ; Invalid mangled characters |
| |
| CHECK: _RNvC2a.1c |
| _RNvC2a.1c |
| |
| CHECK: _RNvC2a$1c |
| _RNvC2a$1c |
| |
| ; Invalid namespace (not in [a-zA-Z]). |
| |
| CHECK: _RN_C5crate4main |
| _RN_C5crate4main |
| |
| ; Invalid identifier length (UINT64_MAX + 3, which happens to be ok after a wraparound). |
| |
| CHECK: _RNvC2ab18446744073709551618xy |
| _RNvC2ab18446744073709551618xy |
| |
| ; Mangling scheme includes an optional encoding version. When present it would |
| ; indicate an encoding we don't support yet. Check that it is rejected: |
| |
| CHECK: _R0NvC1a4main |
| _R0NvC1a4main |
| |
| ; Early EOF |
| |
| CHECK: _RNv |
| _RNv |
| |
| CHECK: _RNvC |
| _RNvC |
| |
| CHECK: _RNvC1a5main |
| _RNvC1a5main |
| |
| CHECK: _RNvC1a20abc |
| _RNvC1a20abc |