1RUN: llvm-cxxfilt -n < %s | FileCheck --match-full-lines %s 2 3CHECK: a::main 4 _RNvC1a4main 5 6CHECK: hello::rust 7 _RNvCshGpAVYOtgW1_5hello4rust 8 9CHECK: a::b::c 10 _RNvNvC1a1b1c 11 12; Closure namespace 13 14CHECK: crate::{closure#0} 15 _RNCC5crate0 16 17CHECK: crate::{closure#1} 18 _RNCC5crates_0 19 20CHECK: crate::{closure:foo#0} 21 _RNCC5crate3foo 22 23CHECK: crate::{closure:foo#1} 24 _RNCC5crates_3foo 25 26; Shim namespace 27 28CHECK: crate::{shim:reify#0} 29 _RNSC5crate5reify 30 31; Unrecognized special namespace 32 33CHECK: crate::{Z:ident#10} 34 _RNZC5crates8_5ident 35 36; Inherent impl 37 38CHECK: <_> 39 _RMC5cratep 40 41CHECK: <_> 42 _RMs_C5cratep 43 44; Trait impl 45 46CHECK: <_ as Clone> 47 _RXC5cratepC5Clone 48 49CHECK: <_ as Clone> 50 _RXs_C5cratepC5Clone 51 52; Trait definition 53 54CHECK: <_ as Ord> 55 _RYpC3Ord 56 57; Generic type arguments 58 59CHECK: generic::<_> 60 _RIC7genericpE 61 62CHECK: generic::<_, _> 63 _RIC7genericppE 64 65CHECK: generic::<_, _, _> 66 _RIC7genericpppE 67 68; Generic const arguments 69 70CHECK: generic_const::<_> 71 _RIC13generic_constKpE 72 73; Generic lifetime arguments 74 75CHECK: generic_lifetime::<'_> 76 _RIC16generic_lifetimeL_E 77 78; Invalid lifetime index. 79 80CHECK: _RIC16generic_lifetimeL0_E 81 _RIC16generic_lifetimeL0_E 82 83; Basic types 84 85CHECK: basic::<i8> 86 _RIC5basicaE 87 88CHECK: basic::<bool> 89 _RIC5basicbE 90 91CHECK: basic::<char> 92 _RIC5basiccE 93 94CHECK: basic::<f64> 95 _RIC5basicdE 96 97CHECK: basic::<str> 98 _RIC5basiceE 99 100CHECK: basic::<f32> 101 _RIC5basicfE 102 103CHECK: basic::<u8> 104 _RIC5basichE 105 106CHECK: basic::<isize> 107 _RIC5basiciE 108 109CHECK: basic::<usize> 110 _RIC5basicjE 111 112CHECK: basic::<i32> 113 _RIC5basiclE 114 115CHECK: basic::<u32> 116 _RIC5basicmE 117 118CHECK: basic::<i128> 119 _RIC5basicnE 120 121CHECK: basic::<u128> 122 _RIC5basicoE 123 124CHECK: basic::<_> 125 _RIC5basicpE 126 127CHECK: basic::<i16> 128 _RIC5basicsE 129 130CHECK: basic::<u16> 131 _RIC5basictE 132 133CHECK: basic::<()> 134 _RIC5basicuE 135 136CHECK: basic::<...> 137 _RIC5basicvE 138 139CHECK: basic::<i64> 140 _RIC5basicxE 141 142CHECK: basic::<u64> 143 _RIC5basicyE 144 145CHECK: basic::<!> 146 _RIC5basiczE 147 148; Named types. Test possible paths productions. 149 150CHECK: named::<name> 151 _RIC5namedC4nameE 152 153CHECK: named::<<_>> 154 _RIC5namedMC5cratepE 155 156CHECK: named::<<_ as Name>> 157 _RIC5namedXC5cratepC4NameE 158 159CHECK: named::<<_ as Name>> 160 _RIC5namedYpC4NameE 161 162CHECK: named::<name::Name> 163 _RIC5namedNvC4name4NameE 164 165CHECK: named::<Name<>> 166 _RIC5namedIC4NameEE 167 168; Types 169 170CHECK: types::<[u8; 0]> 171 _RIC5typesAhj0_E 172 173CHECK: types::<[_]> 174 _RIC5typesSpE 175 176CHECK: types::<()> 177 _RIC5typesTEE 178 179CHECK: types::<(_,)> 180 _RIC5typesTpEE 181 182CHECK: types::<(_, _)> 183 _RIC5typesTppEE 184 185CHECK: types::<(_, _, _)> 186 _RIC5typesTpppEE 187 188CHECK: types::<&_> 189 _RIC5typesRpE 190 191CHECK: types::<&_> 192 _RIC5typesRL_pE 193 194CHECK: types::<&mut _> 195 _RIC5typesQpE 196 197CHECK: types::<&mut _> 198 _RIC5typesQL_pE 199 200CHECK: types::<*const _> 201 _RIC5typesPpE 202 203CHECK: types::<*mut _> 204 _RIC5typesOpE 205 206; Function signatures 207 208CHECK: function::<fn()> 209 _RIC8functionFEuE 210 211CHECK: function::<fn() -> _> 212 _RIC8functionFEpE 213 214CHECK: function::<fn(_)> 215 _RIC8functionFpEuE 216 217CHECK: function::<fn(_, _)> 218 _RIC8functionFppEuE 219 220CHECK: function::<fn(_, _, _)> 221 _RIC8functionFpppEuE 222 223CHECK: function::<unsafe fn()> 224 _RIC8functionFUEuE 225 226CHECK: function::<extern "C" fn()> 227 _RIC8functionFKCEuE 228 229CHECK: function::<extern "cdecl" fn()> 230 _RIC8functionFK5cdeclEuE 231 232CHECK: function::<unsafe extern "C-cmse-nonsecure-call" fn()> 233 _RIC8functionFUK21C_cmse_nonsecure_callEuE 234 235; Binders 236 237CHECK: binders::<for<'a> fn(&'a _)> 238 _RIC7bindersFG_RL0_pEuE 239 240CHECK: binders::<for<'a> fn(&'a mut _)> 241 _RIC7bindersFG_QL0_pEuE 242 243CHECK: binders::<for<'a, 'b> fn(&'a _, &'b _)> 244 _RIC7bindersFG0_RL1_pRL0_pEuE 245 246CHECK: binders::<for<'a, 'b> fn() -> for<'c, 'd> fn(&'a _, &'d _)> 247 _RIC7bindersFG0_EFG0_RL3_pRL0_pEuE 248 249CHECK: 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 ())> 250 _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 251 252; Invalid binder. Too many bound lifetimes. 253 254CHECK: _RIC7bindersFGFF_EuE 255 _RIC7bindersFGFF_EuE 256 257; Integer constants. Test value demangling. 258 259CHECK: integer::<0> 260 _RIC7integerKi0_E 261 262CHECK: integer::<1> 263 _RIC7integerKi1_E 264 265CHECK: integer::<-1> 266 _RIC7integerKin1_E 267 268CHECK: integer::<-15> 269 _RIC7integerKinf_E 270 271CHECK: integer::<-16> 272 _RIC7integerKin10_E 273 274CHECK: integer::<18446744073709551615> 275 _RIC7integerKoffffffffffffffff_E 276 277CHECK: integer::<0x10000000000000000> 278 _RIC7integerKo10000000000000000_E 279 280CHECK: integer::<-0x123456789abcdef01> 281 _RIC7integerKnn123456789abcdef01_E 282 283; Invalid integer constant without any digits: 284 285CHECK: _RIC7integerKi_E 286 _RIC7integerKi_E 287 288; Invalid integer constants with insignificant leading zeros: 289 290CHECK: _RIC7integerKi00_E 291 _RIC7integerKi00_E 292 293CHECK: _RIC7integerKi01_E 294 _RIC7integerKi01_E 295 296; Integer constants. Test all integer types. 297 298CHECK: i8::<0> 299 _RIC2i8Ka0_E 300 301CHECK: u8::<0> 302 _RIC2u8Kh0_E 303 304CHECK: isize::<0> 305 _RIC5isizeKi0_E 306 307CHECK: usize::<0> 308 _RIC5usizeKj0_E 309 310CHECK: i32::<0> 311 _RIC3i32Kl0_E 312 313CHECK: u32::<0> 314 _RIC3u32Km0_E 315 316CHECK: i128::<0> 317 _RIC4i128Kn0_E 318 319CHECK: u128::<0> 320 _RIC4u128Ko0_E 321 322CHECK: i16::<0> 323 _RIC3i16Ks0_E 324 325CHECK: u16::<0> 326 _RIC3u16Kt0_E 327 328CHECK: i64::<0> 329 _RIC3i64Kx0_E 330 331CHECK: u64::<0> 332 _RIC3u64Ky0_E 333 334; Bool constants 335 336CHECK: bool::<false> 337 _RIC4boolKb0_E 338 339CHECK: bool::<true> 340 _RIC4boolKb1_E 341 342; Invalid bool constants 343 344CHECK: _RIC4boolKb2_E 345 _RIC4boolKb2_E 346 347CHECK: _RIC4boolKbn0_E 348 _RIC4boolKbn0_E 349 350; Char constants 351 352CHECK: char::<'a'> 353 _RIC4charKc61_E 354 355CHECK: char::<'"'> 356 _RIC4charKc22_E 357 358CHECK: char::<'\t'> 359 _RIC4charKc9_E 360 361CHECK: char::<'\r'> 362 _RIC4charKcd_E 363 364CHECK: char::<'\n'> 365 _RIC4charKca_E 366 367CHECK: char::<'\\'> 368 _RIC4charKc5c_E 369 370CHECK: char::<'\''> 371 _RIC4charKc27_E 372 373CHECK: char::<'\u{1f40d}'> 374 _RIC4charKc1f40d_E 375 376CHECK: char::<'\u{10ffff}'> 377 _RIC4charKc10ffff_E 378 379; Invalid char constants 380 381CHECK: _RIC4charKc1234567_E 382 _RIC4charKc1234567_E 383 384; Invalid mangled characters 385 386CHECK: _RNvC2a.1c 387 _RNvC2a.1c 388 389CHECK: _RNvC2a$1c 390 _RNvC2a$1c 391 392; Invalid namespace (not in [a-zA-Z]). 393 394CHECK: _RN_C5crate4main 395 _RN_C5crate4main 396 397; Invalid identifier length (UINT64_MAX + 3, which happens to be ok after a wraparound). 398 399CHECK: _RNvC2ab18446744073709551618xy 400 _RNvC2ab18446744073709551618xy 401 402; Mangling scheme includes an optional encoding version. When present it would 403; indicate an encoding we don't support yet. Check that it is rejected: 404 405CHECK: _R0NvC1a4main 406 _R0NvC1a4main 407 408; Early EOF 409 410CHECK: _RNv 411 _RNv 412 413CHECK: _RNvC 414 _RNvC 415 416CHECK: _RNvC1a5main 417 _RNvC1a5main 418 419CHECK: _RNvC1a20abc 420 _RNvC1a20abc 421