@@ -65,7 +65,7 @@ impl MacroDylib {
65
65
#[ derive( Debug , Clone ) ]
66
66
pub struct ProcMacro {
67
67
process : Arc < ProcMacroProcessSrv > ,
68
- dylib_path : AbsPathBuf ,
68
+ dylib_path : Arc < AbsPathBuf > ,
69
69
name : SmolStr ,
70
70
kind : ProcMacroKind ,
71
71
}
@@ -75,7 +75,7 @@ impl PartialEq for ProcMacro {
75
75
fn eq ( & self , other : & Self ) -> bool {
76
76
self . name == other. name
77
77
&& self . kind == other. kind
78
- && self . dylib_path == other. dylib_path
78
+ && Arc :: ptr_eq ( & self . dylib_path , & other. dylib_path )
79
79
&& Arc :: ptr_eq ( & self . process , & other. process )
80
80
}
81
81
}
@@ -116,14 +116,15 @@ impl ProcMacroServer {
116
116
let _p = tracing:: info_span!( "ProcMacroServer::load_dylib" ) . entered ( ) ;
117
117
let macros = self . process . find_proc_macros ( & dylib. path ) ?;
118
118
119
+ let dylib_path = Arc :: new ( dylib. path ) ;
119
120
match macros {
120
121
Ok ( macros) => Ok ( macros
121
122
. into_iter ( )
122
123
. map ( |( name, kind) | ProcMacro {
123
124
process : self . process . clone ( ) ,
124
125
name : name. into ( ) ,
125
126
kind,
126
- dylib_path : dylib . path . clone ( ) ,
127
+ dylib_path : dylib_path . clone ( ) ,
127
128
} )
128
129
. collect ( ) ) ,
129
130
Err ( message) => Err ( ServerError { message, io : None } ) ,
0 commit comments