From 4b29847544742fe6dd16eb562d4e28feb80ca027 Mon Sep 17 00:00:00 2001 From: Chayim Refael Friedman Date: Thu, 23 Oct 2025 19:39:45 +0300 Subject: [PATCH] Make `Semantics::attach_first_edition()` not return `Option` And instead call `EditionedFileId::current_edition_guess_origin`, as most callers do it anyway. --- src/tools/rust-analyzer/crates/hir/src/semantics.rs | 13 ++++++++----- .../rust-analyzer/crates/ide-assists/src/lib.rs | 6 ++---- .../rust-analyzer/crates/ide-assists/src/tests.rs | 5 +++-- .../crates/ide-completion/src/context.rs | 2 +- .../rust-analyzer/crates/ide-completion/src/lib.rs | 2 +- .../rust-analyzer/crates/ide-diagnostics/src/lib.rs | 10 +++------- src/tools/rust-analyzer/crates/ide-ssr/src/lib.rs | 4 +--- .../rust-analyzer/crates/ide-ssr/src/search.rs | 6 ++---- .../rust-analyzer/crates/ide/src/expand_macro.rs | 2 +- .../rust-analyzer/crates/ide/src/goto_definition.rs | 5 ++--- .../crates/ide/src/highlight_related.rs | 4 +--- src/tools/rust-analyzer/crates/ide/src/hover.rs | 3 +-- .../rust-analyzer/crates/ide/src/inlay_hints.rs | 8 ++------ .../rust-analyzer/crates/ide/src/references.rs | 6 +----- src/tools/rust-analyzer/crates/ide/src/rename.rs | 2 +- .../rust-analyzer/crates/ide/src/signature_help.rs | 3 +-- .../rust-analyzer/crates/ide/src/static_index.rs | 6 +----- .../crates/ide/src/syntax_highlighting.rs | 4 +--- .../crates/ide/src/syntax_highlighting/html.rs | 6 ++---- .../rust-analyzer/crates/ide/src/view_item_tree.rs | 6 ++---- .../rust-analyzer/src/cli/unresolved_references.rs | 8 ++------ 21 files changed, 39 insertions(+), 72 deletions(-) diff --git a/src/tools/rust-analyzer/crates/hir/src/semantics.rs b/src/tools/rust-analyzer/crates/hir/src/semantics.rs index 8cd218f04e12..3d4859424f9f 100644 --- a/src/tools/rust-analyzer/crates/hir/src/semantics.rs +++ b/src/tools/rust-analyzer/crates/hir/src/semantics.rs @@ -384,15 +384,18 @@ pub fn first_crate(&self, file: FileId) -> Option { } } - pub fn attach_first_edition(&self, file: FileId) -> Option { + pub fn attach_first_edition_opt(&self, file: FileId) -> Option { let krate = self.file_to_module_defs(file).next()?.krate(); Some(EditionedFileId::new(self.db, file, krate.edition(self.db), krate.id)) } + pub fn attach_first_edition(&self, file: FileId) -> EditionedFileId { + self.attach_first_edition_opt(file) + .unwrap_or_else(|| EditionedFileId::current_edition_guess_origin(self.db, file)) + } + pub fn parse_guess_edition(&self, file_id: FileId) -> ast::SourceFile { - let file_id = self - .attach_first_edition(file_id) - .unwrap_or_else(|| EditionedFileId::current_edition_guess_origin(self.db, file_id)); + let file_id = self.attach_first_edition(file_id); let tree = self.db.parse(file_id).tree(); self.cache(tree.syntax().clone(), file_id.into()); @@ -401,7 +404,7 @@ pub fn parse_guess_edition(&self, file_id: FileId) -> ast::SourceFile { pub fn adjust_edition(&self, file_id: HirFileId) -> HirFileId { if let Some(editioned_file_id) = file_id.file_id() { - self.attach_first_edition(editioned_file_id.file_id(self.db)) + self.attach_first_edition_opt(editioned_file_id.file_id(self.db)) .map_or(file_id, Into::into) } else { file_id diff --git a/src/tools/rust-analyzer/crates/ide-assists/src/lib.rs b/src/tools/rust-analyzer/crates/ide-assists/src/lib.rs index 8f754bcf21cd..0b5dae6bc413 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/lib.rs +++ b/src/tools/rust-analyzer/crates/ide-assists/src/lib.rs @@ -67,7 +67,7 @@ pub mod utils; use hir::Semantics; -use ide_db::{EditionedFileId, RootDatabase}; +use ide_db::RootDatabase; use syntax::TextRange; pub(crate) use crate::assist_context::{AssistContext, Assists}; @@ -88,9 +88,7 @@ pub fn assists( range: ide_db::FileRange, ) -> Vec { let sema = Semantics::new(db); - let file_id = sema - .attach_first_edition(range.file_id) - .unwrap_or_else(|| EditionedFileId::current_edition_guess_origin(db, range.file_id)); + let file_id = sema.attach_first_edition(range.file_id); let ctx = AssistContext::new(sema, config, hir::FileRange { file_id, range: range.range }); let mut acc = Assists::new(&ctx, resolve); handlers::all().iter().for_each(|handler| { diff --git a/src/tools/rust-analyzer/crates/ide-assists/src/tests.rs b/src/tools/rust-analyzer/crates/ide-assists/src/tests.rs index 2e220b129fe1..c9044fe1112b 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/tests.rs +++ b/src/tools/rust-analyzer/crates/ide-assists/src/tests.rs @@ -322,8 +322,9 @@ fn check_with_config( let (mut db, file_with_caret_id, range_or_offset) = RootDatabase::with_range_or_offset(before); db.enable_proc_attr_macros(); let sema = Semantics::new(&db); - let file_with_caret_id = - sema.attach_first_edition(file_with_caret_id.file_id(&db)).unwrap_or(file_with_caret_id); + let file_with_caret_id = sema + .attach_first_edition_opt(file_with_caret_id.file_id(&db)) + .unwrap_or(file_with_caret_id); let text_without_caret = db.file_text(file_with_caret_id.file_id(&db)).text(&db).to_string(); let frange = hir::FileRange { file_id: file_with_caret_id, range: range_or_offset.into() }; diff --git a/src/tools/rust-analyzer/crates/ide-completion/src/context.rs b/src/tools/rust-analyzer/crates/ide-completion/src/context.rs index 971067d4a2bb..ffffc2635e03 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/context.rs +++ b/src/tools/rust-analyzer/crates/ide-completion/src/context.rs @@ -707,7 +707,7 @@ pub(crate) fn new( let _p = tracing::info_span!("CompletionContext::new").entered(); let sema = Semantics::new(db); - let editioned_file_id = sema.attach_first_edition(file_id)?; + let editioned_file_id = sema.attach_first_edition(file_id); let original_file = sema.parse(editioned_file_id); // Insert a fake ident to get a valid parse tree. We will use this file diff --git a/src/tools/rust-analyzer/crates/ide-completion/src/lib.rs b/src/tools/rust-analyzer/crates/ide-completion/src/lib.rs index 8a0aaf3f0cc2..f7a118db5060 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/lib.rs +++ b/src/tools/rust-analyzer/crates/ide-completion/src/lib.rs @@ -274,7 +274,7 @@ pub fn resolve_completion_edits( let _p = tracing::info_span!("resolve_completion_edits").entered(); let sema = hir::Semantics::new(db); - let editioned_file_id = sema.attach_first_edition(file_id)?; + let editioned_file_id = sema.attach_first_edition(file_id); let original_file = sema.parse(editioned_file_id); let original_token = diff --git a/src/tools/rust-analyzer/crates/ide-diagnostics/src/lib.rs b/src/tools/rust-analyzer/crates/ide-diagnostics/src/lib.rs index 5c8f030de4de..41ae85445569 100644 --- a/src/tools/rust-analyzer/crates/ide-diagnostics/src/lib.rs +++ b/src/tools/rust-analyzer/crates/ide-diagnostics/src/lib.rs @@ -90,7 +90,7 @@ mod handlers { Crate, DisplayTarget, InFile, Semantics, db::ExpandDatabase, diagnostics::AnyDiagnostic, }; use ide_db::{ - EditionedFileId, FileId, FileRange, FxHashMap, FxHashSet, RootDatabase, Severity, SnippetCap, + FileId, FileRange, FxHashMap, FxHashSet, RootDatabase, Severity, SnippetCap, assists::{Assist, AssistId, AssistResolveStrategy, ExprFillDefaultMode}, base_db::{ReleaseChannel, RootQueryDb as _}, generated::lints::{CLIPPY_LINT_GROUPS, DEFAULT_LINT_GROUPS, DEFAULT_LINTS, Lint, LintGroup}, @@ -290,9 +290,7 @@ pub fn syntax_diagnostics( } let sema = Semantics::new(db); - let editioned_file_id = sema - .attach_first_edition(file_id) - .unwrap_or_else(|| EditionedFileId::current_edition_guess_origin(db, file_id)); + let editioned_file_id = sema.attach_first_edition(file_id); let (file_id, _) = editioned_file_id.unpack(db); @@ -321,9 +319,7 @@ pub fn semantic_diagnostics( ) -> Vec { let _p = tracing::info_span!("semantic_diagnostics").entered(); let sema = Semantics::new(db); - let editioned_file_id = sema - .attach_first_edition(file_id) - .unwrap_or_else(|| EditionedFileId::current_edition_guess_origin(db, file_id)); + let editioned_file_id = sema.attach_first_edition(file_id); let (file_id, edition) = editioned_file_id.unpack(db); let mut res = Vec::new(); diff --git a/src/tools/rust-analyzer/crates/ide-ssr/src/lib.rs b/src/tools/rust-analyzer/crates/ide-ssr/src/lib.rs index 7086e978dd6c..977dfb7466e4 100644 --- a/src/tools/rust-analyzer/crates/ide-ssr/src/lib.rs +++ b/src/tools/rust-analyzer/crates/ide-ssr/src/lib.rs @@ -125,9 +125,7 @@ pub fn in_context( ) -> Result, SsrError> { restrict_ranges.retain(|range| !range.range.is_empty()); let sema = Semantics::new(db); - let file_id = sema.attach_first_edition(lookup_context.file_id).unwrap_or_else(|| { - EditionedFileId::current_edition_guess_origin(db, lookup_context.file_id) - }); + let file_id = sema.attach_first_edition(lookup_context.file_id); let resolution_scope = resolving::ResolutionScope::new( &sema, hir::FilePosition { file_id, offset: lookup_context.offset }, diff --git a/src/tools/rust-analyzer/crates/ide-ssr/src/search.rs b/src/tools/rust-analyzer/crates/ide-ssr/src/search.rs index 5700428b8196..5f54c66d3c2a 100644 --- a/src/tools/rust-analyzer/crates/ide-ssr/src/search.rs +++ b/src/tools/rust-analyzer/crates/ide-ssr/src/search.rs @@ -6,7 +6,7 @@ }; use hir::FileRange; use ide_db::{ - EditionedFileId, FileId, FxHashSet, + FileId, FxHashSet, defs::Definition, search::{SearchScope, UsageSearchResult}, symbol_index::LocalRoots, @@ -136,9 +136,7 @@ fn search_scope(&self) -> SearchScope { // seems to get put into a single source root. let mut files = Vec::new(); self.search_files_do(|file_id| { - files.push(self.sema.attach_first_edition(file_id).unwrap_or_else(|| { - EditionedFileId::current_edition_guess_origin(self.sema.db, file_id) - })); + files.push(self.sema.attach_first_edition(file_id)); }); SearchScope::files(&files) } diff --git a/src/tools/rust-analyzer/crates/ide/src/expand_macro.rs b/src/tools/rust-analyzer/crates/ide/src/expand_macro.rs index 094a4a7036c4..9d38a860a08d 100644 --- a/src/tools/rust-analyzer/crates/ide/src/expand_macro.rs +++ b/src/tools/rust-analyzer/crates/ide/src/expand_macro.rs @@ -26,7 +26,7 @@ pub struct ExpandedMacro { // ![Expand Macro Recursively](https://user-images.githubusercontent.com/48062697/113020648-b3973180-917a-11eb-84a9-ecb921293dc5.gif) pub(crate) fn expand_macro(db: &RootDatabase, position: FilePosition) -> Option { let sema = Semantics::new(db); - let file_id = sema.attach_first_edition(position.file_id)?; + let file_id = sema.attach_first_edition(position.file_id); let file = sema.parse(file_id); let krate = sema.file_to_module_def(file_id.file_id(db))?.krate().into(); diff --git a/src/tools/rust-analyzer/crates/ide/src/goto_definition.rs b/src/tools/rust-analyzer/crates/ide/src/goto_definition.rs index d663b703c3a1..e1db370d4462 100644 --- a/src/tools/rust-analyzer/crates/ide/src/goto_definition.rs +++ b/src/tools/rust-analyzer/crates/ide/src/goto_definition.rs @@ -18,7 +18,7 @@ helpers::pick_best_token, }; use itertools::Itertools; -use span::{Edition, FileId}; +use span::FileId; use syntax::{ AstNode, AstToken, SyntaxKind::*, @@ -50,8 +50,7 @@ pub(crate) fn goto_definition( ) -> Option>> { let sema = &Semantics::new(db); let file = sema.parse_guess_edition(file_id).syntax().clone(); - let edition = - sema.attach_first_edition(file_id).map(|it| it.edition(db)).unwrap_or(Edition::CURRENT); + let edition = sema.attach_first_edition(file_id).edition(db); let original_token = pick_best_token(file.token_at_offset(offset), |kind| match kind { IDENT | INT_NUMBER diff --git a/src/tools/rust-analyzer/crates/ide/src/highlight_related.rs b/src/tools/rust-analyzer/crates/ide/src/highlight_related.rs index f7870032ea28..acba573cc00e 100644 --- a/src/tools/rust-analyzer/crates/ide/src/highlight_related.rs +++ b/src/tools/rust-analyzer/crates/ide/src/highlight_related.rs @@ -60,9 +60,7 @@ pub(crate) fn highlight_related( ide_db::FilePosition { offset, file_id }: ide_db::FilePosition, ) -> Option> { let _p = tracing::info_span!("highlight_related").entered(); - let file_id = sema - .attach_first_edition(file_id) - .unwrap_or_else(|| EditionedFileId::current_edition_guess_origin(sema.db, file_id)); + let file_id = sema.attach_first_edition(file_id); let syntax = sema.parse(file_id).syntax().clone(); let token = pick_best_token(syntax.token_at_offset(offset), |kind| match kind { diff --git a/src/tools/rust-analyzer/crates/ide/src/hover.rs b/src/tools/rust-analyzer/crates/ide/src/hover.rs index dae2136f256b..958de8930d8a 100644 --- a/src/tools/rust-analyzer/crates/ide/src/hover.rs +++ b/src/tools/rust-analyzer/crates/ide/src/hover.rs @@ -135,8 +135,7 @@ pub(crate) fn hover( ) -> Option> { let sema = &hir::Semantics::new(db); let file = sema.parse_guess_edition(file_id).syntax().clone(); - let edition = - sema.attach_first_edition(file_id).map(|it| it.edition(db)).unwrap_or(Edition::CURRENT); + let edition = sema.attach_first_edition(file_id).edition(db); let display_target = sema.first_crate(file_id)?.to_display_target(db); let mut res = if range.is_empty() { hover_offset( diff --git a/src/tools/rust-analyzer/crates/ide/src/inlay_hints.rs b/src/tools/rust-analyzer/crates/ide/src/inlay_hints.rs index 155d6b52f1db..deacc7fafbc0 100644 --- a/src/tools/rust-analyzer/crates/ide/src/inlay_hints.rs +++ b/src/tools/rust-analyzer/crates/ide/src/inlay_hints.rs @@ -89,9 +89,7 @@ pub(crate) fn inlay_hints( ) -> Vec { let _p = tracing::info_span!("inlay_hints").entered(); let sema = Semantics::new(db); - let file_id = sema - .attach_first_edition(file_id) - .unwrap_or_else(|| EditionedFileId::current_edition_guess_origin(db, file_id)); + let file_id = sema.attach_first_edition(file_id); let file = sema.parse(file_id); let file = file.syntax(); @@ -142,9 +140,7 @@ pub(crate) fn inlay_hints_resolve( ) -> Option { let _p = tracing::info_span!("inlay_hints_resolve").entered(); let sema = Semantics::new(db); - let file_id = sema - .attach_first_edition(file_id) - .unwrap_or_else(|| EditionedFileId::current_edition_guess_origin(db, file_id)); + let file_id = sema.attach_first_edition(file_id); let file = sema.parse(file_id); let file = file.syntax(); diff --git a/src/tools/rust-analyzer/crates/ide/src/references.rs b/src/tools/rust-analyzer/crates/ide/src/references.rs index 6bd60e2a1349..0738b7fadcc1 100644 --- a/src/tools/rust-analyzer/crates/ide/src/references.rs +++ b/src/tools/rust-analyzer/crates/ide/src/references.rs @@ -28,7 +28,6 @@ use itertools::Itertools; use macros::UpmapFromRaFixture; use nohash_hasher::IntMap; -use span::Edition; use syntax::AstToken; use syntax::{ AstNode, @@ -419,10 +418,7 @@ fn handle_control_flow_keywords( FilePosition { file_id, offset }: FilePosition, ) -> Option { let file = sema.parse_guess_edition(file_id); - let edition = sema - .attach_first_edition(file_id) - .map(|it| it.edition(sema.db)) - .unwrap_or(Edition::CURRENT); + let edition = sema.attach_first_edition(file_id).edition(sema.db); let token = pick_best_token(file.syntax().token_at_offset(offset), |kind| match kind { _ if kind.is_keyword(edition) => 4, T![=>] => 3, diff --git a/src/tools/rust-analyzer/crates/ide/src/rename.rs b/src/tools/rust-analyzer/crates/ide/src/rename.rs index ce5963919d9a..7955e9b6e782 100644 --- a/src/tools/rust-analyzer/crates/ide/src/rename.rs +++ b/src/tools/rust-analyzer/crates/ide/src/rename.rs @@ -121,7 +121,7 @@ pub(crate) fn rename( ) -> RenameResult { let sema = Semantics::new(db); let file_id = sema - .attach_first_edition(position.file_id) + .attach_first_edition_opt(position.file_id) .ok_or_else(|| format_err!("No references found at position"))?; let source_file = sema.parse(file_id); let syntax = source_file.syntax(); diff --git a/src/tools/rust-analyzer/crates/ide/src/signature_help.rs b/src/tools/rust-analyzer/crates/ide/src/signature_help.rs index 9c3204c1996c..78dc3f7e862c 100644 --- a/src/tools/rust-analyzer/crates/ide/src/signature_help.rs +++ b/src/tools/rust-analyzer/crates/ide/src/signature_help.rs @@ -84,8 +84,7 @@ pub(crate) fn signature_help( // this prevents us from leaving the CallExpression .and_then(|tok| algo::skip_trivia_token(tok, Direction::Prev))?; let token = sema.descend_into_macros_single_exact(token); - let edition = - sema.attach_first_edition(file_id).map(|it| it.edition(db)).unwrap_or(Edition::CURRENT); + let edition = sema.attach_first_edition(file_id).edition(db); let display_target = sema.first_crate(file_id)?.to_display_target(db); for node in token.parent_ancestors() { diff --git a/src/tools/rust-analyzer/crates/ide/src/static_index.rs b/src/tools/rust-analyzer/crates/ide/src/static_index.rs index 7dc91fbc9e63..0cf2e15bc6f0 100644 --- a/src/tools/rust-analyzer/crates/ide/src/static_index.rs +++ b/src/tools/rust-analyzer/crates/ide/src/static_index.rs @@ -10,7 +10,6 @@ documentation::Documentation, famous_defs::FamousDefs, }; -use span::Edition; use syntax::{AstNode, SyntaxKind::*, SyntaxNode, SyntaxToken, T, TextRange}; use crate::navigation_target::UpmappingResult; @@ -204,10 +203,7 @@ fn add_file(&mut self, file_id: FileId) { // hovers let sema = hir::Semantics::new(self.db); let root = sema.parse_guess_edition(file_id).syntax().clone(); - let edition = sema - .attach_first_edition(file_id) - .map(|it| it.edition(self.db)) - .unwrap_or(Edition::CURRENT); + let edition = sema.attach_first_edition(file_id).edition(sema.db); let display_target = match sema.first_crate(file_id) { Some(krate) => krate.to_display_target(sema.db), None => return, diff --git a/src/tools/rust-analyzer/crates/ide/src/syntax_highlighting.rs b/src/tools/rust-analyzer/crates/ide/src/syntax_highlighting.rs index 8d0f0c3e68ec..fd5ede865f14 100644 --- a/src/tools/rust-analyzer/crates/ide/src/syntax_highlighting.rs +++ b/src/tools/rust-analyzer/crates/ide/src/syntax_highlighting.rs @@ -197,9 +197,7 @@ pub(crate) fn highlight( ) -> Vec { let _p = tracing::info_span!("highlight").entered(); let sema = Semantics::new(db); - let file_id = sema - .attach_first_edition(file_id) - .unwrap_or_else(|| EditionedFileId::current_edition_guess_origin(db, file_id)); + let file_id = sema.attach_first_edition(file_id); // Determine the root based on the given range. let (root, range_to_highlight) = { diff --git a/src/tools/rust-analyzer/crates/ide/src/syntax_highlighting/html.rs b/src/tools/rust-analyzer/crates/ide/src/syntax_highlighting/html.rs index dae3e69fee0d..74567e82139f 100644 --- a/src/tools/rust-analyzer/crates/ide/src/syntax_highlighting/html.rs +++ b/src/tools/rust-analyzer/crates/ide/src/syntax_highlighting/html.rs @@ -1,6 +1,6 @@ //! Renders a bit of code as HTML. -use hir::{EditionedFileId, Semantics}; +use hir::Semantics; use ide_db::MiniCore; use oorandom::Rand32; use stdx::format_to; @@ -18,9 +18,7 @@ pub(crate) fn highlight_as_html_with_config( rainbow: bool, ) -> String { let sema = Semantics::new(db); - let file_id = sema - .attach_first_edition(file_id) - .unwrap_or_else(|| EditionedFileId::current_edition_guess_origin(db, file_id)); + let file_id = sema.attach_first_edition(file_id); let file = sema.parse(file_id); let file = file.syntax(); fn rainbowify(seed: u64) -> String { diff --git a/src/tools/rust-analyzer/crates/ide/src/view_item_tree.rs b/src/tools/rust-analyzer/crates/ide/src/view_item_tree.rs index c9a2f31696f4..e1a7e4e6ab23 100644 --- a/src/tools/rust-analyzer/crates/ide/src/view_item_tree.rs +++ b/src/tools/rust-analyzer/crates/ide/src/view_item_tree.rs @@ -1,4 +1,4 @@ -use hir::{EditionedFileId, Semantics, db::DefDatabase}; +use hir::{Semantics, db::DefDatabase}; use ide_db::{FileId, RootDatabase}; // Feature: Debug ItemTree @@ -10,8 +10,6 @@ // | VS Code | **rust-analyzer: Debug ItemTree** | pub(crate) fn view_item_tree(db: &RootDatabase, file_id: FileId) -> String { let sema = Semantics::new(db); - let file_id = sema - .attach_first_edition(file_id) - .unwrap_or_else(|| EditionedFileId::current_edition_guess_origin(db, file_id)); + let file_id = sema.attach_first_edition(file_id); db.file_item_tree(file_id.into()).pretty_print(db, file_id.edition(db)) } diff --git a/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/unresolved_references.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/unresolved_references.rs index 2cb0fe9eefad..a400f86778f4 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/unresolved_references.rs +++ b/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/unresolved_references.rs @@ -1,9 +1,7 @@ //! Reports references in code that the IDE layer cannot resolve. use hir::{AnyDiagnostic, Crate, Module, Semantics, db::HirDatabase, sym}; use ide::{AnalysisHost, RootDatabase, TextRange}; -use ide_db::{ - EditionedFileId, FxHashSet, LineIndexDatabase as _, base_db::SourceDatabase, defs::NameRefClass, -}; +use ide_db::{FxHashSet, LineIndexDatabase as _, base_db::SourceDatabase, defs::NameRefClass}; use load_cargo::{LoadCargoConfig, ProcMacroServerChoice, load_workspace_at}; use parser::SyntaxKind; use syntax::{AstNode, WalkEvent, ast}; @@ -139,9 +137,7 @@ fn all_unresolved_references( sema: &Semantics<'_, RootDatabase>, file_id: FileId, ) -> Vec { - let file_id = sema - .attach_first_edition(file_id) - .unwrap_or_else(|| EditionedFileId::current_edition_guess_origin(sema.db, file_id)); + let file_id = sema.attach_first_edition(file_id); let file = sema.parse(file_id); let root = file.syntax();