@@ -112,7 +112,7 @@ impl Mark {
112
112
113
113
#[ inline]
114
114
pub fn expn_info ( self ) -> Option < ExpnInfo > {
115
- HygieneData :: with ( |data| data. expn_info ( self ) )
115
+ HygieneData :: with ( |data| data. expn_info ( self ) . cloned ( ) )
116
116
}
117
117
118
118
#[ inline]
@@ -204,8 +204,8 @@ impl HygieneData {
204
204
GLOBALS . with ( |globals| f ( & mut * globals. hygiene_data . borrow_mut ( ) ) )
205
205
}
206
206
207
- fn expn_info ( & self , mark : Mark ) -> Option < ExpnInfo > {
208
- self . marks [ mark. 0 as usize ] . expn_info . clone ( )
207
+ fn expn_info ( & self , mark : Mark ) -> Option < & ExpnInfo > {
208
+ self . marks [ mark. 0 as usize ] . expn_info . as_ref ( )
209
209
}
210
210
211
211
fn is_descendant_of ( & self , mut mark : Mark , ancestor : Mark ) -> bool {
@@ -598,7 +598,7 @@ impl SyntaxContext {
598
598
/// `ctxt.outer().expn_info()`.
599
599
#[ inline]
600
600
pub fn outer_expn_info ( self ) -> Option < ExpnInfo > {
601
- HygieneData :: with ( |data| data. expn_info ( data. outer ( self ) ) )
601
+ HygieneData :: with ( |data| data. expn_info ( data. outer ( self ) ) . cloned ( ) )
602
602
}
603
603
604
604
/// `ctxt.outer_and_expn_info()` is equivalent to but faster than
@@ -607,7 +607,7 @@ impl SyntaxContext {
607
607
pub fn outer_and_expn_info ( self ) -> ( Mark , Option < ExpnInfo > ) {
608
608
HygieneData :: with ( |data| {
609
609
let outer = data. outer ( self ) ;
610
- ( outer, data. expn_info ( outer) )
610
+ ( outer, data. expn_info ( outer) . cloned ( ) )
611
611
} )
612
612
}
613
613
0 commit comments