diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2021-06-03 17:17:25 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2021-06-03 17:17:25 +0100 |
commit | 14153671caaca852c94bd1d0d7f279acb8eb1913 (patch) | |
tree | eb377999a5e8677c210791440b18593f909198e6 /crates/hir_ty/src | |
parent | 7f9c4a59d9a84cd8c734286937439b5cd215be27 (diff) | |
parent | 17565f4deafab800d8d87208cff1e27d028e9b0e (diff) |
Merge #9128
9128: feat: expand procedural attribute macros r=jonas-schievink a=jonas-schievink
This adds experimental support for attribute macros. They can be enabled by setting `rust-analyzer.experimental.procAttrMacros` to `true`.
Known issues:
* Tokens aren't remapped, presumably because we edit the input syntax tree (this causes IDE features to not work inside items with attribute macros on them)
* Macro errors aren't reported correctly
Closes https://github.com/rust-analyzer/rust-analyzer/issues/8971
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/8964 / https://github.com/la10736/rstest/issues/120
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/2984
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/5412
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/6029
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/6687
https://github.com/rust-analyzer/rust-analyzer/issues/6740 is still not fixed – we now expand `#[proc_macro_hack]`, but fail to expand the resulting `proc_macro_call!()` macro.
Co-authored-by: Jonas Schievink <[email protected]>
Diffstat (limited to 'crates/hir_ty/src')
-rw-r--r-- | crates/hir_ty/src/test_db.rs | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/crates/hir_ty/src/test_db.rs b/crates/hir_ty/src/test_db.rs index 381b98ba8..4640ea821 100644 --- a/crates/hir_ty/src/test_db.rs +++ b/crates/hir_ty/src/test_db.rs | |||
@@ -22,11 +22,19 @@ use test_utils::extract_annotations; | |||
22 | hir_def::db::DefDatabaseStorage, | 22 | hir_def::db::DefDatabaseStorage, |
23 | crate::db::HirDatabaseStorage | 23 | crate::db::HirDatabaseStorage |
24 | )] | 24 | )] |
25 | #[derive(Default)] | ||
26 | pub(crate) struct TestDB { | 25 | pub(crate) struct TestDB { |
27 | storage: salsa::Storage<TestDB>, | 26 | storage: salsa::Storage<TestDB>, |
28 | events: Mutex<Option<Vec<salsa::Event>>>, | 27 | events: Mutex<Option<Vec<salsa::Event>>>, |
29 | } | 28 | } |
29 | |||
30 | impl Default for TestDB { | ||
31 | fn default() -> Self { | ||
32 | let mut this = Self { storage: Default::default(), events: Default::default() }; | ||
33 | this.set_enable_proc_attr_macros(true); | ||
34 | this | ||
35 | } | ||
36 | } | ||
37 | |||
30 | impl fmt::Debug for TestDB { | 38 | impl fmt::Debug for TestDB { |
31 | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { | 39 | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { |
32 | f.debug_struct("TestDB").finish() | 40 | f.debug_struct("TestDB").finish() |