From 0baa9258dd2f901a24d744705f514fa678e64940 Mon Sep 17 00:00:00 2001 From: Felix S Klock II Date: Fri, 14 Jun 2019 12:19:26 +0200 Subject: put back the workarounds for #60846 based on https://github.com/rust-lang/rust/pull/61754#issuecomment-501743750 I am adding `bootstrap` to the cfg-preconditions for the two manual `unsafe impls`'s of `Send` and `Sync` for `TokenTree`. --- src/libsyntax/tokenstream.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/libsyntax') diff --git a/src/libsyntax/tokenstream.rs b/src/libsyntax/tokenstream.rs index b32049b1da8..cd906bb282b 100644 --- a/src/libsyntax/tokenstream.rs +++ b/src/libsyntax/tokenstream.rs @@ -59,6 +59,17 @@ where TokenStream: Send + Sync, {} +// These are safe since we ensure that they hold for all fields in the `_dummy` function. +// +// These impls are only here because the compiler takes forever to compute the Send and Sync +// bounds without them. +// FIXME: Remove these impls when the compiler can compute the bounds quickly again. +// See https://github.com/rust-lang/rust/issues/60846 +#[cfg(all(bootstrap, parallel_compiler))] +unsafe impl Send for TokenTree {} +#[cfg(all(bootstrap, parallel_compiler))] +unsafe impl Sync for TokenTree {} + impl TokenTree { /// Use this token tree as a matcher to parse given tts. pub fn parse(cx: &base::ExtCtxt<'_>, mtch: &[quoted::TokenTree], tts: TokenStream) -- cgit 1.4.1-3-g733a5