Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/base-db/src/editioned_file_id.rs')
-rw-r--r--crates/base-db/src/editioned_file_id.rs57
1 files changed, 12 insertions, 45 deletions
diff --git a/crates/base-db/src/editioned_file_id.rs b/crates/base-db/src/editioned_file_id.rs
index a77b45f8ae..f674c5df95 100644
--- a/crates/base-db/src/editioned_file_id.rs
+++ b/crates/base-db/src/editioned_file_id.rs
@@ -16,57 +16,24 @@ pub struct EditionedFileId {
field: span::EditionedFileId,
}
-// Currently does not work due to a salsa bug
-// #[salsa::tracked]
-// impl EditionedFileId {
-// #[salsa::tracked(lru = 128)]
-// pub fn parse(self, db: &dyn SourceDatabase) -> syntax::Parse<ast::SourceFile> {
-// let _p = tracing::info_span!("parse", ?self).entered();
-// let (file_id, edition) = self.unpack(db);
-// let text = db.file_text(file_id).text(db);
-// ast::SourceFile::parse(text, edition)
-// }
-
-// // firewall query
-// #[salsa::tracked(returns(as_deref))]
-// pub fn parse_errors(self, db: &dyn SourceDatabase) -> Option<Box<[SyntaxError]>> {
-// let errors = self.parse(db).errors();
-// match &*errors {
-// [] => None,
-// [..] => Some(errors.into()),
-// }
-// }
-// }
-
+#[salsa::tracked]
impl EditionedFileId {
+ #[salsa::tracked(lru = 128)]
pub fn parse(self, db: &dyn SourceDatabase) -> syntax::Parse<ast::SourceFile> {
- #[salsa::tracked(lru = 128)]
- pub fn parse(
- db: &dyn SourceDatabase,
- file_id: EditionedFileId,
- ) -> syntax::Parse<ast::SourceFile> {
- let _p = tracing::info_span!("parse", ?file_id).entered();
- let (file_id, edition) = file_id.unpack(db);
- let text = db.file_text(file_id).text(db);
- ast::SourceFile::parse(text, edition)
- }
- parse(db, self)
+ let _p = tracing::info_span!("parse", ?self).entered();
+ let (file_id, edition) = self.unpack(db);
+ let text = db.file_text(file_id).text(db);
+ ast::SourceFile::parse(text, edition)
}
// firewall query
- pub fn parse_errors(self, db: &dyn SourceDatabase) -> Option<&[SyntaxError]> {
- #[salsa::tracked(returns(as_deref))]
- pub fn parse_errors(
- db: &dyn SourceDatabase,
- file_id: EditionedFileId,
- ) -> Option<Box<[SyntaxError]>> {
- let errors = file_id.parse(db).errors();
- match &*errors {
- [] => None,
- [..] => Some(errors.into()),
- }
+ #[salsa::tracked(returns(as_deref))]
+ pub fn parse_errors(self, db: &dyn SourceDatabase) -> Option<Box<[SyntaxError]>> {
+ let errors = self.parse(db).errors();
+ match &*errors {
+ [] => None,
+ [..] => Some(errors.into()),
}
- parse_errors(db, self)
}
}