diff options
Diffstat (limited to 'crates/hir_def/src/nameres')
-rw-r--r-- | crates/hir_def/src/nameres/collector.rs | 28 | ||||
-rw-r--r-- | crates/hir_def/src/nameres/tests.rs | 4 | ||||
-rw-r--r-- | crates/hir_def/src/nameres/tests/macros.rs | 8 |
3 files changed, 20 insertions, 20 deletions
diff --git a/crates/hir_def/src/nameres/collector.rs b/crates/hir_def/src/nameres/collector.rs index 55228e480..a636ec77d 100644 --- a/crates/hir_def/src/nameres/collector.rs +++ b/crates/hir_def/src/nameres/collector.rs | |||
@@ -1289,20 +1289,20 @@ impl ModCollector<'_, '_> { | |||
1289 | } | 1289 | } |
1290 | 1290 | ||
1291 | fn collect_derives(&mut self, attrs: &Attrs, ast_id: FileAstId<ast::Item>) { | 1291 | fn collect_derives(&mut self, attrs: &Attrs, ast_id: FileAstId<ast::Item>) { |
1292 | for derive_subtree in attrs.by_key("derive").tt_values() { | 1292 | for derive in attrs.by_key("derive").attrs() { |
1293 | // for #[derive(Copy, Clone)], `derive_subtree` is the `(Copy, Clone)` subtree | 1293 | match derive.parse_derive() { |
1294 | for tt in &derive_subtree.token_trees { | 1294 | Some(derive_macros) => { |
1295 | let ident = match &tt { | 1295 | for path in derive_macros { |
1296 | tt::TokenTree::Leaf(tt::Leaf::Ident(ident)) => ident, | 1296 | let ast_id = AstIdWithPath::new(self.file_id, ast_id, path); |
1297 | tt::TokenTree::Leaf(tt::Leaf::Punct(_)) => continue, // , is ok | 1297 | self.def_collector |
1298 | _ => continue, // anything else would be an error (which we currently ignore) | 1298 | .unexpanded_attribute_macros |
1299 | }; | 1299 | .push(DeriveDirective { module_id: self.module_id, ast_id }); |
1300 | let path = ModPath::from_tt_ident(ident); | 1300 | } |
1301 | 1301 | } | |
1302 | let ast_id = AstIdWithPath::new(self.file_id, ast_id, path); | 1302 | None => { |
1303 | self.def_collector | 1303 | // FIXME: diagnose |
1304 | .unexpanded_attribute_macros | 1304 | log::debug!("malformed derive: {:?}", derive); |
1305 | .push(DeriveDirective { module_id: self.module_id, ast_id }); | 1305 | } |
1306 | } | 1306 | } |
1307 | } | 1307 | } |
1308 | } | 1308 | } |
diff --git a/crates/hir_def/src/nameres/tests.rs b/crates/hir_def/src/nameres/tests.rs index a4d1fb8f3..c459fa66d 100644 --- a/crates/hir_def/src/nameres/tests.rs +++ b/crates/hir_def/src/nameres/tests.rs | |||
@@ -13,8 +13,8 @@ use test_utils::mark; | |||
13 | 13 | ||
14 | use crate::{db::DefDatabase, nameres::*, test_db::TestDB}; | 14 | use crate::{db::DefDatabase, nameres::*, test_db::TestDB}; |
15 | 15 | ||
16 | fn compute_crate_def_map(fixture: &str) -> Arc<CrateDefMap> { | 16 | fn compute_crate_def_map(ra_fixture: &str) -> Arc<CrateDefMap> { |
17 | let db = TestDB::with_files(fixture); | 17 | let db = TestDB::with_files(ra_fixture); |
18 | let krate = db.crate_graph().iter().next().unwrap(); | 18 | let krate = db.crate_graph().iter().next().unwrap(); |
19 | db.crate_def_map(krate) | 19 | db.crate_def_map(krate) |
20 | } | 20 | } |
diff --git a/crates/hir_def/src/nameres/tests/macros.rs b/crates/hir_def/src/nameres/tests/macros.rs index 6fe2ee78a..f9bf5bc72 100644 --- a/crates/hir_def/src/nameres/tests/macros.rs +++ b/crates/hir_def/src/nameres/tests/macros.rs | |||
@@ -632,11 +632,11 @@ pub struct bar; | |||
632 | #[test] | 632 | #[test] |
633 | fn expand_derive() { | 633 | fn expand_derive() { |
634 | let map = compute_crate_def_map( | 634 | let map = compute_crate_def_map( |
635 | " | 635 | r#" |
636 | //- /main.rs crate:main deps:core | 636 | //- /main.rs crate:main deps:core |
637 | use core::*; | 637 | use core::Copy; |
638 | 638 | ||
639 | #[derive(Copy, Clone)] | 639 | #[derive(Copy, core::Clone)] |
640 | struct Foo; | 640 | struct Foo; |
641 | 641 | ||
642 | //- /core.rs crate:core | 642 | //- /core.rs crate:core |
@@ -645,7 +645,7 @@ fn expand_derive() { | |||
645 | 645 | ||
646 | #[rustc_builtin_macro] | 646 | #[rustc_builtin_macro] |
647 | pub macro Clone {} | 647 | pub macro Clone {} |
648 | ", | 648 | "#, |
649 | ); | 649 | ); |
650 | assert_eq!(map.modules[map.root].scope.impls().len(), 2); | 650 | assert_eq!(map.modules[map.root].scope.impls().len(), 2); |
651 | } | 651 | } |