@@ -916,35 +916,43 @@ impl Span {
916
916
}
917
917
918
918
/// Check if you can select metavar spans for the given spans to get matching contexts.
919
- fn try_metavars ( a : SpanData , b : SpanData , a_orig : Span , b_orig : Span ) -> ( SpanData , SpanData ) {
920
- match with_metavar_spans ( |mspans| ( mspans. get ( a_orig) , mspans. get ( b_orig) ) ) {
921
- ( None , None ) => { }
922
- ( Some ( meta_a) , None ) => {
923
- let meta_a = meta_a. data ( ) ;
924
- if meta_a. ctxt == b. ctxt {
925
- return ( meta_a, b) ;
926
- }
927
- }
928
- ( None , Some ( meta_b) ) => {
929
- let meta_b = meta_b. data ( ) ;
930
- if a. ctxt == meta_b. ctxt {
931
- return ( a, meta_b) ;
932
- }
933
- }
934
- ( Some ( meta_a) , Some ( meta_b) ) => {
935
- let meta_b = meta_b. data ( ) ;
936
- if a. ctxt == meta_b. ctxt {
937
- return ( a, meta_b) ;
938
- }
939
- let meta_a = meta_a. data ( ) ;
940
- if meta_a. ctxt == b. ctxt {
941
- return ( meta_a, b) ;
942
- } else if meta_a. ctxt == meta_b. ctxt {
943
- return ( meta_a, meta_b) ;
944
- }
945
- }
919
+ #[ tracing:: instrument( level = "trace" , ret) ]
920
+ fn try_metavars (
921
+ mut a : SpanData ,
922
+ mut b : SpanData ,
923
+ a_orig : Span ,
924
+ b_orig : Span ,
925
+ ) -> ( SpanData , SpanData ) {
926
+ let a_parent = a. parent ;
927
+ let b_parent = b. parent ;
928
+
929
+ let ( meta_a, meta_b) = with_metavar_spans ( |mspans| {
930
+ ( mspans. get ( a_orig. with_parent ( None ) ) , mspans. get ( b_orig. with_parent ( None ) ) )
931
+ } ) ;
932
+
933
+ let meta_a = meta_a. map ( Span :: data) ;
934
+ let meta_b = meta_b. map ( Span :: data) ;
935
+
936
+ if let Some ( meta_b) = meta_b
937
+ && meta_b. ctxt == a. ctxt
938
+ {
939
+ b = meta_b;
940
+ }
941
+ if let Some ( meta_a) = meta_a
942
+ && meta_a. ctxt == b. ctxt
943
+ {
944
+ a = meta_a;
945
+ }
946
+ if let Some ( meta_a) = meta_a
947
+ && let Some ( meta_b) = meta_b
948
+ && meta_a. ctxt == meta_b. ctxt
949
+ {
950
+ a = meta_a;
951
+ b = meta_b;
946
952
}
947
953
954
+ a. parent = a_parent;
955
+ b. parent = b_parent;
948
956
( a, b)
949
957
}
950
958
0 commit comments