From 27cadcd531c017aa7c78c6f7a36f2b7f2ce8a196 Mon Sep 17 00:00:00 2001 From: Nick Spain Date: Fri, 1 Jan 2021 13:05:28 +1100 Subject: HasSource::source -> HasSource::source_old To start migrating HasSource::source to return an Option. --- crates/assists/src/handlers/fill_match_arms.rs | 2 +- crates/assists/src/handlers/fix_visibility.rs | 4 ++-- crates/assists/src/utils.rs | 6 ++--- crates/completion/src/completions/trait_impl.rs | 4 ++-- crates/completion/src/render/const_.rs | 2 +- crates/completion/src/render/function.rs | 2 +- crates/completion/src/render/macro_.rs | 2 +- crates/completion/src/render/type_alias.rs | 2 +- crates/hir/src/code_model.rs | 4 ++-- crates/hir/src/has_source.rs | 30 ++++++++++++------------- crates/ide/src/diagnostics/fixes.rs | 6 ++--- crates/ide/src/display/navigation_target.rs | 12 +++++----- crates/ide/src/hover.rs | 8 +++---- crates/ide_db/src/search.rs | 24 ++++++++++---------- crates/rust-analyzer/src/cli/analysis_stats.rs | 2 +- 15 files changed, 55 insertions(+), 55 deletions(-) diff --git a/crates/assists/src/handlers/fill_match_arms.rs b/crates/assists/src/handlers/fill_match_arms.rs index cb60a3128..a8efad6d6 100644 --- a/crates/assists/src/handlers/fill_match_arms.rs +++ b/crates/assists/src/handlers/fill_match_arms.rs @@ -196,7 +196,7 @@ fn build_pat(db: &RootDatabase, module: hir::Module, var: hir::Variant) -> Optio let path = mod_path_to_ast(&module.find_use_path(db, ModuleDef::from(var))?); // FIXME: use HIR for this; it doesn't currently expose struct vs. tuple vs. unit variants though - let pat: ast::Pat = match var.source(db).value.kind() { + let pat: ast::Pat = match var.source_old(db).value.kind() { ast::StructKind::Tuple(field_list) => { let pats = iter::repeat(make::wildcard_pat().into()).take(field_list.fields().count()); make::tuple_struct_pat(path, pats).into() diff --git a/crates/assists/src/handlers/fix_visibility.rs b/crates/assists/src/handlers/fix_visibility.rs index 8558a8ff0..d8150abd9 100644 --- a/crates/assists/src/handlers/fix_visibility.rs +++ b/crates/assists/src/handlers/fix_visibility.rs @@ -97,7 +97,7 @@ fn add_vis_to_referenced_record_field(acc: &mut Assists, ctx: &AssistContext) -> let parent_name = parent.name(ctx.db()); let target_module = parent.module(ctx.db()); - let in_file_source = record_field_def.source(ctx.db()); + let in_file_source = record_field_def.source_old(ctx.db()); let (offset, current_visibility, target) = match in_file_source.value { hir::FieldSource::Named(it) => { let s = it.syntax(); @@ -150,7 +150,7 @@ fn target_data_for_def( S: HasSource, Ast: AstNode + ast::VisibilityOwner, { - let source = x.source(db); + let source = x.source_old(db); let in_file_syntax = source.syntax(); let file_id = in_file_syntax.file_id; let syntax = in_file_syntax.value; diff --git a/crates/assists/src/utils.rs b/crates/assists/src/utils.rs index d41084b59..7ee7111ae 100644 --- a/crates/assists/src/utils.rs +++ b/crates/assists/src/utils.rs @@ -99,9 +99,9 @@ pub fn filter_assoc_items( items .iter() .map(|i| match i { - hir::AssocItem::Function(i) => ast::AssocItem::Fn(i.source(db).value), - hir::AssocItem::TypeAlias(i) => ast::AssocItem::TypeAlias(i.source(db).value), - hir::AssocItem::Const(i) => ast::AssocItem::Const(i.source(db).value), + hir::AssocItem::Function(i) => ast::AssocItem::Fn(i.source_old(db).value), + hir::AssocItem::TypeAlias(i) => ast::AssocItem::TypeAlias(i.source_old(db).value), + hir::AssocItem::Const(i) => ast::AssocItem::Const(i.source_old(db).value), }) .filter(has_def_name) .filter(|it| match it { diff --git a/crates/completion/src/completions/trait_impl.rs b/crates/completion/src/completions/trait_impl.rs index c4e0d0669..759253c53 100644 --- a/crates/completion/src/completions/trait_impl.rs +++ b/crates/completion/src/completions/trait_impl.rs @@ -156,7 +156,7 @@ fn add_function_impl( }; let range = TextRange::new(fn_def_node.text_range().start(), ctx.source_range().end()); - let function_decl = function_declaration(&func.source(ctx.db).value); + let function_decl = function_declaration(&func.source_old(ctx.db).value); match ctx.config.snippet_cap { Some(cap) => { let snippet = format!("{} {{\n $0\n}}", function_decl); @@ -200,7 +200,7 @@ fn add_const_impl( let const_name = const_.name(ctx.db).map(|n| n.to_string()); if let Some(const_name) = const_name { - let snippet = make_const_compl_syntax(&const_.source(ctx.db).value); + let snippet = make_const_compl_syntax(&const_.source_old(ctx.db).value); let range = TextRange::new(const_def_node.text_range().start(), ctx.source_range().end()); diff --git a/crates/completion/src/render/const_.rs b/crates/completion/src/render/const_.rs index 039bdabc0..a8820a4fe 100644 --- a/crates/completion/src/render/const_.rs +++ b/crates/completion/src/render/const_.rs @@ -27,7 +27,7 @@ struct ConstRender<'a> { impl<'a> ConstRender<'a> { fn new(ctx: RenderContext<'a>, const_: hir::Const) -> ConstRender<'a> { - let ast_node = const_.source(ctx.db()).value; + let ast_node = const_.source_old(ctx.db()).value; ConstRender { ctx, const_, ast_node } } diff --git a/crates/completion/src/render/function.rs b/crates/completion/src/render/function.rs index 316e05b52..d9ea425a0 100644 --- a/crates/completion/src/render/function.rs +++ b/crates/completion/src/render/function.rs @@ -34,7 +34,7 @@ impl<'a> FunctionRender<'a> { fn_: hir::Function, ) -> FunctionRender<'a> { let name = local_name.unwrap_or_else(|| fn_.name(ctx.db()).to_string()); - let ast_node = fn_.source(ctx.db()).value; + let ast_node = fn_.source_old(ctx.db()).value; FunctionRender { ctx, name, func: fn_, ast_node } } diff --git a/crates/completion/src/render/macro_.rs b/crates/completion/src/render/macro_.rs index dac79592f..3d13fd9e2 100644 --- a/crates/completion/src/render/macro_.rs +++ b/crates/completion/src/render/macro_.rs @@ -96,7 +96,7 @@ impl<'a> MacroRender<'a> { } fn detail(&self) -> String { - let ast_node = self.macro_.source(self.ctx.db()).value; + let ast_node = self.macro_.source_old(self.ctx.db()).value; macro_label(&ast_node) } } diff --git a/crates/completion/src/render/type_alias.rs b/crates/completion/src/render/type_alias.rs index 9605c7fa9..4099a5d0e 100644 --- a/crates/completion/src/render/type_alias.rs +++ b/crates/completion/src/render/type_alias.rs @@ -27,7 +27,7 @@ struct TypeAliasRender<'a> { impl<'a> TypeAliasRender<'a> { fn new(ctx: RenderContext<'a>, type_alias: hir::TypeAlias) -> TypeAliasRender<'a> { - let ast_node = type_alias.source(ctx.db()).value; + let ast_node = type_alias.source_old(ctx.db()).value; TypeAliasRender { ctx, type_alias, ast_node } } diff --git a/crates/hir/src/code_model.rs b/crates/hir/src/code_model.rs index 97b7a8b5f..5020aa196 100644 --- a/crates/hir/src/code_model.rs +++ b/crates/hir/src/code_model.rs @@ -989,7 +989,7 @@ impl MacroDef { if self.is_proc_macro() { return None; } - self.source(db).value.name().map(|it| it.as_name()) + self.source_old(db).value.name().map(|it| it.as_name()) } /// Indicate it is a proc-macro @@ -1378,7 +1378,7 @@ impl Impl { } pub fn is_builtin_derive(self, db: &dyn HirDatabase) -> Option> { - let src = self.source(db); + let src = self.source_old(db); let item = src.file_id.is_builtin_derive(db.upcast())?; let hygenic = hir_expand::hygiene::Hygiene::new(db.upcast(), item.file_id); diff --git a/crates/hir/src/has_source.rs b/crates/hir/src/has_source.rs index dd7c0c570..a8256c181 100644 --- a/crates/hir/src/has_source.rs +++ b/crates/hir/src/has_source.rs @@ -16,7 +16,7 @@ use crate::{ pub trait HasSource { type Ast; - fn source(self, db: &dyn HirDatabase) -> InFile; + fn source_old(self, db: &dyn HirDatabase) -> InFile; } /// NB: Module is !HasSource, because it has two source nodes at the same time: @@ -46,7 +46,7 @@ impl Module { impl HasSource for Field { type Ast = FieldSource; - fn source(self, db: &dyn HirDatabase) -> InFile { + fn source_old(self, db: &dyn HirDatabase) -> InFile { let var = VariantId::from(self.parent); let src = var.child_source(db.upcast()); src.map(|it| match it[self.id].clone() { @@ -57,61 +57,61 @@ impl HasSource for Field { } impl HasSource for Struct { type Ast = ast::Struct; - fn source(self, db: &dyn HirDatabase) -> InFile { + fn source_old(self, db: &dyn HirDatabase) -> InFile { self.id.lookup(db.upcast()).source(db.upcast()) } } impl HasSource for Union { type Ast = ast::Union; - fn source(self, db: &dyn HirDatabase) -> InFile { + fn source_old(self, db: &dyn HirDatabase) -> InFile { self.id.lookup(db.upcast()).source(db.upcast()) } } impl HasSource for Enum { type Ast = ast::Enum; - fn source(self, db: &dyn HirDatabase) -> InFile { + fn source_old(self, db: &dyn HirDatabase) -> InFile { self.id.lookup(db.upcast()).source(db.upcast()) } } impl HasSource for Variant { type Ast = ast::Variant; - fn source(self, db: &dyn HirDatabase) -> InFile { + fn source_old(self, db: &dyn HirDatabase) -> InFile { self.parent.id.child_source(db.upcast()).map(|map| map[self.id].clone()) } } impl HasSource for Function { type Ast = ast::Fn; - fn source(self, db: &dyn HirDatabase) -> InFile { + fn source_old(self, db: &dyn HirDatabase) -> InFile { self.id.lookup(db.upcast()).source(db.upcast()) } } impl HasSource for Const { type Ast = ast::Const; - fn source(self, db: &dyn HirDatabase) -> InFile { + fn source_old(self, db: &dyn HirDatabase) -> InFile { self.id.lookup(db.upcast()).source(db.upcast()) } } impl HasSource for Static { type Ast = ast::Static; - fn source(self, db: &dyn HirDatabase) -> InFile { + fn source_old(self, db: &dyn HirDatabase) -> InFile { self.id.lookup(db.upcast()).source(db.upcast()) } } impl HasSource for Trait { type Ast = ast::Trait; - fn source(self, db: &dyn HirDatabase) -> InFile { + fn source_old(self, db: &dyn HirDatabase) -> InFile { self.id.lookup(db.upcast()).source(db.upcast()) } } impl HasSource for TypeAlias { type Ast = ast::TypeAlias; - fn source(self, db: &dyn HirDatabase) -> InFile { + fn source_old(self, db: &dyn HirDatabase) -> InFile { self.id.lookup(db.upcast()).source(db.upcast()) } } impl HasSource for MacroDef { type Ast = ast::Macro; - fn source(self, db: &dyn HirDatabase) -> InFile { + fn source_old(self, db: &dyn HirDatabase) -> InFile { InFile { file_id: self.id.ast_id.expect("MacroDef without ast_id").file_id, value: self.id.ast_id.expect("MacroDef without ast_id").to_node(db.upcast()), @@ -120,14 +120,14 @@ impl HasSource for MacroDef { } impl HasSource for Impl { type Ast = ast::Impl; - fn source(self, db: &dyn HirDatabase) -> InFile { + fn source_old(self, db: &dyn HirDatabase) -> InFile { self.id.lookup(db.upcast()).source(db.upcast()) } } impl HasSource for TypeParam { type Ast = Either; - fn source(self, db: &dyn HirDatabase) -> InFile { + fn source_old(self, db: &dyn HirDatabase) -> InFile { let child_source = self.id.parent.child_source(db.upcast()); child_source.map(|it| it[self.id.local_id].clone()) } @@ -135,7 +135,7 @@ impl HasSource for TypeParam { impl HasSource for LifetimeParam { type Ast = ast::LifetimeParam; - fn source(self, db: &dyn HirDatabase) -> InFile { + fn source_old(self, db: &dyn HirDatabase) -> InFile { let child_source = self.id.parent.child_source(db.upcast()); child_source.map(|it| it[self.id.local_id].clone()) } diff --git a/crates/ide/src/diagnostics/fixes.rs b/crates/ide/src/diagnostics/fixes.rs index d79f5c170..702e8239d 100644 --- a/crates/ide/src/diagnostics/fixes.rs +++ b/crates/ide/src/diagnostics/fixes.rs @@ -156,20 +156,20 @@ fn missing_record_expr_field_fix( let record_fields = match VariantDef::from(def_id) { VariantDef::Struct(s) => { module = s.module(sema.db); - let source = s.source(sema.db); + let source = s.source_old(sema.db); def_file_id = source.file_id; let fields = source.value.field_list()?; record_field_list(fields)? } VariantDef::Union(u) => { module = u.module(sema.db); - let source = u.source(sema.db); + let source = u.source_old(sema.db); def_file_id = source.file_id; source.value.record_field_list()? } VariantDef::Variant(e) => { module = e.module(sema.db); - let source = e.source(sema.db); + let source = e.source_old(sema.db); def_file_id = source.file_id; let fields = source.value.field_list()?; record_field_list(fields)? diff --git a/crates/ide/src/display/navigation_target.rs b/crates/ide/src/display/navigation_target.rs index bcde2b6f1..de4c0fa12 100644 --- a/crates/ide/src/display/navigation_target.rs +++ b/crates/ide/src/display/navigation_target.rs @@ -285,7 +285,7 @@ where D::Ast: ast::NameOwner + ShortLabel, { fn to_nav(&self, db: &RootDatabase) -> NavigationTarget { - let src = self.source(db); + let src = self.source_old(db); let mut res = NavigationTarget::from_named( db, src.as_ref().map(|it| it as &dyn ast::NameOwner), @@ -314,7 +314,7 @@ impl ToNav for hir::Module { impl ToNav for hir::Impl { fn to_nav(&self, db: &RootDatabase) -> NavigationTarget { - let src = self.source(db); + let src = self.source_old(db); let derive_attr = self.is_builtin_derive(db); let frange = if let Some(item) = &derive_attr { item.syntax().original_file_range(db) @@ -339,7 +339,7 @@ impl ToNav for hir::Impl { impl ToNav for hir::Field { fn to_nav(&self, db: &RootDatabase) -> NavigationTarget { - let src = self.source(db); + let src = self.source_old(db); match &src.value { FieldSource::Named(it) => { @@ -365,7 +365,7 @@ impl ToNav for hir::Field { impl ToNav for hir::MacroDef { fn to_nav(&self, db: &RootDatabase) -> NavigationTarget { - let src = self.source(db); + let src = self.source_old(db); log::debug!("nav target {:#?}", src.value.syntax()); let mut res = NavigationTarget::from_named( db, @@ -448,7 +448,7 @@ impl ToNav for hir::Label { impl ToNav for hir::TypeParam { fn to_nav(&self, db: &RootDatabase) -> NavigationTarget { - let src = self.source(db); + let src = self.source_old(db); let full_range = match &src.value { Either::Left(it) => it.syntax().text_range(), Either::Right(it) => it.syntax().text_range(), @@ -472,7 +472,7 @@ impl ToNav for hir::TypeParam { impl ToNav for hir::LifetimeParam { fn to_nav(&self, db: &RootDatabase) -> NavigationTarget { - let src = self.source(db); + let src = self.source_old(db); let full_range = src.value.syntax().text_range(); NavigationTarget { file_id: src.file_id.original_file(db), diff --git a/crates/ide/src/hover.rs b/crates/ide/src/hover.rs index 98c7bfbe5..90781ea34 100644 --- a/crates/ide/src/hover.rs +++ b/crates/ide/src/hover.rs @@ -206,7 +206,7 @@ fn runnable_action( _ => None, }, ModuleDef::Function(it) => { - let src = it.source(sema.db); + let src = it.source_old(sema.db); if src.file_id != file_id.into() { mark::hit!(hover_macro_generated_struct_fn_doc_comment); mark::hit!(hover_macro_generated_struct_fn_doc_attr); @@ -332,11 +332,11 @@ fn hover_for_definition(db: &RootDatabase, def: Definition) -> Option { if it.is_proc_macro() { return None; } - let label = macro_label(&it.source(db).value); + let label = macro_label(&it.source_old(db).value); from_def_source_labeled(db, it, Some(label), mod_path) } Definition::Field(def) => { - let src = def.source(db).value; + let src = def.source_old(db).value; if let FieldSource::Named(it) = src { from_def_source_labeled(db, def, it.short_label(), mod_path) } else { @@ -385,7 +385,7 @@ fn hover_for_definition(db: &RootDatabase, def: Definition) -> Option { D: HasSource + HasAttrs + Copy, A: ShortLabel, { - let short_label = def.source(db).value.short_label(); + let short_label = def.source_old(db).value.short_label(); from_def_source_labeled(db, def, short_label, mod_path) } diff --git a/crates/ide_db/src/search.rs b/crates/ide_db/src/search.rs index ff10f71c3..2df4894a1 100644 --- a/crates/ide_db/src/search.rs +++ b/crates/ide_db/src/search.rs @@ -121,9 +121,9 @@ impl Definition { if let Definition::Local(var) = self { let range = match var.parent(db) { - DefWithBody::Function(f) => f.source(db).value.syntax().text_range(), - DefWithBody::Const(c) => c.source(db).value.syntax().text_range(), - DefWithBody::Static(s) => s.source(db).value.syntax().text_range(), + DefWithBody::Function(f) => f.source_old(db).value.syntax().text_range(), + DefWithBody::Const(c) => c.source_old(db).value.syntax().text_range(), + DefWithBody::Static(s) => s.source_old(db).value.syntax().text_range(), }; let mut res = FxHashMap::default(); res.insert(file_id, Some(range)); @@ -132,17 +132,17 @@ impl Definition { if let Definition::LifetimeParam(param) = self { let range = match param.parent(db) { - hir::GenericDef::Function(it) => it.source(db).value.syntax().text_range(), + hir::GenericDef::Function(it) => it.source_old(db).value.syntax().text_range(), hir::GenericDef::Adt(it) => match it { - hir::Adt::Struct(it) => it.source(db).value.syntax().text_range(), - hir::Adt::Union(it) => it.source(db).value.syntax().text_range(), - hir::Adt::Enum(it) => it.source(db).value.syntax().text_range(), + hir::Adt::Struct(it) => it.source_old(db).value.syntax().text_range(), + hir::Adt::Union(it) => it.source_old(db).value.syntax().text_range(), + hir::Adt::Enum(it) => it.source_old(db).value.syntax().text_range(), }, - hir::GenericDef::Trait(it) => it.source(db).value.syntax().text_range(), - hir::GenericDef::TypeAlias(it) => it.source(db).value.syntax().text_range(), - hir::GenericDef::Impl(it) => it.source(db).value.syntax().text_range(), - hir::GenericDef::Variant(it) => it.source(db).value.syntax().text_range(), - hir::GenericDef::Const(it) => it.source(db).value.syntax().text_range(), + hir::GenericDef::Trait(it) => it.source_old(db).value.syntax().text_range(), + hir::GenericDef::TypeAlias(it) => it.source_old(db).value.syntax().text_range(), + hir::GenericDef::Impl(it) => it.source_old(db).value.syntax().text_range(), + hir::GenericDef::Variant(it) => it.source_old(db).value.syntax().text_range(), + hir::GenericDef::Const(it) => it.source_old(db).value.syntax().text_range(), }; let mut res = FxHashMap::default(); res.insert(file_id, Some(range)); diff --git a/crates/rust-analyzer/src/cli/analysis_stats.rs b/crates/rust-analyzer/src/cli/analysis_stats.rs index a23fb7a33..3ee11a8f0 100644 --- a/crates/rust-analyzer/src/cli/analysis_stats.rs +++ b/crates/rust-analyzer/src/cli/analysis_stats.rs @@ -161,7 +161,7 @@ impl AnalysisStatsCmd { } let mut msg = format!("processing: {}", full_name); if verbosity.is_verbose() { - let src = f.source(db); + let src = f.source_old(db); let original_file = src.file_id.original_file(db); let path = vfs.file_path(original_file); let syntax_range = src.value.syntax().text_range(); -- cgit v1.2.3