Skip to content

Commit 1671349

Browse files
Make Semantics::attach_first_edition() not return Option
And instead call `EditionedFileId::current_edition_guess_origin`, as most callers do it anyway.
1 parent bf0d974 commit 1671349

File tree

21 files changed

+39
-72
lines changed

21 files changed

+39
-72
lines changed

crates/hir/src/semantics.rs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -384,15 +384,18 @@ impl<'db> SemanticsImpl<'db> {
384384
}
385385
}
386386

387-
pub fn attach_first_edition(&self, file: FileId) -> Option<EditionedFileId> {
387+
pub fn attach_first_edition_opt(&self, file: FileId) -> Option<EditionedFileId> {
388388
let krate = self.file_to_module_defs(file).next()?.krate();
389389
Some(EditionedFileId::new(self.db, file, krate.edition(self.db), krate.id))
390390
}
391391

392+
pub fn attach_first_edition(&self, file: FileId) -> EditionedFileId {
393+
self.attach_first_edition_opt(file)
394+
.unwrap_or_else(|| EditionedFileId::current_edition_guess_origin(self.db, file))
395+
}
396+
392397
pub fn parse_guess_edition(&self, file_id: FileId) -> ast::SourceFile {
393-
let file_id = self
394-
.attach_first_edition(file_id)
395-
.unwrap_or_else(|| EditionedFileId::current_edition_guess_origin(self.db, file_id));
398+
let file_id = self.attach_first_edition(file_id);
396399

397400
let tree = self.db.parse(file_id).tree();
398401
self.cache(tree.syntax().clone(), file_id.into());
@@ -401,7 +404,7 @@ impl<'db> SemanticsImpl<'db> {
401404

402405
pub fn adjust_edition(&self, file_id: HirFileId) -> HirFileId {
403406
if let Some(editioned_file_id) = file_id.file_id() {
404-
self.attach_first_edition(editioned_file_id.file_id(self.db))
407+
self.attach_first_edition_opt(editioned_file_id.file_id(self.db))
405408
.map_or(file_id, Into::into)
406409
} else {
407410
file_id

crates/ide-assists/src/lib.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ mod tests;
6767
pub mod utils;
6868

6969
use hir::Semantics;
70-
use ide_db::{EditionedFileId, RootDatabase};
70+
use ide_db::RootDatabase;
7171
use syntax::TextRange;
7272

7373
pub(crate) use crate::assist_context::{AssistContext, Assists};
@@ -88,9 +88,7 @@ pub fn assists(
8888
range: ide_db::FileRange,
8989
) -> Vec<Assist> {
9090
let sema = Semantics::new(db);
91-
let file_id = sema
92-
.attach_first_edition(range.file_id)
93-
.unwrap_or_else(|| EditionedFileId::current_edition_guess_origin(db, range.file_id));
91+
let file_id = sema.attach_first_edition(range.file_id);
9492
let ctx = AssistContext::new(sema, config, hir::FileRange { file_id, range: range.range });
9593
let mut acc = Assists::new(&ctx, resolve);
9694
handlers::all().iter().for_each(|handler| {

crates/ide-assists/src/tests.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -322,8 +322,9 @@ fn check_with_config(
322322
let (mut db, file_with_caret_id, range_or_offset) = RootDatabase::with_range_or_offset(before);
323323
db.enable_proc_attr_macros();
324324
let sema = Semantics::new(&db);
325-
let file_with_caret_id =
326-
sema.attach_first_edition(file_with_caret_id.file_id(&db)).unwrap_or(file_with_caret_id);
325+
let file_with_caret_id = sema
326+
.attach_first_edition_opt(file_with_caret_id.file_id(&db))
327+
.unwrap_or(file_with_caret_id);
327328
let text_without_caret = db.file_text(file_with_caret_id.file_id(&db)).text(&db).to_string();
328329

329330
let frange = hir::FileRange { file_id: file_with_caret_id, range: range_or_offset.into() };

crates/ide-completion/src/context.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -713,7 +713,7 @@ impl<'db> CompletionContext<'db> {
713713
let _p = tracing::info_span!("CompletionContext::new").entered();
714714
let sema = Semantics::new(db);
715715

716-
let editioned_file_id = sema.attach_first_edition(file_id)?;
716+
let editioned_file_id = sema.attach_first_edition(file_id);
717717
let original_file = sema.parse(editioned_file_id);
718718

719719
// Insert a fake ident to get a valid parse tree. We will use this file

crates/ide-completion/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ pub fn resolve_completion_edits(
274274
let _p = tracing::info_span!("resolve_completion_edits").entered();
275275
let sema = hir::Semantics::new(db);
276276

277-
let editioned_file_id = sema.attach_first_edition(file_id)?;
277+
let editioned_file_id = sema.attach_first_edition(file_id);
278278

279279
let original_file = sema.parse(editioned_file_id);
280280
let original_token =

crates/ide-diagnostics/src/lib.rs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ use hir::{
9090
Crate, DisplayTarget, InFile, Semantics, db::ExpandDatabase, diagnostics::AnyDiagnostic,
9191
};
9292
use ide_db::{
93-
EditionedFileId, FileId, FileRange, FxHashMap, FxHashSet, RootDatabase, Severity, SnippetCap,
93+
FileId, FileRange, FxHashMap, FxHashSet, RootDatabase, Severity, SnippetCap,
9494
assists::{Assist, AssistId, AssistResolveStrategy, ExprFillDefaultMode},
9595
base_db::{ReleaseChannel, RootQueryDb as _},
9696
generated::lints::{CLIPPY_LINT_GROUPS, DEFAULT_LINT_GROUPS, DEFAULT_LINTS, Lint, LintGroup},
@@ -290,9 +290,7 @@ pub fn syntax_diagnostics(
290290
}
291291

292292
let sema = Semantics::new(db);
293-
let editioned_file_id = sema
294-
.attach_first_edition(file_id)
295-
.unwrap_or_else(|| EditionedFileId::current_edition_guess_origin(db, file_id));
293+
let editioned_file_id = sema.attach_first_edition(file_id);
296294

297295
let (file_id, _) = editioned_file_id.unpack(db);
298296

@@ -321,9 +319,7 @@ pub fn semantic_diagnostics(
321319
) -> Vec<Diagnostic> {
322320
let _p = tracing::info_span!("semantic_diagnostics").entered();
323321
let sema = Semantics::new(db);
324-
let editioned_file_id = sema
325-
.attach_first_edition(file_id)
326-
.unwrap_or_else(|| EditionedFileId::current_edition_guess_origin(db, file_id));
322+
let editioned_file_id = sema.attach_first_edition(file_id);
327323

328324
let (file_id, edition) = editioned_file_id.unpack(db);
329325
let mut res = Vec::new();

crates/ide-ssr/src/lib.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,7 @@ impl<'db> MatchFinder<'db> {
125125
) -> Result<MatchFinder<'db>, SsrError> {
126126
restrict_ranges.retain(|range| !range.range.is_empty());
127127
let sema = Semantics::new(db);
128-
let file_id = sema.attach_first_edition(lookup_context.file_id).unwrap_or_else(|| {
129-
EditionedFileId::current_edition_guess_origin(db, lookup_context.file_id)
130-
});
128+
let file_id = sema.attach_first_edition(lookup_context.file_id);
131129
let resolution_scope = resolving::ResolutionScope::new(
132130
&sema,
133131
hir::FilePosition { file_id, offset: lookup_context.offset },

crates/ide-ssr/src/search.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use crate::{
66
};
77
use hir::FileRange;
88
use ide_db::{
9-
EditionedFileId, FileId, FxHashSet,
9+
FileId, FxHashSet,
1010
defs::Definition,
1111
search::{SearchScope, UsageSearchResult},
1212
};
@@ -135,9 +135,7 @@ impl<'db> MatchFinder<'db> {
135135
// seems to get put into a single source root.
136136
let mut files = Vec::new();
137137
self.search_files_do(|file_id| {
138-
files.push(self.sema.attach_first_edition(file_id).unwrap_or_else(|| {
139-
EditionedFileId::current_edition_guess_origin(self.sema.db, file_id)
140-
}));
138+
files.push(self.sema.attach_first_edition(file_id));
141139
});
142140
SearchScope::files(&files)
143141
}

crates/ide/src/expand_macro.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ pub struct ExpandedMacro {
2626
// ![Expand Macro Recursively](https://user-images.githubusercontent.com/48062697/113020648-b3973180-917a-11eb-84a9-ecb921293dc5.gif)
2727
pub(crate) fn expand_macro(db: &RootDatabase, position: FilePosition) -> Option<ExpandedMacro> {
2828
let sema = Semantics::new(db);
29-
let file_id = sema.attach_first_edition(position.file_id)?;
29+
let file_id = sema.attach_first_edition(position.file_id);
3030
let file = sema.parse(file_id);
3131
let krate = sema.file_to_module_def(file_id.file_id(db))?.krate().into();
3232

crates/ide/src/goto_definition.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use ide_db::{
1818
helpers::pick_best_token,
1919
};
2020
use itertools::Itertools;
21-
use span::{Edition, FileId};
21+
use span::FileId;
2222
use syntax::{
2323
AstNode, AstToken,
2424
SyntaxKind::*,
@@ -50,8 +50,7 @@ pub(crate) fn goto_definition(
5050
) -> Option<RangeInfo<Vec<NavigationTarget>>> {
5151
let sema = &Semantics::new(db);
5252
let file = sema.parse_guess_edition(file_id).syntax().clone();
53-
let edition =
54-
sema.attach_first_edition(file_id).map(|it| it.edition(db)).unwrap_or(Edition::CURRENT);
53+
let edition = sema.attach_first_edition(file_id).edition(db);
5554
let original_token = pick_best_token(file.token_at_offset(offset), |kind| match kind {
5655
IDENT
5756
| INT_NUMBER

0 commit comments

Comments
 (0)