about summary refs log tree commit diff
path: root/src/libsyntax_ext/deriving
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_ext/deriving
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_ext/deriving')
-rw-r--r--src/libsyntax_ext/deriving/mod.rs7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/libsyntax_ext/deriving/mod.rs b/src/libsyntax_ext/deriving/mod.rs
index bc86ffa852b..fff54814a38 100644
--- a/src/libsyntax_ext/deriving/mod.rs
+++ b/src/libsyntax_ext/deriving/mod.rs
@@ -138,13 +138,14 @@ fn call_intrinsic(cx: &ExtCtxt<'_>,
                   -> P<ast::Expr> {
     let intrinsic_allowed_via_allow_internal_unstable = cx
         .current_expansion.mark.expn_info().unwrap()
-        .allow_internal_unstable.iter()
-        .any(|&s| s == "core_intrinsics");
+        .allow_internal_unstable.map_or(false, |features| features.iter().any(|&s|
+            s == "core_intrinsics"
+        ));
     if intrinsic_allowed_via_allow_internal_unstable {
         span = span.with_ctxt(cx.backtrace());
     } else { // Avoid instability errors with user defined curstom derives, cc #36316
         let mut info = cx.current_expansion.mark.expn_info().unwrap();
-        info.allow_internal_unstable = vec![Symbol::intern("core_intrinsics")];
+        info.allow_internal_unstable = Some(vec![Symbol::intern("core_intrinsics")].into());
         let mark = Mark::fresh(Mark::root());
         mark.set_expn_info(info);
         span = span.with_ctxt(SyntaxContext::empty().apply_mark(mark));