1 /*
   2  * Copyright (c) 2014 Alex Crichton
   3  *
   4  * Permission is hereby granted, free of charge, to any
   5  * person obtaining a copy of this software and associated
   6  * documentation files (the "Software"), to deal in the
   7  * Software without restriction, including without
   8  * limitation the rights to use, copy, modify, merge,
   9  * publish, distribute, sublicense, and/or sell copies of
  10  * the Software, and to permit persons to whom the Software
  11  * is furnished to do so, subject to the following
  12  * conditions:
  13  *
  14  * The above copyright notice and this permission notice
  15  * shall be included in all copies or substantial portions
  16  * of the Software.
  17  *
  18  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
  19  * ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
  20  * TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
  21  * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
  22  * SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  23  * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  24  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
  25  * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  26  * DEALINGS IN THE SOFTWARE.
  27  */
  28 
  29 /*
  30  * Copyright 2019 Joyent, Inc.
  31  */
  32 
  33 /*
  34  * Test cases taken from rustc-demangle 0.1.9
  35  */
  36 
  37 #include "demangle_test.h"
  38 
  39 /* BEGIN CSTYLED */
  40 
  41 GROUP(demangle, SYSDEM_LANG_RUST,
  42     T_ERR("test"),
  43     T("_ZN4testE", "test"),
  44     T_ERR("_ZN4test"),
  45     T("_ZN4test1a2bcE", "test::a::bc"));
  46 
  47 GROUP(demangle_dollars, SYSDEM_LANG_RUST,
  48     T("_ZN4$RP$E", ")"),
  49     T("_ZN8$RF$testE", "&test"),
  50     T("_ZN8$BP$test4foobE", "*test::foob"),
  51     T("_ZN9$u20$test4foobE", " test::foob"),
  52     T("_ZN35Bar$LT$$u5b$u32$u3b$$u20$4$u5d$$GT$E", "Bar<[u32; 4]>"));
  53 
  54 GROUP(demangle_many_dollars, SYSDEM_LANG_RUST,
  55     T("_ZN13test$u20$test4foobE", "test test::foob"),
  56     T("_ZN12test$BP$test4foobE", "test*test::foob"));
  57 
  58 GROUP(demangle_osx, SYSDEM_LANG_RUST,
  59     T("__ZN5alloc9allocator6Layout9for_value17h02a996811f781011E",
  60     "alloc::allocator::Layout::for_value::h02a996811f781011"),
  61     T("__ZN38_$LT$core..option..Option$LT$T$GT$$GT$6unwrap18_MSG_FILE_LINE_COL17haf7cb8d5824ee659E",
  62     "<core::option::Option<T>>::unwrap::_MSG_FILE_LINE_COL::haf7cb8d5824ee659"),
  63     T("__ZN4core5slice89_$LT$impl$u20$core..iter..traits..IntoIterator$u20$for$u20$$RF$$u27$a$u20$$u5b$T$u5d$$GT$9into_iter17h450e234d27262170E",
  64     "core::slice::<impl core::iter::traits::IntoIterator for &'a [T]>::into_iter::h450e234d27262170"));
  65 
  66 GROUP(demangle_elements_beginning_with_underscore, SYSDEM_LANG_RUST,
  67     T("_ZN13_$LT$test$GT$E", "<test>"),
  68     T("_ZN28_$u7b$$u7b$closure$u7d$$u7d$E", "{{closure}}"),
  69     T("_ZN15__STATIC_FMTSTRE", "__STATIC_FMTSTR"));
  70 
  71 GROUP(demangle_trait_impls, SYSDEM_LANG_RUST,
  72     T("_ZN71_$LT$Test$u20$$u2b$$u20$$u27$static$u20$as$u20$foo..Bar$LT$Test$GT$$GT$3barE",
  73     "<Test + 'static as foo::Bar<Test>>::bar"));
  74 
  75 GROUP(invalid_no_chop, SYSDEM_LANG_RUST, T_ERR("_ZNfooE"));
  76 
  77 GROUP(handle_assoc_types, SYSDEM_LANG_RUST,
  78     T("_ZN151_$LT$alloc..boxed..Box$LT$alloc..boxed..FnBox$LT$A$C$$u20$Output$u3d$R$GT$$u20$$u2b$$u20$$u27$a$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$9call_once17h69e8f44b3723e1caE",
  79     "<alloc::boxed::Box<alloc::boxed::FnBox<A, Output=R> + 'a> as core::ops::function::FnOnce<A>>::call_once::h69e8f44b3723e1ca"));
  80 
  81 /* END CSTYLED */