diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2019-11-11 10:53:24 +0000 |
---|---|---|
committer | GitHub <[email protected]> | 2019-11-11 10:53:24 +0000 |
commit | ef2a9aedb6ac7f0b79e636cff7947935fecb909d (patch) | |
tree | a603361f9e6c02d90c0ae8cdfd0902370677f71d /crates/ra_hir_def/src/nameres/raw.rs | |
parent | 5ac4ffbc121c8231fe3ea5c2bb918f7aae60f197 (diff) | |
parent | 4f7df2aac107c0de2cab851f2a4f1ab369511fc8 (diff) |
Merge #2205
2205: Implement bulitin line! macro r=matklad a=edwin0cheng
This PR implements bulitin macro `line!` and add basic infra-structure for other bulitin macros:
1. Extend `MacroDefId` to support builtin macros
2. Add a `quote!` macro for simple quasi quoting.
Note that for support others builtin macros, eager macro expansion have to be supported first, this PR not try to handle it. :)
Co-authored-by: Edwin Cheng <[email protected]>
Diffstat (limited to 'crates/ra_hir_def/src/nameres/raw.rs')
-rw-r--r-- | crates/ra_hir_def/src/nameres/raw.rs | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/crates/ra_hir_def/src/nameres/raw.rs b/crates/ra_hir_def/src/nameres/raw.rs index 369376f30..f52002bc0 100644 --- a/crates/ra_hir_def/src/nameres/raw.rs +++ b/crates/ra_hir_def/src/nameres/raw.rs | |||
@@ -200,6 +200,7 @@ pub(super) struct MacroData { | |||
200 | pub(super) path: Path, | 200 | pub(super) path: Path, |
201 | pub(super) name: Option<Name>, | 201 | pub(super) name: Option<Name>, |
202 | pub(super) export: bool, | 202 | pub(super) export: bool, |
203 | pub(super) builtin: bool, | ||
203 | } | 204 | } |
204 | 205 | ||
205 | struct RawItemsCollector { | 206 | struct RawItemsCollector { |
@@ -367,7 +368,11 @@ impl RawItemsCollector { | |||
367 | // FIXME: cfg_attr | 368 | // FIXME: cfg_attr |
368 | let export = m.attrs().filter_map(|x| x.simple_name()).any(|name| name == "macro_export"); | 369 | let export = m.attrs().filter_map(|x| x.simple_name()).any(|name| name == "macro_export"); |
369 | 370 | ||
370 | let m = self.raw_items.macros.alloc(MacroData { ast_id, path, name, export }); | 371 | // FIXME: cfg_attr |
372 | let builtin = | ||
373 | m.attrs().filter_map(|x| x.simple_name()).any(|name| name == "rustc_builtin_macro"); | ||
374 | |||
375 | let m = self.raw_items.macros.alloc(MacroData { ast_id, path, name, export, builtin }); | ||
371 | self.push_item(current_module, attrs, RawItemKind::Macro(m)); | 376 | self.push_item(current_module, attrs, RawItemKind::Macro(m)); |
372 | } | 377 | } |
373 | 378 | ||