Skip to content

Commit 22f064c

Browse files
committed
Add resolve_extern_path in DB
1 parent 8153a0b commit 22f064c

File tree

5 files changed

+48
-3
lines changed

5 files changed

+48
-3
lines changed

crates/ra_db/src/lib.rs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ use ra_syntax::{ast, Parse, SourceFile, TextRange, TextUnit};
1111
pub use crate::{
1212
cancellation::Canceled,
1313
input::{
14-
CrateGraph, CrateId, CrateName, Dependency, Edition, Env, FileId, SourceRoot, SourceRootId,
14+
CrateGraph, CrateId, CrateName, Dependency, Edition, Env, ExternSourceId, FileId,
15+
SourceRoot, SourceRootId,
1516
},
1617
};
1718
pub use relative_path::{RelativePath, RelativePathBuf};
@@ -87,6 +88,12 @@ pub trait FileLoader {
8788
fn resolve_relative_path(&self, anchor: FileId, relative_path: &RelativePath)
8889
-> Option<FileId>;
8990
fn relevant_crates(&self, file_id: FileId) -> Arc<Vec<CrateId>>;
91+
92+
fn resolve_extern_path(
93+
&self,
94+
extern_id: ExternSourceId,
95+
relative_path: &RelativePath,
96+
) -> Option<FileId>;
9097
}
9198

9299
/// Database which stores all significant input facts: source code and project
@@ -164,4 +171,13 @@ impl<T: SourceDatabaseExt> FileLoader for FileLoaderDelegate<&'_ T> {
164171
let source_root = self.0.file_source_root(file_id);
165172
self.0.source_root_crates(source_root)
166173
}
174+
175+
fn resolve_extern_path(
176+
&self,
177+
extern_id: ExternSourceId,
178+
relative_path: &RelativePath,
179+
) -> Option<FileId> {
180+
let source_root = self.0.source_root(SourceRootId(extern_id.0));
181+
source_root.file_by_relative_path(&relative_path)
182+
}
167183
}

crates/ra_hir_def/src/test_db.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use std::{
66
};
77

88
use crate::db::DefDatabase;
9-
use ra_db::{salsa, CrateId, FileId, FileLoader, FileLoaderDelegate, RelativePath};
9+
use ra_db::{salsa, CrateId, ExternSourceId, FileId, FileLoader, FileLoaderDelegate, RelativePath};
1010

1111
#[salsa::database(
1212
ra_db::SourceDatabaseExtStorage,
@@ -52,6 +52,14 @@ impl FileLoader for TestDB {
5252
fn relevant_crates(&self, file_id: FileId) -> Arc<Vec<CrateId>> {
5353
FileLoaderDelegate(self).relevant_crates(file_id)
5454
}
55+
56+
fn resolve_extern_path(
57+
&self,
58+
extern_id: ExternSourceId,
59+
relative_path: &RelativePath,
60+
) -> Option<FileId> {
61+
FileLoaderDelegate(self).resolve_extern_path(extern_id, relative_path)
62+
}
5563
}
5664

5765
impl TestDB {

crates/ra_hir_expand/src/test_db.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use std::{
55
sync::{Arc, Mutex},
66
};
77

8-
use ra_db::{salsa, CrateId, FileId, FileLoader, FileLoaderDelegate, RelativePath};
8+
use ra_db::{salsa, CrateId, ExternSourceId, FileId, FileLoader, FileLoaderDelegate, RelativePath};
99

1010
#[salsa::database(
1111
ra_db::SourceDatabaseExtStorage,
@@ -51,4 +51,11 @@ impl FileLoader for TestDB {
5151
fn relevant_crates(&self, file_id: FileId) -> Arc<Vec<CrateId>> {
5252
FileLoaderDelegate(self).relevant_crates(file_id)
5353
}
54+
fn resolve_extern_path(
55+
&self,
56+
anchor: ExternSourceId,
57+
relative_path: &RelativePath,
58+
) -> Option<FileId> {
59+
FileLoaderDelegate(self).resolve_extern_path(anchor, relative_path)
60+
}
5461
}

crates/ra_hir_ty/src/test_db.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,13 @@ impl FileLoader for TestDB {
6767
fn relevant_crates(&self, file_id: FileId) -> Arc<Vec<CrateId>> {
6868
FileLoaderDelegate(self).relevant_crates(file_id)
6969
}
70+
fn resolve_extern_path(
71+
&self,
72+
extern_id: ra_db::ExternSourceId,
73+
relative_path: &RelativePath,
74+
) -> Option<FileId> {
75+
FileLoaderDelegate(self).resolve_extern_path(extern_id, relative_path)
76+
}
7077
}
7178

7279
impl TestDB {

crates/ra_ide_db/src/lib.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,13 @@ impl FileLoader for RootDatabase {
5757
fn relevant_crates(&self, file_id: FileId) -> Arc<Vec<CrateId>> {
5858
FileLoaderDelegate(self).relevant_crates(file_id)
5959
}
60+
fn resolve_extern_path(
61+
&self,
62+
extern_id: ra_db::ExternSourceId,
63+
relative_path: &RelativePath,
64+
) -> Option<FileId> {
65+
FileLoaderDelegate(self).resolve_extern_path(extern_id, relative_path)
66+
}
6067
}
6168

6269
impl salsa::Database for RootDatabase {

0 commit comments

Comments
 (0)