@@ -112,7 +112,7 @@ impl Mark {
112112
113113 #[ inline]
114114 pub fn expn_info ( self ) -> Option < ExpnInfo > {
115- HygieneData :: with ( |data| data. expn_info ( self ) )
115+ HygieneData :: with ( |data| data. expn_info ( self ) . cloned ( ) )
116116 }
117117
118118 #[ inline]
@@ -204,8 +204,8 @@ impl HygieneData {
204204 GLOBALS . with ( |globals| f ( & mut * globals. hygiene_data . borrow_mut ( ) ) )
205205 }
206206
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 ( )
209209 }
210210
211211 fn is_descendant_of ( & self , mut mark : Mark , ancestor : Mark ) -> bool {
@@ -598,7 +598,7 @@ impl SyntaxContext {
598598 /// `ctxt.outer().expn_info()`.
599599 #[ inline]
600600 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 ( ) )
602602 }
603603
604604 /// `ctxt.outer_and_expn_info()` is equivalent to but faster than
@@ -607,7 +607,7 @@ impl SyntaxContext {
607607 pub fn outer_and_expn_info ( self ) -> ( Mark , Option < ExpnInfo > ) {
608608 HygieneData :: with ( |data| {
609609 let outer = data. outer ( self ) ;
610- ( outer, data. expn_info ( outer) )
610+ ( outer, data. expn_info ( outer) . cloned ( ) )
611611 } )
612612 }
613613
0 commit comments