| 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 |