@@ -6,38 +6,27 @@ use symbolic_debuginfo::macho::BcSymbolMap;
66
77use super :: { File , Function , SourceLocation , Transformer } ;
88
9- // This ended up as a macro which "inlines" mapping the `Cow` into the calling function, as using
10- // a real function here would lead to the following borrow checker error:
11- // error[E0495]: cannot infer an appropriate lifetime for lifetime parameter `'d` due to conflicting requirements
12- macro_rules! map_cow {
13- ( $cow: expr, $f: expr) => {
14- match $cow {
15- Cow :: Borrowed ( inner) => Cow :: Borrowed ( $f( inner) ) ,
16- Cow :: Owned ( inner) => Cow :: Owned ( $f( & inner) . to_owned( ) ) ,
17- }
18- } ;
9+ fn resolve_cow < ' f > ( map : & ' f BcSymbolMap < ' _ > , s : Cow < ' f , str > ) -> Cow < ' f , str > {
10+ match s {
11+ Cow :: Borrowed ( inner) => Cow :: Borrowed ( map. resolve ( inner) ) ,
12+ Cow :: Owned ( inner) => Cow :: Owned ( map. resolve ( & inner) . to_owned ( ) ) ,
13+ }
1914}
2015
2116impl Transformer for BcSymbolMap < ' _ > {
2217 fn transform_function < ' f > ( & ' f mut self , f : Function < ' f > ) -> Function < ' f > {
2318 Function {
24- name : map_cow ! ( f . name , |s| self . resolve ( s ) ) ,
25- comp_dir : f. comp_dir . map ( |dir| map_cow ! ( dir , |s| self . resolve ( s ) ) ) ,
19+ name : resolve_cow ( self , f . name ) ,
20+ comp_dir : f. comp_dir . map ( |dir| resolve_cow ( self , dir ) ) ,
2621 }
2722 }
2823
2924 fn transform_source_location < ' f > ( & ' f mut self , sl : SourceLocation < ' f > ) -> SourceLocation < ' f > {
3025 SourceLocation {
3126 file : File {
32- name : map_cow ! ( sl. file. name, |s| self . resolve( s) ) ,
33- directory : sl
34- . file
35- . directory
36- . map ( |dir| map_cow ! ( dir, |s| self . resolve( s) ) ) ,
37- comp_dir : sl
38- . file
39- . comp_dir
40- . map ( |dir| map_cow ! ( dir, |s| self . resolve( s) ) ) ,
27+ name : resolve_cow ( self , sl. file . name ) ,
28+ directory : sl. file . directory . map ( |dir| resolve_cow ( self , dir) ) ,
29+ comp_dir : sl. file . comp_dir . map ( |dir| resolve_cow ( self , dir) ) ,
4130 } ,
4231 line : sl. line ,
4332 }
0 commit comments