Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/proc-macro-srv/src/lib.rs')
-rw-r--r--crates/proc-macro-srv/src/lib.rs26
1 files changed, 12 insertions, 14 deletions
diff --git a/crates/proc-macro-srv/src/lib.rs b/crates/proc-macro-srv/src/lib.rs
index 831632c64c..2472c1e311 100644
--- a/crates/proc-macro-srv/src/lib.rs
+++ b/crates/proc-macro-srv/src/lib.rs
@@ -33,12 +33,11 @@ use std::{
collections::{hash_map::Entry, HashMap},
env,
ffi::OsString,
- fs,
- path::{Path, PathBuf},
- thread,
+ fs, thread,
time::SystemTime,
};
+use paths::{Utf8Path, Utf8PathBuf};
use proc_macro_api::{
msg::{
self, deserialize_span_data_index_map, serialize_span_data_index_map, ExpnGlobals,
@@ -53,7 +52,7 @@ use crate::server::TokenStream;
// see `build.rs`
include!(concat!(env!("OUT_DIR"), "/rustc_version.rs"));
-trait ProcMacroSrvSpan: tt::Span {
+trait ProcMacroSrvSpan: Copy {
type Server: proc_macro::bridge::server::Server<TokenStream = TokenStream<Self>>;
fn make_server(call_site: Self, def_site: Self, mixed_site: Self) -> Self::Server;
}
@@ -81,7 +80,7 @@ impl ProcMacroSrvSpan for Span {
#[derive(Default)]
pub struct ProcMacroSrv {
- expanders: HashMap<(PathBuf, SystemTime), dylib::Expander>,
+ expanders: HashMap<(Utf8PathBuf, SystemTime), dylib::Expander>,
span_mode: SpanMode,
}
@@ -149,23 +148,22 @@ impl ProcMacroSrv {
pub fn list_macros(
&mut self,
- dylib_path: &Path,
+ dylib_path: &Utf8Path,
) -> Result<Vec<(String, ProcMacroKind)>, String> {
let expander = self.expander(dylib_path)?;
Ok(expander.list_macros())
}
- fn expander(&mut self, path: &Path) -> Result<&dylib::Expander, String> {
+ fn expander(&mut self, path: &Utf8Path) -> Result<&dylib::Expander, String> {
let time = fs::metadata(path)
.and_then(|it| it.modified())
- .map_err(|err| format!("Failed to get file metadata for {}: {err}", path.display()))?;
+ .map_err(|err| format!("Failed to get file metadata for {path}: {err}",))?;
Ok(match self.expanders.entry((path.to_path_buf(), time)) {
- Entry::Vacant(v) => {
- v.insert(dylib::Expander::new(path).map_err(|err| {
- format!("Cannot create expander for {}: {err}", path.display())
- })?)
- }
+ Entry::Vacant(v) => v.insert(
+ dylib::Expander::new(path)
+ .map_err(|err| format!("Cannot create expander for {path}: {err}",))?,
+ ),
Entry::Occupied(e) => e.into_mut(),
})
}
@@ -306,6 +304,6 @@ impl Drop for EnvSnapshot {
mod tests;
#[cfg(test)]
-pub fn proc_macro_test_dylib_path() -> std::path::PathBuf {
+pub fn proc_macro_test_dylib_path() -> paths::Utf8PathBuf {
proc_macro_test::PROC_MACRO_TEST_LOCATION.into()
}