Unnamed repository; edit this file 'description' to name the repository.
Port parse query to newstyle
Lukas Wirth 7 weeks ago
parent 9b4098c · commit 10d1348
-rw-r--r--crates/base-db/src/editioned_file_id.rs57
-rw-r--r--crates/base-db/src/lib.rs31
-rw-r--r--crates/hir-def/src/attrs.rs6
-rw-r--r--crates/hir-def/src/expr_store/scope.rs5
-rw-r--r--crates/hir-def/src/macro_expansion_tests/mod.rs3
-rw-r--r--crates/hir-def/src/nameres.rs2
-rw-r--r--crates/hir-def/src/test_db.rs2
-rw-r--r--crates/hir-expand/src/builtin/fn_macro.rs2
-rw-r--r--crates/hir-expand/src/db.rs4
-rw-r--r--crates/hir-expand/src/files.rs8
-rw-r--r--crates/hir-expand/src/span_map.rs2
-rw-r--r--crates/hir/src/semantics.rs8
-rw-r--r--crates/ide-completion/src/context.rs2
-rw-r--r--crates/ide-diagnostics/src/lib.rs5
-rw-r--r--crates/ide-ssr/src/from_comment.rs4
-rw-r--r--crates/ide/src/lib.rs10
-rw-r--r--crates/ide/src/typing.rs2
-rw-r--r--crates/ide/src/typing/on_enter.rs3
18 files changed, 91 insertions, 65 deletions
diff --git a/crates/base-db/src/editioned_file_id.rs b/crates/base-db/src/editioned_file_id.rs
index 8721f3a0ff..a77b45f8ae 100644
--- a/crates/base-db/src/editioned_file_id.rs
+++ b/crates/base-db/src/editioned_file_id.rs
@@ -5,14 +5,71 @@ use std::hash::Hash;
use salsa::Database;
use span::Edition;
+use syntax::{SyntaxError, ast};
use vfs::FileId;
+use crate::SourceDatabase;
+
#[salsa::interned(debug, constructor = from_span_file_id, no_lifetime)]
#[derive(PartialOrd, Ord)]
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()),
+// }
+// }
+// }
+
+impl EditionedFileId {
+ 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)
+ }
+
+ // 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()),
+ }
+ }
+ parse_errors(db, self)
+ }
+}
+
impl EditionedFileId {
#[inline]
pub fn new(db: &dyn Database, file_id: FileId, edition: Edition) -> Self {
diff --git a/crates/base-db/src/lib.rs b/crates/base-db/src/lib.rs
index 5baf4ce6f9..b1cb1b3202 100644
--- a/crates/base-db/src/lib.rs
+++ b/crates/base-db/src/lib.rs
@@ -36,7 +36,6 @@ pub use query_group;
use rustc_hash::{FxHashSet, FxHasher};
use salsa::{Durability, Setter};
pub use semver::{BuildMetadata, Prerelease, Version, VersionReq};
-use syntax::{Parse, SyntaxError, ast};
use triomphe::Arc;
pub use vfs::{AnchoredPath, AnchoredPathBuf, FileId, VfsPath, file_set::FileSet};
@@ -239,16 +238,7 @@ pub struct SourceRootInput {
/// Database which stores all significant input facts: source code and project
/// model. Everything else in rust-analyzer is derived from these queries.
#[query_group::query_group]
-pub trait RootQueryDb: SourceDatabase + salsa::Database {
- /// Parses the file into the syntax tree.
- #[salsa::invoke(parse)]
- #[salsa::lru(128)]
- fn parse(&self, file_id: EditionedFileId) -> Parse<ast::SourceFile>;
-
- /// Returns the set of errors obtained from parsing the file including validation errors.
- #[salsa::transparent]
- fn parse_errors(&self, file_id: EditionedFileId) -> Option<&[SyntaxError]>;
-
+pub trait RootQueryDb: SourceDatabase {
#[salsa::transparent]
fn toolchain_channel(&self, krate: Crate) -> Option<ReleaseChannel>;
@@ -357,25 +347,6 @@ fn toolchain_channel(db: &dyn RootQueryDb, krate: Crate) -> Option<ReleaseChanne
krate.workspace_data(db).toolchain.as_ref().and_then(|v| ReleaseChannel::from_str(&v.pre))
}
-fn parse(db: &dyn RootQueryDb, file_id: EditionedFileId) -> Parse<ast::SourceFile> {
- let _p = tracing::info_span!("parse", ?file_id).entered();
- let (file_id, edition) = file_id.unpack(db.as_dyn_database());
- let text = db.file_text(file_id).text(db);
- ast::SourceFile::parse(text, edition)
-}
-
-fn parse_errors(db: &dyn RootQueryDb, file_id: EditionedFileId) -> Option<&[SyntaxError]> {
- #[salsa_macros::tracked(returns(ref))]
- fn parse_errors(db: &dyn RootQueryDb, file_id: EditionedFileId) -> Option<Box<[SyntaxError]>> {
- let errors = db.parse(file_id).errors();
- match &*errors {
- [] => None,
- [..] => Some(errors.into()),
- }
- }
- parse_errors(db, file_id).as_ref().map(|it| &**it)
-}
-
fn source_root_crates(db: &dyn RootQueryDb, id: SourceRootId) -> Arc<[Crate]> {
let crates = db.all_crates();
crates
diff --git a/crates/hir-def/src/attrs.rs b/crates/hir-def/src/attrs.rs
index e3e1aac709..013d4d2b13 100644
--- a/crates/hir-def/src/attrs.rs
+++ b/crates/hir-def/src/attrs.rs
@@ -354,13 +354,13 @@ fn attrs_source(
let krate = def_map.krate();
let (definition, declaration, extra_crate_attrs) = match def_map[id].origin {
ModuleOrigin::CrateRoot { definition } => {
- let definition_source = db.parse(definition).tree();
+ let definition_source = definition.parse(db).tree();
let definition = InFile::new(definition.into(), definition_source.into());
let extra_crate_attrs = parse_extra_crate_attrs(db, krate);
(definition, None, extra_crate_attrs)
}
ModuleOrigin::File { declaration, declaration_tree_id, definition, .. } => {
- let definition_source = db.parse(definition).tree();
+ let definition_source = definition.parse(db).tree();
let definition = InFile::new(definition.into(), definition_source.into());
let declaration = InFile::new(declaration_tree_id.file_id(), declaration);
let declaration = declaration.with_value(declaration.to_node(db));
@@ -1069,7 +1069,7 @@ impl AttrFlags {
#[salsa::tracked(returns(ref))]
pub fn doc_html_root_url(db: &dyn DefDatabase, krate: Crate) -> Option<SmolStr> {
let root_file_id = krate.root_file_id(db);
- let syntax = db.parse(root_file_id).tree();
+ let syntax = root_file_id.parse(db).tree();
let extra_crate_attrs =
parse_extra_crate_attrs(db, krate).into_iter().flat_map(|src| src.attrs());
diff --git a/crates/hir-def/src/expr_store/scope.rs b/crates/hir-def/src/expr_store/scope.rs
index 40ae0b7de4..9738ac5c44 100644
--- a/crates/hir-def/src/expr_store/scope.rs
+++ b/crates/hir-def/src/expr_store/scope.rs
@@ -371,7 +371,6 @@ fn compute_expr_scopes(
#[cfg(test)]
mod tests {
- use base_db::RootQueryDb;
use hir_expand::{InFile, name::AsName};
use span::FileId;
use syntax::{AstNode, algo::find_node_at_offset, ast};
@@ -414,7 +413,7 @@ mod tests {
let (file_id, _) = editioned_file_id.unpack(&db);
- let file_syntax = db.parse(editioned_file_id).syntax_node();
+ let file_syntax = editioned_file_id.parse(&db).syntax_node();
let marker: ast::PathExpr = find_node_at_offset(&file_syntax, offset).unwrap();
let function = find_function(&db, file_id);
@@ -570,7 +569,7 @@ fn foo() {
let (file_id, _) = editioned_file_id.unpack(&db);
- let file = db.parse(editioned_file_id).ok().unwrap();
+ let file = editioned_file_id.parse(&db).ok().unwrap();
let expected_name = find_node_at_offset::<ast::Name>(file.syntax(), expected_offset.into())
.expect("failed to find a name at the target offset");
let name_ref: ast::NameRef = find_node_at_offset(file.syntax(), offset).unwrap();
diff --git a/crates/hir-def/src/macro_expansion_tests/mod.rs b/crates/hir-def/src/macro_expansion_tests/mod.rs
index 8317c56caf..eabdada67c 100644
--- a/crates/hir-def/src/macro_expansion_tests/mod.rs
+++ b/crates/hir-def/src/macro_expansion_tests/mod.rs
@@ -16,7 +16,6 @@ mod proc_macros;
use std::{any::TypeId, iter, ops::Range, sync};
-use base_db::RootQueryDb;
use expect_test::Expect;
use hir_expand::{
AstId, ExpansionInfo, InFile, MacroCallId, MacroCallKind, MacroKind,
@@ -75,7 +74,7 @@ fn check_errors(#[rust_analyzer::rust_fixture] ra_fixture: &str, expect: Expect)
let editioned_file_id =
ast_id.file_id.file_id().expect("macros inside macros are not supported");
- let ast = db.parse(editioned_file_id).syntax_node();
+ let ast = editioned_file_id.parse(&db).syntax_node();
let ast_id_map = db.ast_id_map(ast_id.file_id);
let node = ast_id_map.get_erased(ast_id.value).to_node(&ast);
Some((node.text_range(), errors))
diff --git a/crates/hir-def/src/nameres.rs b/crates/hir-def/src/nameres.rs
index 5fda1beab4..56b3f03f7b 100644
--- a/crates/hir-def/src/nameres.rs
+++ b/crates/hir-def/src/nameres.rs
@@ -346,7 +346,7 @@ impl ModuleOrigin {
match self {
&ModuleOrigin::File { definition: editioned_file_id, .. }
| &ModuleOrigin::CrateRoot { definition: editioned_file_id } => {
- let sf = db.parse(editioned_file_id).tree();
+ let sf = editioned_file_id.parse(db).tree();
InFile::new(editioned_file_id.into(), ModuleSource::SourceFile(sf))
}
&ModuleOrigin::Inline { definition, definition_tree_id } => InFile::new(
diff --git a/crates/hir-def/src/test_db.rs b/crates/hir-def/src/test_db.rs
index 0d260279f9..a616ef5b3f 100644
--- a/crates/hir-def/src/test_db.rs
+++ b/crates/hir-def/src/test_db.rs
@@ -288,7 +288,7 @@ impl TestDB {
let source_map = &Body::with_source_map(self, def_with_body).1;
let scopes = ExprScopes::body_expr_scopes(self, def_with_body);
- let root_syntax_node = self.parse(file_id).syntax_node();
+ let root_syntax_node = file_id.parse(self).syntax_node();
let scope_iter =
algo::ancestors_at_offset(&root_syntax_node, position.offset).filter_map(|node| {
let block = ast::BlockExpr::cast(node)?;
diff --git a/crates/hir-expand/src/builtin/fn_macro.rs b/crates/hir-expand/src/builtin/fn_macro.rs
index b3572a1cef..9962677a9d 100644
--- a/crates/hir-expand/src/builtin/fn_macro.rs
+++ b/crates/hir-expand/src/builtin/fn_macro.rs
@@ -828,7 +828,7 @@ fn include_expand(
let span_map = db.real_span_map(editioned_file_id);
// FIXME: Parse errors
ExpandResult::ok(syntax_node_to_token_tree(
- &db.parse(editioned_file_id).syntax_node(),
+ &editioned_file_id.parse(db).syntax_node(),
SpanMap::RealSpanMap(span_map),
span,
syntax_bridge::DocCommentDesugarMode::ProcMacro,
diff --git a/crates/hir-expand/src/db.rs b/crates/hir-expand/src/db.rs
index 020731cf9a..0c1c22fcb1 100644
--- a/crates/hir-expand/src/db.rs
+++ b/crates/hir-expand/src/db.rs
@@ -343,7 +343,7 @@ fn ast_id_map(db: &dyn ExpandDatabase, file_id: HirFileId) -> AstIdMap {
/// file or a macro expansion.
fn parse_or_expand(db: &dyn ExpandDatabase, file_id: HirFileId) -> SyntaxNode {
match file_id {
- HirFileId::FileId(file_id) => db.parse(file_id).syntax_node(),
+ HirFileId::FileId(file_id) => file_id.parse(db).syntax_node(),
HirFileId::MacroFile(macro_file) => {
db.parse_macro_expansion(macro_file).value.0.syntax_node()
}
@@ -389,7 +389,7 @@ pub(crate) fn parse_with_map(
) -> (Parse<SyntaxNode>, SpanMap) {
match file_id {
HirFileId::FileId(file_id) => {
- (db.parse(file_id).to_syntax(), SpanMap::RealSpanMap(db.real_span_map(file_id)))
+ (file_id.parse(db).to_syntax(), SpanMap::RealSpanMap(db.real_span_map(file_id)))
}
HirFileId::MacroFile(macro_file) => {
let (parse, map) = db.parse_macro_expansion(macro_file).value;
diff --git a/crates/hir-expand/src/files.rs b/crates/hir-expand/src/files.rs
index fce92c8a3e..71da560b15 100644
--- a/crates/hir-expand/src/files.rs
+++ b/crates/hir-expand/src/files.rs
@@ -198,7 +198,7 @@ trait FileIdToSyntax: Copy {
impl FileIdToSyntax for EditionedFileId {
fn file_syntax(self, db: &dyn db::ExpandDatabase) -> SyntaxNode {
- db.parse(self).syntax_node()
+ self.parse(db).syntax_node()
}
}
impl FileIdToSyntax for MacroCallId {
@@ -333,8 +333,8 @@ impl<SN: Borrow<SyntaxNode>> InFile<SN> {
)?;
let kind = self.kind();
- let value = db
- .parse(editioned_file_id)
+ let value = editioned_file_id
+ .parse(db)
.syntax_node()
.covering_element(range)
.ancestors()
@@ -521,7 +521,7 @@ impl<N: AstNode> InFile<N> {
)?;
// FIXME: This heuristic is brittle and with the right macro may select completely unrelated nodes?
- let anc = db.parse(editioned_file_id).syntax_node().covering_element(range);
+ let anc = editioned_file_id.parse(db).syntax_node().covering_element(range);
let value = anc.ancestors().find_map(N::cast)?;
Some(InRealFile::new(editioned_file_id, value))
}
diff --git a/crates/hir-expand/src/span_map.rs b/crates/hir-expand/src/span_map.rs
index 71d0b880ca..aa8603341b 100644
--- a/crates/hir-expand/src/span_map.rs
+++ b/crates/hir-expand/src/span_map.rs
@@ -86,7 +86,7 @@ pub(crate) fn real_span_map(
let mut pairs = vec![(syntax::TextSize::new(0), span::ROOT_ERASED_FILE_AST_ID)];
let ast_id_map = db.ast_id_map(editioned_file_id.into());
- let tree = db.parse(editioned_file_id).tree();
+ let tree = editioned_file_id.parse(db).tree();
// This is an incrementality layer. Basically we can't use absolute ranges for our spans as that
// would mean we'd invalidate everything whenever we type. So instead we make the text ranges
// relative to some AstIds reducing the risk of invalidation as typing somewhere no longer
diff --git a/crates/hir/src/semantics.rs b/crates/hir/src/semantics.rs
index 4e9e3c44be..65c6282f64 100644
--- a/crates/hir/src/semantics.rs
+++ b/crates/hir/src/semantics.rs
@@ -458,7 +458,7 @@ impl<'db> SemanticsImpl<'db> {
pub fn parse(&self, file_id: EditionedFileId) -> ast::SourceFile {
let hir_file_id = file_id.into();
- let tree = self.db.parse(file_id).tree();
+ let tree = file_id.parse(self.db).tree();
self.cache(tree.syntax().clone(), hir_file_id);
tree
}
@@ -484,7 +484,7 @@ impl<'db> SemanticsImpl<'db> {
pub fn parse_guess_edition(&self, file_id: FileId) -> ast::SourceFile {
let file_id = self.attach_first_edition(file_id);
- let tree = self.db.parse(file_id).tree();
+ let tree = file_id.parse(self.db).tree();
self.cache(tree.syntax().clone(), file_id.into());
tree
}
@@ -2461,7 +2461,7 @@ fn macro_call_to_macro_id(
Either::Left(it) => {
let node = match it.file_id {
HirFileId::FileId(file_id) => {
- it.to_ptr(db).to_node(&db.parse(file_id).syntax_node())
+ it.to_ptr(db).to_node(&file_id.parse(db).syntax_node())
}
HirFileId::MacroFile(macro_file) => {
let expansion_info = ctx.cache.get_or_insert_expansion(ctx.db, macro_file);
@@ -2473,7 +2473,7 @@ fn macro_call_to_macro_id(
Either::Right(it) => {
let node = match it.file_id {
HirFileId::FileId(file_id) => {
- it.to_ptr(db).to_node(&db.parse(file_id).syntax_node())
+ it.to_ptr(db).to_node(&file_id.parse(db).syntax_node())
}
HirFileId::MacroFile(macro_file) => {
let expansion_info = ctx.cache.get_or_insert_expansion(ctx.db, macro_file);
diff --git a/crates/ide-completion/src/context.rs b/crates/ide-completion/src/context.rs
index 4fd0348156..4038eef3ec 100644
--- a/crates/ide-completion/src/context.rs
+++ b/crates/ide-completion/src/context.rs
@@ -715,7 +715,7 @@ impl<'db> CompletionContext<'db> {
// actual completion.
let file_with_fake_ident = {
let (_, edition) = editioned_file_id.unpack(db);
- let parse = db.parse(editioned_file_id);
+ let parse = editioned_file_id.parse(db);
parse.reparse(TextRange::empty(offset), COMPLETION_MARKER, edition).tree()
};
diff --git a/crates/ide-diagnostics/src/lib.rs b/crates/ide-diagnostics/src/lib.rs
index 0c6953419f..cc6bcb532a 100644
--- a/crates/ide-diagnostics/src/lib.rs
+++ b/crates/ide-diagnostics/src/lib.rs
@@ -303,7 +303,8 @@ pub fn syntax_diagnostics(
let (file_id, _) = editioned_file_id.unpack(db);
// [#3434] Only take first 128 errors to prevent slowing down editor/ide, the number 128 is chosen arbitrarily.
- db.parse_errors(editioned_file_id)
+ editioned_file_id
+ .parse_errors(db)
.into_iter()
.flatten()
.take(128)
@@ -375,7 +376,7 @@ pub fn semantic_diagnostics(
// A bunch of parse errors in a file indicate some bigger structural parse changes in the
// file, so we skip semantic diagnostics so we can show these faster.
Some(m) => {
- if db.parse_errors(editioned_file_id).is_none_or(|es| es.len() < 16) {
+ if editioned_file_id.parse_errors(db).is_none_or(|es| es.len() < 16) {
m.diagnostics(db, &mut diags, config.style_lints);
}
}
diff --git a/crates/ide-ssr/src/from_comment.rs b/crates/ide-ssr/src/from_comment.rs
index 181cc74a51..83b8c3dc81 100644
--- a/crates/ide-ssr/src/from_comment.rs
+++ b/crates/ide-ssr/src/from_comment.rs
@@ -1,7 +1,7 @@
//! This module allows building an SSR MatchFinder by parsing the SSR rule
//! from a comment.
-use ide_db::{EditionedFileId, FilePosition, FileRange, RootDatabase, base_db::RootQueryDb};
+use ide_db::{EditionedFileId, FilePosition, FileRange, RootDatabase};
use syntax::{
TextRange,
ast::{self, AstNode, AstToken},
@@ -19,7 +19,7 @@ pub fn ssr_from_comment(
let comment = {
let file_id = EditionedFileId::current_edition(db, frange.file_id);
- let file = db.parse(file_id);
+ let file = file_id.parse(db);
file.tree().syntax().token_at_offset(frange.range.start()).find_map(ast::Comment::cast)
}?;
let comment_text_without_prefix = comment.text().strip_prefix(comment.prefix()).unwrap();
diff --git a/crates/ide/src/lib.rs b/crates/ide/src/lib.rs
index 196ada2a6e..610420bc2b 100644
--- a/crates/ide/src/lib.rs
+++ b/crates/ide/src/lib.rs
@@ -342,7 +342,7 @@ impl Analysis {
self.with_db(|db| {
let editioned_file_id_wrapper = EditionedFileId::current_edition(&self.db, file_id);
- db.parse(editioned_file_id_wrapper).tree()
+ editioned_file_id_wrapper.parse(db).tree()
})
}
@@ -370,7 +370,7 @@ impl Analysis {
pub fn matching_brace(&self, position: FilePosition) -> Cancellable<Option<TextSize>> {
self.with_db(|db| {
let file_id = EditionedFileId::current_edition(&self.db, position.file_id);
- let parse = db.parse(file_id);
+ let parse = file_id.parse(db);
let file = parse.tree();
matching_brace::matching_brace(&file, position.offset)
})
@@ -431,7 +431,7 @@ impl Analysis {
self.with_db(|db| {
let editioned_file_id_wrapper =
EditionedFileId::current_edition(&self.db, frange.file_id);
- let parse = db.parse(editioned_file_id_wrapper);
+ let parse = editioned_file_id_wrapper.parse(db);
join_lines::join_lines(config, &parse.tree(), frange.range)
})
}
@@ -472,7 +472,7 @@ impl Analysis {
// FIXME: Edition
self.with_db(|db| {
let editioned_file_id_wrapper = EditionedFileId::current_edition(&self.db, file_id);
- let source_file = db.parse(editioned_file_id_wrapper).tree();
+ let source_file = editioned_file_id_wrapper.parse(db).tree();
file_structure::file_structure(&source_file, config)
})
}
@@ -505,7 +505,7 @@ impl Analysis {
let editioned_file_id_wrapper = EditionedFileId::current_edition(&self.db, file_id);
folding_ranges::folding_ranges(
- &db.parse(editioned_file_id_wrapper).tree(),
+ &editioned_file_id_wrapper.parse(db).tree(),
collapsed_text,
)
})
diff --git a/crates/ide/src/typing.rs b/crates/ide/src/typing.rs
index e8b0c92dcb..9c8782cdb2 100644
--- a/crates/ide/src/typing.rs
+++ b/crates/ide/src/typing.rs
@@ -76,7 +76,7 @@ pub(crate) fn on_char_typed(
.copied()
.map_or(Edition::CURRENT, |krate| krate.data(db).edition);
let editioned_file_id_wrapper = EditionedFileId::new(db, position.file_id, edition);
- let file = &db.parse(editioned_file_id_wrapper);
+ let file = &editioned_file_id_wrapper.parse(db);
let char_matches_position =
file.tree().syntax().text().char_at(position.offset) == Some(char_typed);
if !stdx::always!(char_matches_position) {
diff --git a/crates/ide/src/typing/on_enter.rs b/crates/ide/src/typing/on_enter.rs
index fdc583a15c..82f1278398 100644
--- a/crates/ide/src/typing/on_enter.rs
+++ b/crates/ide/src/typing/on_enter.rs
@@ -1,7 +1,6 @@
//! Handles the `Enter` key press. At the momently, this only continues
//! comments, but should handle indent some time in the future as well.
-use ide_db::base_db::RootQueryDb;
use ide_db::{FilePosition, RootDatabase};
use syntax::{
AstNode, SmolStr, SourceFile,
@@ -52,7 +51,7 @@ use ide_db::text_edit::TextEdit;
pub(crate) fn on_enter(db: &RootDatabase, position: FilePosition) -> Option<TextEdit> {
let editioned_file_id_wrapper =
ide_db::base_db::EditionedFileId::current_edition(db, position.file_id);
- let parse = db.parse(editioned_file_id_wrapper);
+ let parse = editioned_file_id_wrapper.parse(db);
let file = parse.tree();
let token = file.syntax().token_at_offset(position.offset).left_biased()?;