File tree Expand file tree Collapse file tree 1 file changed +25
-11
lines changed Expand file tree Collapse file tree 1 file changed +25
-11
lines changed Original file line number Diff line number Diff line change @@ -5,17 +5,36 @@ use std::io;
55use std:: io:: BufRead ;
66
77fn main ( ) {
8- let args = env:: args ( ) ;
8+ let mut args: Vec < _ > = env:: args ( ) . collect ( ) ;
9+ args. remove ( 0 ) ;
10+
11+ let verbose = if args. get ( 0 ) . map ( |x| x. as_str ( ) ) == Some ( "-v" ) {
12+ args. remove ( 0 ) ;
13+ true
14+ } else {
15+ false
16+ } ;
917
1018 let print_demangled = |sym : & str | {
11- let demangled = msvc_demangler:: demangle ( & sym, msvc_demangler:: DemangleFlags :: llvm ( ) ) ;
19+ let parsed = match msvc_demangler:: parse ( & sym) {
20+ Ok ( parsed) => parsed,
21+ Err ( _) => {
22+ println ! ( "{}" , sym) ;
23+ return ;
24+ }
25+ } ;
26+ if verbose {
27+ eprintln ! ( "{:#?}" , & parsed) ;
28+ }
29+ let flags = msvc_demangler:: DemangleFlags :: llvm ( ) ;
30+ let demangled = msvc_demangler:: serialize ( & parsed, flags) ;
1231 match demangled {
1332 Ok ( ref string) => println ! ( "{}" , string) ,
1433 _ => println ! ( "{}" , sym) ,
1534 }
1635 } ;
1736
18- if args. len ( ) == 1 {
37+ if args. is_empty ( ) {
1938 let stdin = io:: stdin ( ) ;
2039 let handle = stdin. lock ( ) ;
2140
@@ -25,14 +44,9 @@ fn main() {
2544 _ => continue ,
2645 }
2746 }
28- return ;
29- }
30-
31- for ( i, arg) in env:: args ( ) . enumerate ( ) {
32- if i == 0 {
33- continue ;
47+ } else {
48+ for arg in args {
49+ print_demangled ( & arg) ;
3450 }
35-
36- print_demangled ( & arg) ;
3751 }
3852}
You can’t perform that action at this time.
0 commit comments