# This file holds test cases for the Rust demangler.
# Each test case looks like this:
#  options
#  input to be demangled
#  expected output
#
# See demangle-expected for documentation of supported options.
#
# A line starting with `#' is ignored.
# However, blank lines in this file are NOT ignored.
#
############
#
# Coverage Tests
#
#
# Demangles as rust symbol.
--format=rust
_ZN4main4main17he714a2e23ed7db23E
main::main
# Also demangles as c++ gnu v3 mangled symbol. But with extra Rust hash.
--format=gnu-v3
_ZN4main4main17he714a2e23ed7db23E
main::main::he714a2e23ed7db23
# But auto should demangle fully gnu-v3 -> rust -> demangled, not partially.
--format=auto
_ZN4main4main17he714a2e23ed7db23E
main::main
# Hash is exactly 16 hex chars. Not more.
--format=auto
_ZN4main4main18h1e714a2e23ed7db23E
main::main::h1e714a2e23ed7db23
# Not less.
--format=auto
_ZN4main4main16h714a2e23ed7db23E
main::main::h714a2e23ed7db23
# And not non-hex.
--format=auto
_ZN4main4main17he714a2e23ed7db2gE
main::main::he714a2e23ed7db2g
# $XX$ substitutions should not contain just numbers.
--format=auto
_ZN4main4$99$17he714a2e23ed7db23E
main::$99$::he714a2e23ed7db23
# _ at start of path should be removed.
# ".." translates to "::" "$GT$" to ">" and "$LT$" to "<".
--format=rust
_ZN71_$LT$Test$u20$$u2b$$u20$$u27$static$u20$as$u20$foo..Bar$LT$Test$GT$$GT$3bar17h930b740aa94f1d3aE
<Test + 'static as foo::Bar<Test>>::bar
#
--format=rust
_ZN54_$LT$I$u20$as$u20$core..iter..traits..IntoIterator$GT$9into_iter17h8581507801fb8615E
<I as core::iter::traits::IntoIterator>::into_iter
#
--format=rust
_ZN10parse_tsan4main17hdbbfdf1c6a7e27d9E
parse_tsan::main
#
--format=rust
_ZN65_$LT$std..env..Args$u20$as$u20$core..iter..iterator..Iterator$GT$4next17h420a7c8d0c7eef40E
<std::env::Args as core::iter::iterator::Iterator>::next
#
--format=rust
_ZN4core3str9from_utf817hdcea28871313776dE
core::str::from_utf8
#
--format=rust
_ZN4core3mem7size_of17h18bde9bb8c22e2cfE
core::mem::size_of
#
--format=rust
_ZN5alloc4heap8allocate17hd55c03e6cb81d924E
alloc::heap::allocate
#
--format=rust
_ZN4core3ptr8null_mut17h736cce09ca0ac11aE
core::ptr::null_mut
#
--format=rust
_ZN4core3ptr31_$LT$impl$u20$$BP$mut$u20$T$GT$7is_null17h7f9de798bc3f0879E
core::ptr::<impl *mut T>::is_null
#
--format=rust
_ZN40_$LT$alloc..raw_vec..RawVec$LT$T$GT$$GT$6double17h4166e2b47539e1ffE
<alloc::raw_vec::RawVec<T>>::double
#
--format=rust
_ZN39_$LT$collections..vec..Vec$LT$T$GT$$GT$4push17hd4b6b23c1b88141aE
<collections::vec::Vec<T>>::push
#
--format=rust
_ZN70_$LT$collections..vec..Vec$LT$T$GT$$u20$as$u20$core..ops..DerefMut$GT$9deref_mut17hf299b860dc5a831cE
<collections::vec::Vec<T> as core::ops::DerefMut>::deref_mut
#
--format=rust
_ZN63_$LT$core..ptr..Unique$LT$T$GT$$u20$as$u20$core..ops..Deref$GT$5deref17hc784b4a166cb5e5cE
<core::ptr::Unique<T> as core::ops::Deref>::deref
#
--format=rust
_ZN40_$LT$alloc..raw_vec..RawVec$LT$T$GT$$GT$3ptr17h7570b6e9070b693bE
<alloc::raw_vec::RawVec<T>>::ptr
#
--format=rust
_ZN4core3ptr31_$LT$impl$u20$$BP$mut$u20$T$GT$7is_null17h0f3228f343444ac8E
core::ptr::<impl *mut T>::is_null
#
--format=rust
_ZN53_$LT$$u5b$T$u5d$$u20$as$u20$core..slice..SliceExt$GT$10as_mut_ptr17h153241df1c7d1666E
<[T] as core::slice::SliceExt>::as_mut_ptr
#
--format=rust
_ZN11collections5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$10as_mut_ptr17hf12a6d0409938c96E
collections::slice::<impl [T]>::as_mut_ptr
#
--format=rust
_ZN4core3ptr5write17h651fe53ec860e780E
core::ptr::write
#
--format=rust
_ZN65_$LT$std..env..Args$u20$as$u20$core..iter..iterator..Iterator$GT$4next17h420a7c8d0c7eef40E
<std::env::Args as core::iter::iterator::Iterator>::next
#
--format=rust
_ZN54_$LT$I$u20$as$u20$core..iter..traits..IntoIterator$GT$9into_iter17he06cb713aae5b465E
<I as core::iter::traits::IntoIterator>::into_iter
#
--format=rust
_ZN71_$LT$collections..vec..IntoIter$LT$T$GT$$u20$as$u20$core..ops..Drop$GT$4drop17hf7f23304ebe62eedE
<collections::vec::IntoIter<T> as core::ops::Drop>::drop
#
--format=rust
_ZN86_$LT$collections..vec..IntoIter$LT$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4next17h04b3fbf148c39713E
<collections::vec::IntoIter<T> as core::iter::iterator::Iterator>::next
#
--format=rust
_ZN75_$LT$$RF$$u27$a$u20$mut$u20$I$u20$as$u20$core..iter..iterator..Iterator$GT$4next17ha050492063e0fd20E
<&'a mut I as core::iter::iterator::Iterator>::next
# Different hashes are OK, they are just stripped.
--format=rust
_ZN13drop_contents17hfe3c0a68c8ad1c74E
drop_contents
#
--format=rust
_ZN13drop_contents17h48cb59bef15bb555E
drop_contents
#
--format=rust
_ZN4core3mem7size_of17h900b33157bf58f26E
core::mem::size_of
#
--format=rust
_ZN67_$LT$alloc..raw_vec..RawVec$LT$T$GT$$u20$as$u20$core..ops..Drop$GT$4drop17h96a5cf6e94807905E
<alloc::raw_vec::RawVec<T> as core::ops::Drop>::drop
#
--format=rust
_ZN68_$LT$core..nonzero..NonZero$LT$T$GT$$u20$as$u20$core..ops..Deref$GT$5deref17hc49056f882aa46dbE
<core::nonzero::NonZero<T> as core::ops::Deref>::deref
#
--format=rust
_ZN63_$LT$core..ptr..Unique$LT$T$GT$$u20$as$u20$core..ops..Deref$GT$5deref17h19f2ad4920655e85E
<core::ptr::Unique<T> as core::ops::Deref>::deref
