diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2018-06-24 19:54:23 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2018-06-30 01:53:32 +0300 |
| commit | 99ecdb3f5fc49efb3eccdd10fbe12dc98623a938 (patch) | |
| tree | 7c82e4221bf6f94e44ca58399c873b2b9eb29a25 /src/libsyntax/ext | |
| parent | 09856c85b73feff1db93990cd3d80f2c585b40c4 (diff) | |
| download | rust-99ecdb3f5fc49efb3eccdd10fbe12dc98623a938.tar.gz rust-99ecdb3f5fc49efb3eccdd10fbe12dc98623a938.zip | |
hygiene: Implement transparent marks
Diffstat (limited to 'src/libsyntax/ext')
| -rw-r--r-- | src/libsyntax/ext/base.rs | 8 | ||||
| -rw-r--r-- | src/libsyntax/ext/expand.rs | 2 | ||||
| -rw-r--r-- | src/libsyntax/ext/tt/macro_rules.rs | 3 |
3 files changed, 12 insertions, 1 deletions
diff --git a/src/libsyntax/ext/base.rs b/src/libsyntax/ext/base.rs index 78fa3f326d6..e2424de4d14 100644 --- a/src/libsyntax/ext/base.rs +++ b/src/libsyntax/ext/base.rs @@ -649,6 +649,7 @@ pub enum SyntaxExtension { DeclMacro { expander: Box<TTMacroExpander + sync::Sync + sync::Send>, def_info: Option<(ast::NodeId, Span)>, + is_transparent: bool, edition: Edition, } } @@ -682,6 +683,13 @@ impl SyntaxExtension { } } + pub fn is_transparent(&self) -> bool { + match *self { + SyntaxExtension::DeclMacro { is_transparent, .. } => is_transparent, + _ => false, + } + } + pub fn edition(&self) -> Edition { match *self { SyntaxExtension::NormalTT { edition, .. } | diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index 38fa92f2c93..e364e145593 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -738,7 +738,7 @@ impl<'a, 'b> MacroExpander<'a, 'b> { }; let opt_expanded = match *ext { - DeclMacro { ref expander, def_info, edition } => { + DeclMacro { ref expander, def_info, edition, .. } => { if let Err(dummy_span) = validate_and_set_expn_info(self, def_info.map(|(_, s)| s), false, false, false, None, edition) { diff --git a/src/libsyntax/ext/tt/macro_rules.rs b/src/libsyntax/ext/tt/macro_rules.rs index 0c81a68e999..70fc9dada42 100644 --- a/src/libsyntax/ext/tt/macro_rules.rs +++ b/src/libsyntax/ext/tt/macro_rules.rs @@ -312,9 +312,12 @@ pub fn compile(sess: &ParseSess, features: &Features, def: &ast::Item, edition: edition, } } else { + let is_transparent = attr::contains_name(&def.attrs, "rustc_transparent_macro"); + SyntaxExtension::DeclMacro { expander, def_info: Some((def.id, def.span)), + is_transparent, edition, } } |
