From c1139a5a4404f3a36c3b826d4ceb0b53da7c69b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lauren=C8=9Biu=20Nicola?= Date: Wed, 1 Jul 2020 11:48:15 +0300 Subject: Use the existing Semantics in auto_import --- crates/ra_ide_db/src/imports_locator.rs | 88 ++++++++++++++++----------------- 1 file changed, 42 insertions(+), 46 deletions(-) (limited to 'crates/ra_ide_db') diff --git a/crates/ra_ide_db/src/imports_locator.rs b/crates/ra_ide_db/src/imports_locator.rs index fff112e66..1fba71ff8 100644 --- a/crates/ra_ide_db/src/imports_locator.rs +++ b/crates/ra_ide_db/src/imports_locator.rs @@ -13,57 +13,53 @@ use crate::{ use either::Either; use rustc_hash::FxHashSet; -pub struct ImportsLocator<'a> { - sema: Semantics<'a, RootDatabase>, +pub fn find_imports<'a>( + sema: &Semantics<'a, RootDatabase>, krate: Crate, -} - -impl<'a> ImportsLocator<'a> { - pub fn new(db: &'a RootDatabase, krate: Crate) -> Self { - Self { sema: Semantics::new(db), krate } - } + name_to_import: &str, +) -> Vec> { + let _p = profile("search_for_imports"); + let db = sema.db; - pub fn find_imports(&mut self, name_to_import: &str) -> Vec> { - let _p = profile("search_for_imports"); - let db = self.sema.db; + // Query dependencies first. + let mut candidates: FxHashSet<_> = + krate.query_external_importables(db, name_to_import).collect(); - // Query dependencies first. - let mut candidates: FxHashSet<_> = - self.krate.query_external_importables(db, name_to_import).collect(); + // Query the local crate using the symbol index. + let local_results = { + let mut query = Query::new(name_to_import.to_string()); + query.exact(); + query.limit(40); + symbol_index::crate_symbols(db, krate.into(), query) + }; - // Query the local crate using the symbol index. - let local_results = { - let mut query = Query::new(name_to_import.to_string()); - query.exact(); - query.limit(40); - symbol_index::crate_symbols(db, self.krate.into(), query) - }; + candidates.extend( + local_results + .into_iter() + .filter_map(|import_candidate| get_name_definition(sema, &import_candidate)) + .filter_map(|name_definition_to_import| match name_definition_to_import { + Definition::ModuleDef(module_def) => Some(Either::Left(module_def)), + Definition::Macro(macro_def) => Some(Either::Right(macro_def)), + _ => None, + }), + ); - candidates.extend( - local_results - .into_iter() - .filter_map(|import_candidate| self.get_name_definition(&import_candidate)) - .filter_map(|name_definition_to_import| match name_definition_to_import { - Definition::ModuleDef(module_def) => Some(Either::Left(module_def)), - Definition::Macro(macro_def) => Some(Either::Right(macro_def)), - _ => None, - }), - ); - - candidates.into_iter().collect() - } + candidates.into_iter().collect() +} - fn get_name_definition(&mut self, import_candidate: &FileSymbol) -> Option { - let _p = profile("get_name_definition"); - let file_id = import_candidate.file_id; +fn get_name_definition<'a>( + sema: &Semantics<'a, RootDatabase>, + import_candidate: &FileSymbol, +) -> Option { + let _p = profile("get_name_definition"); + let file_id = import_candidate.file_id; - let candidate_node = import_candidate.ptr.to_node(self.sema.parse(file_id).syntax()); - let candidate_name_node = if candidate_node.kind() != NAME { - candidate_node.children().find(|it| it.kind() == NAME)? - } else { - candidate_node - }; - let name = ast::Name::cast(candidate_name_node)?; - classify_name(&self.sema, &name)?.into_definition() - } + let candidate_node = import_candidate.ptr.to_node(sema.parse(file_id).syntax()); + let candidate_name_node = if candidate_node.kind() != NAME { + candidate_node.children().find(|it| it.kind() == NAME)? + } else { + candidate_node + }; + let name = ast::Name::cast(candidate_name_node)?; + classify_name(sema, &name)?.into_definition() } -- cgit v1.2.3 From e8505f14d4bb8d393ca77ec234dd1c99826a2d79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lauren=C8=9Biu=20Nicola?= Date: Wed, 1 Jul 2020 12:43:36 +0300 Subject: Try to reduce Semantics monomorphisations --- crates/ra_ide_db/src/lib.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'crates/ra_ide_db') diff --git a/crates/ra_ide_db/src/lib.rs b/crates/ra_ide_db/src/lib.rs index a808de4f1..c78071ad6 100644 --- a/crates/ra_ide_db/src/lib.rs +++ b/crates/ra_ide_db/src/lib.rs @@ -13,7 +13,7 @@ mod wasm_shims; use std::sync::Arc; -use hir::db::{AstDatabase, DefDatabase}; +use hir::db::{AstDatabase, DefDatabase, HirDatabase}; use ra_db::{ salsa::{self, Database, Durability}, Canceled, CheckCanceled, CrateId, FileId, FileLoader, FileLoaderDelegate, SourceDatabase, @@ -52,6 +52,12 @@ impl Upcast for RootDatabase { } } +impl Upcast for RootDatabase { + fn upcast(&self) -> &(dyn HirDatabase + 'static) { + &*self + } +} + impl FileLoader for RootDatabase { fn file_text(&self, file_id: FileId) -> Arc { FileLoaderDelegate(self).file_text(file_id) -- cgit v1.2.3 From 9710ad8c488e63fc46ab911e2d0787dafacb87e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lauren=C8=9Biu=20Nicola?= Date: Wed, 1 Jul 2020 15:11:34 +0300 Subject: Reuse Semantics instances --- crates/ra_ide_db/src/search.rs | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'crates/ra_ide_db') diff --git a/crates/ra_ide_db/src/search.rs b/crates/ra_ide_db/src/search.rs index 44d5c35e6..81553150b 100644 --- a/crates/ra_ide_db/src/search.rs +++ b/crates/ra_ide_db/src/search.rs @@ -180,20 +180,20 @@ impl Definition { pub fn find_usages( &self, - db: &RootDatabase, + sema: &Semantics, search_scope: Option, ) -> Vec { let _p = profile("Definition::find_usages"); let search_scope = { - let base = self.search_scope(db); + let base = self.search_scope(sema.db); match search_scope { None => base, Some(scope) => base.intersection(&scope), } }; - let name = match self.name(db) { + let name = match self.name(sema.db) { None => return Vec::new(), Some(it) => it.to_string(), }; @@ -202,11 +202,10 @@ impl Definition { let mut refs = vec![]; for (file_id, search_range) in search_scope { - let text = db.file_text(file_id); + let text = sema.db.file_text(file_id); let search_range = search_range.unwrap_or(TextRange::up_to(TextSize::of(text.as_str()))); - let sema = Semantics::new(db); let tree = Lazy::new(|| sema.parse(file_id).syntax().clone()); for (idx, _) in text.match_indices(pat) { @@ -222,9 +221,6 @@ impl Definition { continue; }; - // FIXME: reuse sb - // See https://github.com/rust-lang/rust/pull/68198#issuecomment-574269098 - match classify_name_ref(&sema, &name_ref) { Some(NameRefClass::Definition(def)) if &def == self => { let kind = if is_record_lit_name_ref(&name_ref) -- cgit v1.2.3 From 6bde542a39fe63298a31b838e59705797ed8a2cf Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Wed, 1 Jul 2020 17:15:20 +0200 Subject: Split `CrateImplDefs` in inherent and trait impls This makes the intention of inherent vs. trait impls somewhat more clear and also fixes (?) an issue where trait impls with an unresolved trait were added as inherent impls instead (hence the test changes). --- crates/ra_ide_db/src/change.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'crates/ra_ide_db') diff --git a/crates/ra_ide_db/src/change.rs b/crates/ra_ide_db/src/change.rs index b507000f2..dbe6eacc5 100644 --- a/crates/ra_ide_db/src/change.rs +++ b/crates/ra_ide_db/src/change.rs @@ -243,8 +243,9 @@ impl RootDatabase { hir::db::GenericPredicatesForParamQuery hir::db::GenericPredicatesQuery hir::db::GenericDefaultsQuery - hir::db::ImplsInCrateQuery - hir::db::ImplsFromDepsQuery + hir::db::InherentImplsInCrateQuery + hir::db::TraitImplsInCrateQuery + hir::db::TraitImplsInDepsQuery hir::db::InternTypeCtorQuery hir::db::InternTypeParamIdQuery hir::db::InternChalkImplQuery -- cgit v1.2.3 From 93d0ac7fa0a5a9548ac07e22ac14eee46550172c Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Fri, 3 Jul 2020 17:12:29 +0200 Subject: Fix memory usage accounting for interned queries --- crates/ra_ide_db/src/change.rs | 47 +++++++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 17 deletions(-) (limited to 'crates/ra_ide_db') diff --git a/crates/ra_ide_db/src/change.rs b/crates/ra_ide_db/src/change.rs index dbe6eacc5..2504d7a33 100644 --- a/crates/ra_ide_db/src/change.rs +++ b/crates/ra_ide_db/src/change.rs @@ -191,12 +191,10 @@ impl RootDatabase { // AstDatabase hir::db::AstIdMapQuery - hir::db::InternMacroQuery hir::db::MacroArgQuery hir::db::MacroDefQuery hir::db::ParseMacroQuery hir::db::MacroExpandQuery - hir::db::InternEagerExpansionQuery // DefDatabase hir::db::ItemTreeQuery @@ -221,17 +219,6 @@ impl RootDatabase { hir::db::DocumentationQuery hir::db::ImportMapQuery - // InternDatabase - hir::db::InternFunctionQuery - hir::db::InternStructQuery - hir::db::InternUnionQuery - hir::db::InternEnumQuery - hir::db::InternConstQuery - hir::db::InternStaticQuery - hir::db::InternTraitQuery - hir::db::InternTypeAliasQuery - hir::db::InternImplQuery - // HirDatabase hir::db::InferQueryQuery hir::db::TyQuery @@ -246,10 +233,6 @@ impl RootDatabase { hir::db::InherentImplsInCrateQuery hir::db::TraitImplsInCrateQuery hir::db::TraitImplsInDepsQuery - hir::db::InternTypeCtorQuery - hir::db::InternTypeParamIdQuery - hir::db::InternChalkImplQuery - hir::db::InternAssocTyValueQuery hir::db::AssociatedTyDataQuery hir::db::TraitDatumQuery hir::db::StructDatumQuery @@ -264,6 +247,36 @@ impl RootDatabase { // LineIndexDatabase crate::LineIndexQuery ]; + + // To collect interned data, we need to bump the revision counter by performing a synthetic + // write. + // We do this after collecting the non-interned queries to correctly attribute memory used + // by interned data. + self.runtime.synthetic_write(Durability::HIGH); + + sweep_each_query![ + // AstDatabase + hir::db::InternMacroQuery + hir::db::InternEagerExpansionQuery + + // InternDatabase + hir::db::InternFunctionQuery + hir::db::InternStructQuery + hir::db::InternUnionQuery + hir::db::InternEnumQuery + hir::db::InternConstQuery + hir::db::InternStaticQuery + hir::db::InternTraitQuery + hir::db::InternTypeAliasQuery + hir::db::InternImplQuery + + // HirDatabase + hir::db::InternTypeCtorQuery + hir::db::InternTypeParamIdQuery + hir::db::InternChalkImplQuery + hir::db::InternAssocTyValueQuery + ]; + acc.sort_by_key(|it| std::cmp::Reverse(it.1)); acc } -- cgit v1.2.3 From 4bbc385277bcab509c321b1374f72f1ef19d7750 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 7 Jul 2020 10:14:48 +0200 Subject: Switch to fully dynamically dispatched salsa This improves compile times quite a bit --- crates/ra_ide_db/src/change.rs | 20 ++++++++++---------- crates/ra_ide_db/src/lib.rs | 35 +++++++++++++++++------------------ crates/ra_ide_db/src/symbol_index.rs | 8 +++----- 3 files changed, 30 insertions(+), 33 deletions(-) (limited to 'crates/ra_ide_db') diff --git a/crates/ra_ide_db/src/change.rs b/crates/ra_ide_db/src/change.rs index 2504d7a33..d8da3f949 100644 --- a/crates/ra_ide_db/src/change.rs +++ b/crates/ra_ide_db/src/change.rs @@ -147,21 +147,21 @@ impl RootDatabase { let sweep = SweepStrategy::default().discard_values().sweep_all_revisions(); - self.query(ra_db::ParseQuery).sweep(sweep); - self.query(hir::db::ParseMacroQuery).sweep(sweep); + ra_db::ParseQuery.in_db(self).sweep(sweep); + hir::db::ParseMacroQuery.in_db(self).sweep(sweep); // Macros do take significant space, but less then the syntax trees // self.query(hir::db::MacroDefQuery).sweep(sweep); // self.query(hir::db::MacroArgQuery).sweep(sweep); // self.query(hir::db::MacroExpandQuery).sweep(sweep); - self.query(hir::db::AstIdMapQuery).sweep(sweep); + hir::db::AstIdMapQuery.in_db(self).sweep(sweep); - self.query(hir::db::BodyWithSourceMapQuery).sweep(sweep); + hir::db::BodyWithSourceMapQuery.in_db(self).sweep(sweep); - self.query(hir::db::ExprScopesQuery).sweep(sweep); - self.query(hir::db::InferQueryQuery).sweep(sweep); - self.query(hir::db::BodyQuery).sweep(sweep); + hir::db::ExprScopesQuery.in_db(self).sweep(sweep); + hir::db::InferQueryQuery.in_db(self).sweep(sweep); + hir::db::BodyQuery.in_db(self).sweep(sweep); } pub fn per_query_memory_usage(&mut self) -> Vec<(String, Bytes)> { @@ -170,14 +170,14 @@ impl RootDatabase { macro_rules! sweep_each_query { ($($q:path)*) => {$( let before = memory_usage().allocated; - self.query($q).sweep(sweep); + $q.in_db(self).sweep(sweep); let after = memory_usage().allocated; let q: $q = Default::default(); let name = format!("{:?}", q); acc.push((name, before - after)); let before = memory_usage().allocated; - self.query($q).sweep(sweep.discard_everything()); + $q.in_db(self).sweep(sweep.discard_everything()); let after = memory_usage().allocated; let q: $q = Default::default(); let name = format!("{:?} (deps)", q); @@ -252,7 +252,7 @@ impl RootDatabase { // write. // We do this after collecting the non-interned queries to correctly attribute memory used // by interned data. - self.runtime.synthetic_write(Durability::HIGH); + self.salsa_runtime_mut().synthetic_write(Durability::HIGH); sweep_each_query![ // AstDatabase diff --git a/crates/ra_ide_db/src/lib.rs b/crates/ra_ide_db/src/lib.rs index c78071ad6..6900cac73 100644 --- a/crates/ra_ide_db/src/lib.rs +++ b/crates/ra_ide_db/src/lib.rs @@ -11,11 +11,11 @@ pub mod imports_locator; pub mod source_change; mod wasm_shims; -use std::sync::Arc; +use std::{fmt, sync::Arc}; use hir::db::{AstDatabase, DefDatabase, HirDatabase}; use ra_db::{ - salsa::{self, Database, Durability}, + salsa::{self, Durability}, Canceled, CheckCanceled, CrateId, FileId, FileLoader, FileLoaderDelegate, SourceDatabase, Upcast, }; @@ -33,13 +33,18 @@ use crate::{line_index::LineIndex, symbol_index::SymbolsDatabase}; hir::db::DefDatabaseStorage, hir::db::HirDatabaseStorage )] -#[derive(Debug)] pub struct RootDatabase { - runtime: salsa::Runtime, + storage: salsa::Storage, pub last_gc: crate::wasm_shims::Instant, pub last_gc_check: crate::wasm_shims::Instant, } +impl fmt::Debug for RootDatabase { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("RootDatabase").finish() + } +} + impl Upcast for RootDatabase { fn upcast(&self) -> &(dyn AstDatabase + 'static) { &*self @@ -71,17 +76,11 @@ impl FileLoader for RootDatabase { } impl salsa::Database for RootDatabase { - fn salsa_runtime(&self) -> &salsa::Runtime { - &self.runtime - } - fn salsa_runtime_mut(&mut self) -> &mut salsa::Runtime { - &mut self.runtime - } fn on_propagated_panic(&self) -> ! { Canceled::throw() } - fn salsa_event(&self, event: impl Fn() -> salsa::Event) { - match event().kind { + fn salsa_event(&self, event: salsa::Event) { + match event.kind { salsa::EventKind::DidValidateMemoizedValue { .. } | salsa::EventKind::WillExecute { .. } => { self.check_canceled(); @@ -100,7 +99,7 @@ impl Default for RootDatabase { impl RootDatabase { pub fn new(lru_capacity: Option) -> RootDatabase { let mut db = RootDatabase { - runtime: salsa::Runtime::default(), + storage: salsa::Storage::default(), last_gc: crate::wasm_shims::Instant::now(), last_gc_check: crate::wasm_shims::Instant::now(), }; @@ -113,16 +112,16 @@ impl RootDatabase { pub fn update_lru_capacity(&mut self, lru_capacity: Option) { let lru_capacity = lru_capacity.unwrap_or(ra_db::DEFAULT_LRU_CAP); - self.query_mut(ra_db::ParseQuery).set_lru_capacity(lru_capacity); - self.query_mut(hir::db::ParseMacroQuery).set_lru_capacity(lru_capacity); - self.query_mut(hir::db::MacroExpandQuery).set_lru_capacity(lru_capacity); + ra_db::ParseQuery.in_db_mut(self).set_lru_capacity(lru_capacity); + hir::db::ParseMacroQuery.in_db_mut(self).set_lru_capacity(lru_capacity); + hir::db::MacroExpandQuery.in_db_mut(self).set_lru_capacity(lru_capacity); } } impl salsa::ParallelDatabase for RootDatabase { fn snapshot(&self) -> salsa::Snapshot { salsa::Snapshot::new(RootDatabase { - runtime: self.runtime.snapshot(self), + storage: self.storage.snapshot(), last_gc: self.last_gc, last_gc_check: self.last_gc_check, }) @@ -134,7 +133,7 @@ pub trait LineIndexDatabase: ra_db::SourceDatabase + CheckCanceled { fn line_index(&self, file_id: FileId) -> Arc; } -fn line_index(db: &impl LineIndexDatabase, file_id: FileId) -> Arc { +fn line_index(db: &dyn LineIndexDatabase, file_id: FileId) -> Arc { let text = db.file_text(file_id); Arc::new(LineIndex::new(&*text)) } diff --git a/crates/ra_ide_db/src/symbol_index.rs b/crates/ra_ide_db/src/symbol_index.rs index 5a09e7d1d..131e2a128 100644 --- a/crates/ra_ide_db/src/symbol_index.rs +++ b/crates/ra_ide_db/src/symbol_index.rs @@ -87,7 +87,7 @@ impl Query { } #[salsa::query_group(SymbolsDatabaseStorage)] -pub trait SymbolsDatabase: hir::db::HirDatabase + SourceDatabaseExt + ParallelDatabase { +pub trait SymbolsDatabase: hir::db::HirDatabase + SourceDatabaseExt { fn file_symbols(&self, file_id: FileId) -> Arc; fn library_symbols(&self) -> Arc>; /// The set of "local" (that is, from the current workspace) roots. @@ -100,9 +100,7 @@ pub trait SymbolsDatabase: hir::db::HirDatabase + SourceDatabaseExt + ParallelDa fn library_roots(&self) -> Arc>; } -fn library_symbols( - db: &(impl SymbolsDatabase + ParallelDatabase), -) -> Arc> { +fn library_symbols(db: &dyn SymbolsDatabase) -> Arc> { let _p = profile("library_symbols"); let roots = db.library_roots(); @@ -123,7 +121,7 @@ fn library_symbols( Arc::new(res) } -fn file_symbols(db: &impl SymbolsDatabase, file_id: FileId) -> Arc { +fn file_symbols(db: &dyn SymbolsDatabase, file_id: FileId) -> Arc { db.check_canceled(); let parse = db.parse(file_id); -- cgit v1.2.3 From f44c4b61e131284287b24dea6da6324cbe9cb252 Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Tue, 7 Jul 2020 12:10:14 +0200 Subject: Add a command to compute memory usage statistics --- crates/ra_ide_db/src/change.rs | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'crates/ra_ide_db') diff --git a/crates/ra_ide_db/src/change.rs b/crates/ra_ide_db/src/change.rs index d8da3f949..84c6f40ff 100644 --- a/crates/ra_ide_db/src/change.rs +++ b/crates/ra_ide_db/src/change.rs @@ -164,6 +164,15 @@ impl RootDatabase { hir::db::BodyQuery.in_db(self).sweep(sweep); } + // Feature: Memory Usage + // + // Clears rust-analyzer's internal database and prints memory usage statistics. + // + // |=== + // | Editor | Action Name + // + // | VS Code | **Rust Analyzer: Memory Usage (Clears Database)** + // |=== pub fn per_query_memory_usage(&mut self) -> Vec<(String, Bytes)> { let mut acc: Vec<(String, Bytes)> = vec![]; let sweep = SweepStrategy::default().discard_values().sweep_all_revisions(); -- cgit v1.2.3 From 3360118040a84d4f387db1c1d340fcaeeede2976 Mon Sep 17 00:00:00 2001 From: Christoph Herzog Date: Tue, 7 Jul 2020 12:10:18 +0200 Subject: Refactor AssistBuilder to manage a SourceChange `AssistBuilder`` now managaes a full `SourceChange` instead of a Vec. This prepares AssistBuilder to handle creation of new files. --- crates/ra_ide_db/src/source_change.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'crates/ra_ide_db') diff --git a/crates/ra_ide_db/src/source_change.rs b/crates/ra_ide_db/src/source_change.rs index 0bbd3c3e5..abb83f421 100644 --- a/crates/ra_ide_db/src/source_change.rs +++ b/crates/ra_ide_db/src/source_change.rs @@ -6,7 +6,7 @@ use ra_db::FileId; use ra_text_edit::TextEdit; -#[derive(Debug, Clone)] +#[derive(Default, Debug, Clone)] pub struct SourceChange { pub source_file_edits: Vec, pub file_system_edits: Vec, -- cgit v1.2.3 From dab7f3d2c6cd035f446fbdcda2442954da4afd3a Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Wed, 8 Jul 2020 19:09:42 +0200 Subject: Remove relative_path dependency --- crates/ra_ide_db/src/change.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'crates/ra_ide_db') diff --git a/crates/ra_ide_db/src/change.rs b/crates/ra_ide_db/src/change.rs index 84c6f40ff..d1a255dcf 100644 --- a/crates/ra_ide_db/src/change.rs +++ b/crates/ra_ide_db/src/change.rs @@ -5,8 +5,7 @@ use std::{fmt, sync::Arc, time}; use ra_db::{ salsa::{Database, Durability, SweepStrategy}, - CrateGraph, FileId, RelativePathBuf, SourceDatabase, SourceDatabaseExt, SourceRoot, - SourceRootId, + CrateGraph, FileId, SourceDatabase, SourceDatabaseExt, SourceRoot, SourceRootId, }; use ra_prof::{memory_usage, profile, Bytes}; use rustc_hash::FxHashSet; @@ -57,14 +56,14 @@ impl AnalysisChange { #[derive(Debug)] struct AddFile { file_id: FileId, - path: RelativePathBuf, + path: String, text: Arc, } #[derive(Debug)] struct RemoveFile { file_id: FileId, - path: RelativePathBuf, + path: String, } #[derive(Default)] -- cgit v1.2.3 From 6f423466d181130848c229e2684c6dd18f8a5e9d Mon Sep 17 00:00:00 2001 From: Yuki Okushi Date: Tue, 14 Jul 2020 10:57:26 +0900 Subject: Add a license field to all the crates --- crates/ra_ide_db/Cargo.toml | 1 + 1 file changed, 1 insertion(+) (limited to 'crates/ra_ide_db') diff --git a/crates/ra_ide_db/Cargo.toml b/crates/ra_ide_db/Cargo.toml index c3921bd40..bcddad60c 100644 --- a/crates/ra_ide_db/Cargo.toml +++ b/crates/ra_ide_db/Cargo.toml @@ -3,6 +3,7 @@ edition = "2018" name = "ra_ide_db" version = "0.1.0" authors = ["rust-analyzer developers"] +license = "MIT OR Apache-2.0" [lib] doctest = false -- cgit v1.2.3 From 2163ceb7ef0fc3c5268c9ca5f48bb50ae311947f Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Tue, 14 Jul 2020 17:23:33 +0200 Subject: Fix classify_name_ref on multi-path macro calls --- crates/ra_ide_db/src/defs.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'crates/ra_ide_db') diff --git a/crates/ra_ide_db/src/defs.rs b/crates/ra_ide_db/src/defs.rs index 3ef5e74b6..bcaabca92 100644 --- a/crates/ra_ide_db/src/defs.rs +++ b/crates/ra_ide_db/src/defs.rs @@ -255,8 +255,14 @@ pub fn classify_name_ref( } if let Some(macro_call) = parent.ancestors().find_map(ast::MacroCall::cast) { - if let Some(macro_def) = sema.resolve_macro_call(¯o_call) { - return Some(NameRefClass::Definition(Definition::Macro(macro_def))); + if let Some(path) = macro_call.path() { + if path.qualifier().is_none() { + // Only use this to resolve single-segment macro calls like `foo!()`. Multi-segment + // paths are handled below (allowing `log<|>::info!` to resolve to the log crate). + if let Some(macro_def) = sema.resolve_macro_call(¯o_call) { + return Some(NameRefClass::Definition(Definition::Macro(macro_def))); + } + } } } -- cgit v1.2.3 From a48843a16a2306399f2f6a78c69d9192a6480c88 Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Sun, 12 Jul 2020 15:26:02 +0200 Subject: Use Chalk closure support --- crates/ra_ide_db/src/change.rs | 2 -- 1 file changed, 2 deletions(-) (limited to 'crates/ra_ide_db') diff --git a/crates/ra_ide_db/src/change.rs b/crates/ra_ide_db/src/change.rs index d1a255dcf..d40cfeb02 100644 --- a/crates/ra_ide_db/src/change.rs +++ b/crates/ra_ide_db/src/change.rs @@ -281,8 +281,6 @@ impl RootDatabase { // HirDatabase hir::db::InternTypeCtorQuery hir::db::InternTypeParamIdQuery - hir::db::InternChalkImplQuery - hir::db::InternAssocTyValueQuery ]; acc.sort_by_key(|it| std::cmp::Reverse(it.1)); -- cgit v1.2.3 From 20770044631fd0c21caa12f9bc87489ea6c848ee Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Wed, 15 Jul 2020 21:47:45 +0200 Subject: Remove TypeCtor interning Our TypeCtor and Chalk's TypeName match now! --- crates/ra_ide_db/src/change.rs | 1 - 1 file changed, 1 deletion(-) (limited to 'crates/ra_ide_db') diff --git a/crates/ra_ide_db/src/change.rs b/crates/ra_ide_db/src/change.rs index d40cfeb02..a1bb3043b 100644 --- a/crates/ra_ide_db/src/change.rs +++ b/crates/ra_ide_db/src/change.rs @@ -279,7 +279,6 @@ impl RootDatabase { hir::db::InternImplQuery // HirDatabase - hir::db::InternTypeCtorQuery hir::db::InternTypeParamIdQuery ]; -- cgit v1.2.3 From cab360fe3105264f483c4f2b1a33f3d9010e3436 Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Fri, 17 Jul 2020 14:58:49 +0200 Subject: Correctly resolve assoc. types in path bindings --- crates/ra_ide_db/src/defs.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'crates/ra_ide_db') diff --git a/crates/ra_ide_db/src/defs.rs b/crates/ra_ide_db/src/defs.rs index bcaabca92..e06b189a0 100644 --- a/crates/ra_ide_db/src/defs.rs +++ b/crates/ra_ide_db/src/defs.rs @@ -254,6 +254,28 @@ pub fn classify_name_ref( } } + if ast::AssocTypeArg::cast(parent.clone()).is_some() { + // `Trait` + // ^^^^^ + let path = name_ref.syntax().ancestors().find_map(ast::Path::cast)?; + let resolved = sema.resolve_path(&path)?; + if let PathResolution::Def(ModuleDef::Trait(tr)) = resolved { + if let Some(ty) = tr + .items(sema.db) + .iter() + .filter_map(|assoc| match assoc { + hir::AssocItem::TypeAlias(it) => Some(*it), + _ => None, + }) + .find(|alias| alias.name(sema.db).to_string() == **name_ref.text()) + { + return Some(NameRefClass::Definition(Definition::ModuleDef( + ModuleDef::TypeAlias(ty), + ))); + } + } + } + if let Some(macro_call) = parent.ancestors().find_map(ast::MacroCall::cast) { if let Some(path) = macro_call.path() { if path.qualifier().is_none() { -- cgit v1.2.3 From cb958cf5fec8b051d16833ac0890cace379ad765 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lauren=C8=9Biu=20Nicola?= Date: Wed, 22 Jul 2020 21:50:37 +0300 Subject: Store macro invocation parameters as text instead of tt --- crates/ra_ide_db/src/change.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'crates/ra_ide_db') diff --git a/crates/ra_ide_db/src/change.rs b/crates/ra_ide_db/src/change.rs index a1bb3043b..32d9a8d1f 100644 --- a/crates/ra_ide_db/src/change.rs +++ b/crates/ra_ide_db/src/change.rs @@ -151,7 +151,7 @@ impl RootDatabase { // Macros do take significant space, but less then the syntax trees // self.query(hir::db::MacroDefQuery).sweep(sweep); - // self.query(hir::db::MacroArgQuery).sweep(sweep); + // self.query(hir::db::MacroArgTextQuery).sweep(sweep); // self.query(hir::db::MacroExpandQuery).sweep(sweep); hir::db::AstIdMapQuery.in_db(self).sweep(sweep); @@ -199,7 +199,7 @@ impl RootDatabase { // AstDatabase hir::db::AstIdMapQuery - hir::db::MacroArgQuery + hir::db::MacroArgTextQuery hir::db::MacroDefQuery hir::db::ParseMacroQuery hir::db::MacroExpandQuery -- cgit v1.2.3 From 4f7a3fba59269a2b37b78655a10778ba5af796bd Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 23 Jul 2020 12:59:18 +0200 Subject: Replace superslice with API on path to stabilization --- crates/ra_ide_db/Cargo.toml | 3 ++- crates/ra_ide_db/src/line_index.rs | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) (limited to 'crates/ra_ide_db') diff --git a/crates/ra_ide_db/Cargo.toml b/crates/ra_ide_db/Cargo.toml index bcddad60c..2716a38cc 100644 --- a/crates/ra_ide_db/Cargo.toml +++ b/crates/ra_ide_db/Cargo.toml @@ -16,10 +16,11 @@ log = "0.4.8" rayon = "1.3.0" fst = { version = "0.4", default-features = false } rustc-hash = "1.1.0" -superslice = "1.0.0" once_cell = "1.3.1" either = "1.5.3" +stdx = { path = "../stdx" } + ra_syntax = { path = "../ra_syntax" } ra_text_edit = { path = "../ra_text_edit" } ra_db = { path = "../ra_db" } diff --git a/crates/ra_ide_db/src/line_index.rs b/crates/ra_ide_db/src/line_index.rs index c7c744fce..2ab662098 100644 --- a/crates/ra_ide_db/src/line_index.rs +++ b/crates/ra_ide_db/src/line_index.rs @@ -4,7 +4,7 @@ use std::iter; use ra_syntax::{TextRange, TextSize}; use rustc_hash::FxHashMap; -use superslice::Ext; +use stdx::partition_point; #[derive(Clone, Debug, PartialEq, Eq)] pub struct LineIndex { @@ -89,7 +89,7 @@ impl LineIndex { } pub fn line_col(&self, offset: TextSize) -> LineCol { - let line = self.newlines.upper_bound(&offset) - 1; + let line = partition_point(&self.newlines, |&it| it <= offset) - 1; let line_start_offset = self.newlines[line]; let col = offset - line_start_offset; @@ -103,8 +103,8 @@ impl LineIndex { } pub fn lines(&self, range: TextRange) -> impl Iterator + '_ { - let lo = self.newlines.lower_bound(&range.start()); - let hi = self.newlines.upper_bound(&range.end()); + let lo = partition_point(&self.newlines, |&it| it < range.start()); + let hi = partition_point(&self.newlines, |&it| it <= range.end()); let all = iter::once(range.start()) .chain(self.newlines[lo..hi].iter().copied()) .chain(iter::once(range.end())); -- cgit v1.2.3 From 63f500b0ee55443a52f078060004c911a7532a14 Mon Sep 17 00:00:00 2001 From: David Lattimore Date: Wed, 22 Jul 2020 14:01:21 +1000 Subject: SSR: Use Definition::find_usages to speed up matching. When the search pattern contains a path, this substantially speeds up finding matches, especially if the path references a private item. --- crates/ra_ide_db/src/defs.rs | 35 ++++++++++++++++++++--------------- crates/ra_ide_db/src/search.rs | 4 ++++ 2 files changed, 24 insertions(+), 15 deletions(-) (limited to 'crates/ra_ide_db') diff --git a/crates/ra_ide_db/src/defs.rs b/crates/ra_ide_db/src/defs.rs index e06b189a0..f391a8e43 100644 --- a/crates/ra_ide_db/src/defs.rs +++ b/crates/ra_ide_db/src/defs.rs @@ -290,20 +290,25 @@ pub fn classify_name_ref( let path = name_ref.syntax().ancestors().find_map(ast::Path::cast)?; let resolved = sema.resolve_path(&path)?; - let res = match resolved { - PathResolution::Def(def) => Definition::ModuleDef(def), - PathResolution::AssocItem(item) => { - let def = match item { - hir::AssocItem::Function(it) => it.into(), - hir::AssocItem::Const(it) => it.into(), - hir::AssocItem::TypeAlias(it) => it.into(), - }; - Definition::ModuleDef(def) + Some(NameRefClass::Definition(resolved.into())) +} + +impl From for Definition { + fn from(path_resolution: PathResolution) -> Self { + match path_resolution { + PathResolution::Def(def) => Definition::ModuleDef(def), + PathResolution::AssocItem(item) => { + let def = match item { + hir::AssocItem::Function(it) => it.into(), + hir::AssocItem::Const(it) => it.into(), + hir::AssocItem::TypeAlias(it) => it.into(), + }; + Definition::ModuleDef(def) + } + PathResolution::Local(local) => Definition::Local(local), + PathResolution::TypeParam(par) => Definition::TypeParam(par), + PathResolution::Macro(def) => Definition::Macro(def), + PathResolution::SelfType(impl_def) => Definition::SelfType(impl_def), } - PathResolution::Local(local) => Definition::Local(local), - PathResolution::TypeParam(par) => Definition::TypeParam(par), - PathResolution::Macro(def) => Definition::Macro(def), - PathResolution::SelfType(impl_def) => Definition::SelfType(impl_def), - }; - Some(NameRefClass::Definition(res)) + } } diff --git a/crates/ra_ide_db/src/search.rs b/crates/ra_ide_db/src/search.rs index 81553150b..a7cae37b0 100644 --- a/crates/ra_ide_db/src/search.rs +++ b/crates/ra_ide_db/src/search.rs @@ -60,6 +60,10 @@ impl SearchScope { SearchScope::new(std::iter::once((file, None)).collect()) } + pub fn files(files: &[FileId]) -> SearchScope { + SearchScope::new(files.iter().map(|f| (*f, None)).collect()) + } + pub fn intersection(&self, other: &SearchScope) -> SearchScope { let (mut small, mut large) = (&self.entries, &other.entries); if small.len() > large.len() { -- cgit v1.2.3 From 6cd2131cafd29ae17442efbcce652bd447576f27 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 30 Jul 2020 11:58:41 +0200 Subject: Rename Rename --- crates/ra_ide_db/src/defs.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'crates/ra_ide_db') diff --git a/crates/ra_ide_db/src/defs.rs b/crates/ra_ide_db/src/defs.rs index f391a8e43..1464c5f2a 100644 --- a/crates/ra_ide_db/src/defs.rs +++ b/crates/ra_ide_db/src/defs.rs @@ -119,7 +119,7 @@ pub fn classify_name(sema: &Semantics, name: &ast::Name) -> Option match_ast! { match parent { - ast::Alias(it) => { + ast::Rename(it) => { let use_tree = it.syntax().parent().and_then(ast::UseTree::cast)?; let path = use_tree.path()?; let path_segment = path.segment()?; -- cgit v1.2.3 From 1142112c70b705f59b7d559d9d72cdc831865158 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 30 Jul 2020 14:51:08 +0200 Subject: Rename FnDef -> Fn --- crates/ra_ide_db/src/defs.rs | 2 +- crates/ra_ide_db/src/symbol_index.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'crates/ra_ide_db') diff --git a/crates/ra_ide_db/src/defs.rs b/crates/ra_ide_db/src/defs.rs index 1464c5f2a..234d3175a 100644 --- a/crates/ra_ide_db/src/defs.rs +++ b/crates/ra_ide_db/src/defs.rs @@ -174,7 +174,7 @@ pub fn classify_name(sema: &Semantics, name: &ast::Name) -> Option let def: hir::EnumVariant = sema.to_def(&it)?; Some(NameClass::Definition(Definition::ModuleDef(def.into()))) }, - ast::FnDef(it) => { + ast::Fn(it) => { let def: hir::Function = sema.to_def(&it)?; Some(NameClass::Definition(Definition::ModuleDef(def.into()))) }, diff --git a/crates/ra_ide_db/src/symbol_index.rs b/crates/ra_ide_db/src/symbol_index.rs index 131e2a128..c6e1ad432 100644 --- a/crates/ra_ide_db/src/symbol_index.rs +++ b/crates/ra_ide_db/src/symbol_index.rs @@ -397,7 +397,7 @@ fn to_symbol(node: &SyntaxNode) -> Option<(SmolStr, SyntaxNodePtr, TextRange)> { } match_ast! { match node { - ast::FnDef(it) => decl(it), + ast::Fn(it) => decl(it), ast::StructDef(it) => decl(it), ast::EnumDef(it) => decl(it), ast::TraitDef(it) => decl(it), -- cgit v1.2.3 From eb2f8063444b11257111f4f8ade990ec810e0361 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 30 Jul 2020 15:25:46 +0200 Subject: Rename TypeAliasDef -> TypeAlias --- crates/ra_ide_db/src/defs.rs | 2 +- crates/ra_ide_db/src/symbol_index.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'crates/ra_ide_db') diff --git a/crates/ra_ide_db/src/defs.rs b/crates/ra_ide_db/src/defs.rs index 234d3175a..0e73a8932 100644 --- a/crates/ra_ide_db/src/defs.rs +++ b/crates/ra_ide_db/src/defs.rs @@ -182,7 +182,7 @@ pub fn classify_name(sema: &Semantics, name: &ast::Name) -> Option let def: hir::Const = sema.to_def(&it)?; Some(NameClass::Definition(Definition::ModuleDef(def.into()))) }, - ast::TypeAliasDef(it) => { + ast::TypeAlias(it) => { let def: hir::TypeAlias = sema.to_def(&it)?; Some(NameClass::Definition(Definition::ModuleDef(def.into()))) }, diff --git a/crates/ra_ide_db/src/symbol_index.rs b/crates/ra_ide_db/src/symbol_index.rs index c6e1ad432..b4e85b88e 100644 --- a/crates/ra_ide_db/src/symbol_index.rs +++ b/crates/ra_ide_db/src/symbol_index.rs @@ -344,7 +344,7 @@ impl Query { } fn is_type(kind: SyntaxKind) -> bool { - matches!(kind, STRUCT_DEF | ENUM_DEF | TRAIT_DEF | TYPE_ALIAS_DEF) + matches!(kind, STRUCT_DEF | ENUM_DEF | TRAIT_DEF | TYPE_ALIAS) } /// The actual data that is stored in the index. It should be as compact as @@ -402,7 +402,7 @@ fn to_symbol(node: &SyntaxNode) -> Option<(SmolStr, SyntaxNodePtr, TextRange)> { ast::EnumDef(it) => decl(it), ast::TraitDef(it) => decl(it), ast::Module(it) => decl(it), - ast::TypeAliasDef(it) => decl(it), + ast::TypeAlias(it) => decl(it), ast::ConstDef(it) => decl(it), ast::StaticDef(it) => decl(it), ast::MacroCall(it) => { -- cgit v1.2.3 From 6f8aa75329d0a4e588e58b8f22f7932bf3d3a706 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 30 Jul 2020 16:21:30 +0200 Subject: Rename RecordLit -> RecordExpr --- crates/ra_ide_db/src/defs.rs | 2 +- crates/ra_ide_db/src/search.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'crates/ra_ide_db') diff --git a/crates/ra_ide_db/src/defs.rs b/crates/ra_ide_db/src/defs.rs index 0e73a8932..6ea7f173b 100644 --- a/crates/ra_ide_db/src/defs.rs +++ b/crates/ra_ide_db/src/defs.rs @@ -236,7 +236,7 @@ pub fn classify_name_ref( } } - if let Some(record_field) = ast::RecordField::for_field_name(name_ref) { + if let Some(record_field) = ast::RecordExprField::for_field_name(name_ref) { if let Some((field, local)) = sema.resolve_record_field(&record_field) { let field = Definition::Field(field); let res = match local { diff --git a/crates/ra_ide_db/src/search.rs b/crates/ra_ide_db/src/search.rs index a7cae37b0..0b862b449 100644 --- a/crates/ra_ide_db/src/search.rs +++ b/crates/ra_ide_db/src/search.rs @@ -315,7 +315,7 @@ fn is_record_lit_name_ref(name_ref: &ast::NameRef) -> bool { name_ref .syntax() .ancestors() - .find_map(ast::RecordLit::cast) + .find_map(ast::RecordExpr::cast) .and_then(|l| l.path()) .and_then(|p| p.segment()) .map(|p| p.name_ref().as_ref() == Some(name_ref)) -- cgit v1.2.3 From 0a9e3ccc262fbcbd4cdaab30384f8cb71584544b Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 30 Jul 2020 16:49:13 +0200 Subject: Rename FieldDef -> Field --- crates/ra_ide_db/src/defs.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'crates/ra_ide_db') diff --git a/crates/ra_ide_db/src/defs.rs b/crates/ra_ide_db/src/defs.rs index 6ea7f173b..30f18b9cf 100644 --- a/crates/ra_ide_db/src/defs.rs +++ b/crates/ra_ide_db/src/defs.rs @@ -142,7 +142,7 @@ pub fn classify_name(sema: &Semantics, name: &ast::Name) -> Option Some(NameClass::Definition(Definition::Local(local))) }, - ast::RecordFieldDef(it) => { + ast::RecordField(it) => { let field: hir::Field = sema.to_def(&it)?; Some(NameClass::Definition(Definition::Field(field))) }, -- cgit v1.2.3 From 1ae4721c9cfea746fce59a816b1c266bf373d6cf Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 30 Jul 2020 17:36:46 +0200 Subject: Finalize union grammar --- crates/ra_ide_db/src/defs.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'crates/ra_ide_db') diff --git a/crates/ra_ide_db/src/defs.rs b/crates/ra_ide_db/src/defs.rs index 30f18b9cf..11de05958 100644 --- a/crates/ra_ide_db/src/defs.rs +++ b/crates/ra_ide_db/src/defs.rs @@ -154,7 +154,7 @@ pub fn classify_name(sema: &Semantics, name: &ast::Name) -> Option let def: hir::Struct = sema.to_def(&it)?; Some(NameClass::Definition(Definition::ModuleDef(def.into()))) }, - ast::UnionDef(it) => { + ast::Union(it) => { let def: hir::Union = sema.to_def(&it)?; Some(NameClass::Definition(Definition::ModuleDef(def.into()))) }, -- cgit v1.2.3 From 216a5344c8ef3c3e430d2761dc8b1a7b60250a15 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 30 Jul 2020 17:50:40 +0200 Subject: Rename StructDef -> Struct --- crates/ra_ide_db/src/defs.rs | 2 +- crates/ra_ide_db/src/symbol_index.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'crates/ra_ide_db') diff --git a/crates/ra_ide_db/src/defs.rs b/crates/ra_ide_db/src/defs.rs index 11de05958..6a2180f6c 100644 --- a/crates/ra_ide_db/src/defs.rs +++ b/crates/ra_ide_db/src/defs.rs @@ -150,7 +150,7 @@ pub fn classify_name(sema: &Semantics, name: &ast::Name) -> Option let def = sema.to_def(&it)?; Some(NameClass::Definition(Definition::ModuleDef(def.into()))) }, - ast::StructDef(it) => { + ast::Struct(it) => { let def: hir::Struct = sema.to_def(&it)?; Some(NameClass::Definition(Definition::ModuleDef(def.into()))) }, diff --git a/crates/ra_ide_db/src/symbol_index.rs b/crates/ra_ide_db/src/symbol_index.rs index b4e85b88e..da19f0f33 100644 --- a/crates/ra_ide_db/src/symbol_index.rs +++ b/crates/ra_ide_db/src/symbol_index.rs @@ -344,7 +344,7 @@ impl Query { } fn is_type(kind: SyntaxKind) -> bool { - matches!(kind, STRUCT_DEF | ENUM_DEF | TRAIT_DEF | TYPE_ALIAS) + matches!(kind, STRUCT | ENUM_DEF | TRAIT_DEF | TYPE_ALIAS) } /// The actual data that is stored in the index. It should be as compact as @@ -398,7 +398,7 @@ fn to_symbol(node: &SyntaxNode) -> Option<(SmolStr, SyntaxNodePtr, TextRange)> { match_ast! { match node { ast::Fn(it) => decl(it), - ast::StructDef(it) => decl(it), + ast::Struct(it) => decl(it), ast::EnumDef(it) => decl(it), ast::TraitDef(it) => decl(it), ast::Module(it) => decl(it), -- cgit v1.2.3 From 609680ef97dbf82c07b6b06e21aa366423892304 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 30 Jul 2020 17:52:53 +0200 Subject: Rename EnumDef -> Enum --- crates/ra_ide_db/src/defs.rs | 2 +- crates/ra_ide_db/src/symbol_index.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'crates/ra_ide_db') diff --git a/crates/ra_ide_db/src/defs.rs b/crates/ra_ide_db/src/defs.rs index 6a2180f6c..586b3d750 100644 --- a/crates/ra_ide_db/src/defs.rs +++ b/crates/ra_ide_db/src/defs.rs @@ -158,7 +158,7 @@ pub fn classify_name(sema: &Semantics, name: &ast::Name) -> Option let def: hir::Union = sema.to_def(&it)?; Some(NameClass::Definition(Definition::ModuleDef(def.into()))) }, - ast::EnumDef(it) => { + ast::Enum(it) => { let def: hir::Enum = sema.to_def(&it)?; Some(NameClass::Definition(Definition::ModuleDef(def.into()))) }, diff --git a/crates/ra_ide_db/src/symbol_index.rs b/crates/ra_ide_db/src/symbol_index.rs index da19f0f33..646d338ae 100644 --- a/crates/ra_ide_db/src/symbol_index.rs +++ b/crates/ra_ide_db/src/symbol_index.rs @@ -344,7 +344,7 @@ impl Query { } fn is_type(kind: SyntaxKind) -> bool { - matches!(kind, STRUCT | ENUM_DEF | TRAIT_DEF | TYPE_ALIAS) + matches!(kind, STRUCT | ENUM | TRAIT_DEF | TYPE_ALIAS) } /// The actual data that is stored in the index. It should be as compact as @@ -399,7 +399,7 @@ fn to_symbol(node: &SyntaxNode) -> Option<(SmolStr, SyntaxNodePtr, TextRange)> { match node { ast::Fn(it) => decl(it), ast::Struct(it) => decl(it), - ast::EnumDef(it) => decl(it), + ast::Enum(it) => decl(it), ast::TraitDef(it) => decl(it), ast::Module(it) => decl(it), ast::TypeAlias(it) => decl(it), -- cgit v1.2.3 From 1766aae145c6925a33e427f2fe6ef2a56c301665 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 30 Jul 2020 17:56:53 +0200 Subject: Rename EnumVariant -> Variant --- crates/ra_ide_db/src/defs.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'crates/ra_ide_db') diff --git a/crates/ra_ide_db/src/defs.rs b/crates/ra_ide_db/src/defs.rs index 586b3d750..635cf706c 100644 --- a/crates/ra_ide_db/src/defs.rs +++ b/crates/ra_ide_db/src/defs.rs @@ -170,7 +170,7 @@ pub fn classify_name(sema: &Semantics, name: &ast::Name) -> Option let def: hir::Static = sema.to_def(&it)?; Some(NameClass::Definition(Definition::ModuleDef(def.into()))) }, - ast::EnumVariant(it) => { + ast::Variant(it) => { let def: hir::EnumVariant = sema.to_def(&it)?; Some(NameClass::Definition(Definition::ModuleDef(def.into()))) }, -- cgit v1.2.3 From 3cd4112bdc924c132cb0eab9d064511a215421ec Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 30 Jul 2020 18:02:20 +0200 Subject: Finalize const&static grammar --- crates/ra_ide_db/src/defs.rs | 4 ++-- crates/ra_ide_db/src/symbol_index.rs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'crates/ra_ide_db') diff --git a/crates/ra_ide_db/src/defs.rs b/crates/ra_ide_db/src/defs.rs index 635cf706c..b908bd741 100644 --- a/crates/ra_ide_db/src/defs.rs +++ b/crates/ra_ide_db/src/defs.rs @@ -166,7 +166,7 @@ pub fn classify_name(sema: &Semantics, name: &ast::Name) -> Option let def: hir::Trait = sema.to_def(&it)?; Some(NameClass::Definition(Definition::ModuleDef(def.into()))) }, - ast::StaticDef(it) => { + ast::Static(it) => { let def: hir::Static = sema.to_def(&it)?; Some(NameClass::Definition(Definition::ModuleDef(def.into()))) }, @@ -178,7 +178,7 @@ pub fn classify_name(sema: &Semantics, name: &ast::Name) -> Option let def: hir::Function = sema.to_def(&it)?; Some(NameClass::Definition(Definition::ModuleDef(def.into()))) }, - ast::ConstDef(it) => { + ast::Const(it) => { let def: hir::Const = sema.to_def(&it)?; Some(NameClass::Definition(Definition::ModuleDef(def.into()))) }, diff --git a/crates/ra_ide_db/src/symbol_index.rs b/crates/ra_ide_db/src/symbol_index.rs index 646d338ae..41b8d07f4 100644 --- a/crates/ra_ide_db/src/symbol_index.rs +++ b/crates/ra_ide_db/src/symbol_index.rs @@ -403,8 +403,8 @@ fn to_symbol(node: &SyntaxNode) -> Option<(SmolStr, SyntaxNodePtr, TextRange)> { ast::TraitDef(it) => decl(it), ast::Module(it) => decl(it), ast::TypeAlias(it) => decl(it), - ast::ConstDef(it) => decl(it), - ast::StaticDef(it) => decl(it), + ast::Const(it) => decl(it), + ast::Static(it) => decl(it), ast::MacroCall(it) => { if it.is_macro_rules().is_some() { decl(it) -- cgit v1.2.3 From c83467796b6c7365ea4f41900d74444384a9e618 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 30 Jul 2020 18:17:28 +0200 Subject: Finalize Trait grammar --- crates/ra_ide_db/src/defs.rs | 2 +- crates/ra_ide_db/src/symbol_index.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'crates/ra_ide_db') diff --git a/crates/ra_ide_db/src/defs.rs b/crates/ra_ide_db/src/defs.rs index b908bd741..df56f2d9e 100644 --- a/crates/ra_ide_db/src/defs.rs +++ b/crates/ra_ide_db/src/defs.rs @@ -162,7 +162,7 @@ pub fn classify_name(sema: &Semantics, name: &ast::Name) -> Option let def: hir::Enum = sema.to_def(&it)?; Some(NameClass::Definition(Definition::ModuleDef(def.into()))) }, - ast::TraitDef(it) => { + ast::Trait(it) => { let def: hir::Trait = sema.to_def(&it)?; Some(NameClass::Definition(Definition::ModuleDef(def.into()))) }, diff --git a/crates/ra_ide_db/src/symbol_index.rs b/crates/ra_ide_db/src/symbol_index.rs index 41b8d07f4..35a2c5be3 100644 --- a/crates/ra_ide_db/src/symbol_index.rs +++ b/crates/ra_ide_db/src/symbol_index.rs @@ -344,7 +344,7 @@ impl Query { } fn is_type(kind: SyntaxKind) -> bool { - matches!(kind, STRUCT | ENUM | TRAIT_DEF | TYPE_ALIAS) + matches!(kind, STRUCT | ENUM | TRAIT | TYPE_ALIAS) } /// The actual data that is stored in the index. It should be as compact as @@ -400,7 +400,7 @@ fn to_symbol(node: &SyntaxNode) -> Option<(SmolStr, SyntaxNodePtr, TextRange)> { ast::Fn(it) => decl(it), ast::Struct(it) => decl(it), ast::Enum(it) => decl(it), - ast::TraitDef(it) => decl(it), + ast::Trait(it) => decl(it), ast::Module(it) => decl(it), ast::TypeAlias(it) => decl(it), ast::Const(it) => decl(it), -- cgit v1.2.3