about summary refs log tree commit diff
path: root/src/libsyntax
diff options
context:
space:
mode:
authorOliver Scherer <github35764891676564198441@oli-obk.de>2019-02-07 14:19:06 +0100
committerOliver Scherer <github35764891676564198441@oli-obk.de>2019-02-11 15:08:17 +0100
commitb681433b9d40ce1d851d22bedb7ccb483bedda06 (patch)
tree58553f5e5d930db8c101e2b698fa43ed38a09ee0 /src/libsyntax
parent1dba7cb20224b5bb3a22641b2f4f2f73e5157dee (diff)
downloadrust-b681433b9d40ce1d851d22bedb7ccb483bedda06.tar.gz
rust-b681433b9d40ce1d851d22bedb7ccb483bedda06.zip
Use `Rc<[Symbol]>` instead of `Vec<Symbol>` to reduce # of allocs
Diffstat (limited to 'src/libsyntax')
-rw-r--r--src/libsyntax/ext/base.rs6
-rw-r--r--src/libsyntax/ext/derive.rs4
-rw-r--r--src/libsyntax/ext/expand.rs10
-rw-r--r--src/libsyntax/ext/tt/macro_rules.rs6
-rw-r--r--src/libsyntax/std_inject.rs4
-rw-r--r--src/libsyntax/test.rs4
6 files changed, 17 insertions, 17 deletions
diff --git a/src/libsyntax/ext/base.rs b/src/libsyntax/ext/base.rs
index ec7d0e423b4..7c6303b3d40 100644
--- a/src/libsyntax/ext/base.rs
+++ b/src/libsyntax/ext/base.rs
@@ -622,7 +622,7 @@ pub enum SyntaxExtension {
     ProcMacro {
         expander: Box<dyn ProcMacro + sync::Sync + sync::Send>,
         /// Whitelist of unstable features that are treated as stable inside this macro
-        allow_internal_unstable: Vec<Symbol>,
+        allow_internal_unstable: Option<Rc<[Symbol]>>,
         edition: Edition,
     },
 
@@ -642,7 +642,7 @@ pub enum SyntaxExtension {
         /// directly use `#[unstable]` things.
         ///
         /// Only allows things that require a feature gate in the given whitelist
-        allow_internal_unstable: Vec<Symbol>,
+        allow_internal_unstable: Option<Rc<[Symbol]>>,
         /// Whether the contents of the macro can use `unsafe`
         /// without triggering the `unsafe_code` lint.
         allow_internal_unsafe: bool,
@@ -660,7 +660,7 @@ pub enum SyntaxExtension {
     IdentTT {
         expander: Box<dyn IdentMacroExpander + sync::Sync + sync::Send>,
         span: Option<Span>,
-        allow_internal_unstable: Vec<Symbol>,
+        allow_internal_unstable: Option<Rc<[Symbol]>>,
     },
 
     /// An attribute-like procedural macro. TokenStream -> TokenStream.
diff --git a/src/libsyntax/ext/derive.rs b/src/libsyntax/ext/derive.rs
index 03d68f4257f..6df369133d0 100644
--- a/src/libsyntax/ext/derive.rs
+++ b/src/libsyntax/ext/derive.rs
@@ -58,10 +58,10 @@ pub fn add_derived_markers<T>(cx: &mut ExtCtxt<'_>, span: Span, traits: &[ast::P
         call_site: span,
         def_site: None,
         format: ExpnFormat::MacroAttribute(Symbol::intern(&pretty_name)),
-        allow_internal_unstable: vec![
+        allow_internal_unstable: Some(vec![
             Symbol::intern("rustc_attrs"),
             Symbol::intern("structural_match"),
-        ],
+        ].into()),
         allow_internal_unsafe: false,
         local_inner_macros: false,
         edition: hygiene::default_edition(),
diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs
index d59e5ab6798..60359531b7f 100644
--- a/src/libsyntax/ext/expand.rs
+++ b/src/libsyntax/ext/expand.rs
@@ -558,7 +558,7 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
             call_site: attr.span,
             def_site: None,
             format: MacroAttribute(Symbol::intern(&attr.path.to_string())),
-            allow_internal_unstable: Vec::new(),
+            allow_internal_unstable: None,
             allow_internal_unsafe: false,
             local_inner_macros: false,
             edition: ext.edition(),
@@ -758,7 +758,7 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
         let opt_expanded = match *ext {
             DeclMacro { ref expander, def_info, edition, .. } => {
                 if let Err(dummy_span) = validate_and_set_expn_info(self, def_info.map(|(_, s)| s),
-                                                                    Vec::new(), false, false, None,
+                                                                    None, false, false, None,
                                                                     edition) {
                     dummy_span
                 } else {
@@ -919,7 +919,7 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
             call_site: span,
             def_site: None,
             format: MacroAttribute(pretty_name),
-            allow_internal_unstable: Vec::new(),
+            allow_internal_unstable: None,
             allow_internal_unsafe: false,
             local_inner_macros: false,
             edition: ext.edition(),
@@ -938,12 +938,12 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
                 Some(invoc.fragment_kind.expect_from_annotatables(items))
             }
             BuiltinDerive(func) => {
-                expn_info.allow_internal_unstable = vec![
+                expn_info.allow_internal_unstable = Some(vec![
                     Symbol::intern("rustc_attrs"),
                     Symbol::intern("derive_clone_copy"),
                     Symbol::intern("derive_eq"),
                     Symbol::intern("libstd_sys_internals"), // RustcDeserialize and RustcSerialize
-                ];
+                ].into());
                 invoc.expansion_data.mark.set_expn_info(expn_info);
                 let span = span.with_ctxt(self.cx.backtrace());
                 let mut items = Vec::new();
diff --git a/src/libsyntax/ext/tt/macro_rules.rs b/src/libsyntax/ext/tt/macro_rules.rs
index a79f3271fcb..cc5531c4010 100644
--- a/src/libsyntax/ext/tt/macro_rules.rs
+++ b/src/libsyntax/ext/tt/macro_rules.rs
@@ -377,13 +377,13 @@ pub fn compile(
 
     if body.legacy {
         let allow_internal_unstable = attr::find_by_name(&def.attrs, "allow_internal_unstable")
-            .map_or(Vec::new(), |attr| attr
+            .map(|attr| attr
                 .meta_item_list()
                 .map(|list| list.iter()
                     .map(|it| it.name().unwrap_or_else(|| sess.span_diagnostic.span_bug(
                         it.span, "allow internal unstable expects feature names",
                     )))
-                    .collect()
+                    .collect::<Vec<Symbol>>().into()
                 )
                 .unwrap_or_else(|| {
                     sess.span_diagnostic.span_warn(
@@ -391,7 +391,7 @@ pub fn compile(
                         future this will become a hard error. Please use `allow_internal_unstable(\
                         foo, bar)` to only allow the `foo` and `bar` features",
                     );
-                    vec![Symbol::intern("allow_internal_unstable_backcompat_hack")]
+                    vec![Symbol::intern("allow_internal_unstable_backcompat_hack")].into()
                 })
             );
         let allow_internal_unsafe = attr::contains_name(&def.attrs, "allow_internal_unsafe");
diff --git a/src/libsyntax/std_inject.rs b/src/libsyntax/std_inject.rs
index 91ec42a33b5..b9758bd655c 100644
--- a/src/libsyntax/std_inject.rs
+++ b/src/libsyntax/std_inject.rs
@@ -20,9 +20,9 @@ fn ignored_span(sp: Span) -> Span {
         call_site: DUMMY_SP,
         def_site: None,
         format: MacroAttribute(Symbol::intern("std_inject")),
-        allow_internal_unstable: vec![
+        allow_internal_unstable: Some(vec![
             Symbol::intern("prelude_import"),
-        ],
+        ].into()),
         allow_internal_unsafe: false,
         local_inner_macros: false,
         edition: hygiene::default_edition(),
diff --git a/src/libsyntax/test.rs b/src/libsyntax/test.rs
index aa107130eee..f45bf034ba2 100644
--- a/src/libsyntax/test.rs
+++ b/src/libsyntax/test.rs
@@ -285,11 +285,11 @@ fn generate_test_harness(sess: &ParseSess,
         call_site: DUMMY_SP,
         def_site: None,
         format: MacroAttribute(Symbol::intern("test_case")),
-        allow_internal_unstable: vec![
+        allow_internal_unstable: Some(vec![
             Symbol::intern("main"),
             Symbol::intern("test"),
             Symbol::intern("rustc_attrs"),
-        ],
+        ].into()),
         allow_internal_unsafe: false,
         local_inner_macros: false,
         edition: hygiene::default_edition(),