Introduce anchored_path

They allow to represent paths like `#[path = "C:\path.rs"] mod foo;`
in a lossless cross-platform & network-transparent way.
This commit is contained in:
Aleksey Kladov 2020-12-09 19:01:15 +03:00
parent 5e3891c255
commit 6e24321e45
13 changed files with 79 additions and 65 deletions

View file

@ -19,8 +19,8 @@ use std::{fmt, sync::Arc};
use base_db::{
salsa::{self, Durability},
Canceled, CheckCanceled, CrateId, FileId, FileLoader, FileLoaderDelegate, SourceDatabase,
Upcast,
AnchoredPath, Canceled, CheckCanceled, CrateId, FileId, FileLoader, FileLoaderDelegate,
SourceDatabase, Upcast,
};
use hir::db::{AstDatabase, DefDatabase, HirDatabase};
use rustc_hash::FxHashSet;
@ -72,8 +72,8 @@ impl FileLoader for RootDatabase {
fn file_text(&self, file_id: FileId) -> Arc<String> {
FileLoaderDelegate(self).file_text(file_id)
}
fn resolve_path(&self, anchor: FileId, path: &str) -> Option<FileId> {
FileLoaderDelegate(self).resolve_path(anchor, path)
fn resolve_path(&self, path: AnchoredPath) -> Option<FileId> {
FileLoaderDelegate(self).resolve_path(path)
}
fn relevant_crates(&self, file_id: FileId) -> Arc<FxHashSet<CrateId>> {
FileLoaderDelegate(self).relevant_crates(file_id)

View file

@ -3,7 +3,7 @@
//!
//! It can be viewed as a dual for `AnalysisChange`.
use base_db::FileId;
use base_db::{AnchoredPathBuf, FileId};
use text_edit::TextEdit;
#[derive(Default, Debug, Clone)]
@ -44,8 +44,8 @@ impl From<Vec<SourceFileEdit>> for SourceChange {
#[derive(Debug, Clone)]
pub enum FileSystemEdit {
CreateFile { anchor: FileId, dst: String },
MoveFile { src: FileId, anchor: FileId, dst: String },
CreateFile { dst: AnchoredPathBuf },
MoveFile { src: FileId, dst: AnchoredPathBuf },
}
impl From<FileSystemEdit> for SourceChange {