diff options
| author | bors <bors@rust-lang.org> | 2018-03-23 18:38:16 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2018-03-23 18:38:16 +0000 |
| commit | c08480fce0f39f5c9c6db6dde0dccb375ca0ab14 (patch) | |
| tree | 32db4f9e696b8c5ba9d249bf05b4af6c40974e2d /src/libsyntax_pos | |
| parent | 55e1104dd918a809d2751d325c11d59c85485a2e (diff) | |
| parent | 0e6cd8b61a392cd80d575eaef86d12d9c3f9e2dc (diff) | |
Auto merge of #49308 - alexcrichton:rollup, r=alexcrichton
Rollup of 15 pull requests - Successful merges: #48265, #48528, #48552, #48624, #48883, #48909, #49028, #49030, #49102, #49160, #49169, #49203, #49262, #49272, #49295 - Failed merges: #48942, #49035
Diffstat (limited to 'src/libsyntax_pos')
| -rw-r--r-- | src/libsyntax_pos/lib.rs | 6 | ||||
| -rw-r--r-- | src/libsyntax_pos/symbol.rs | 6 |
2 files changed, 10 insertions, 2 deletions
diff --git a/src/libsyntax_pos/lib.rs b/src/libsyntax_pos/lib.rs index 9b83d5510fb..5a7b7e9ceca 100644 --- a/src/libsyntax_pos/lib.rs +++ b/src/libsyntax_pos/lib.rs @@ -184,8 +184,12 @@ impl SpanData { } } -// The interner in thread-local, so `Span` shouldn't move between threads. +// The interner is pointed to by a thread local value which is only set on the main thread +// with parallelization is disabled. So we don't allow Span to transfer between threads +// to avoid panics and other errors, even though it would be memory safe to do so. +#[cfg(not(parallel_queries))] impl !Send for Span {} +#[cfg(not(parallel_queries))] impl !Sync for Span {} impl PartialOrd for Span { diff --git a/src/libsyntax_pos/symbol.rs b/src/libsyntax_pos/symbol.rs index 0cba094da64..098eafef258 100644 --- a/src/libsyntax_pos/symbol.rs +++ b/src/libsyntax_pos/symbol.rs @@ -83,8 +83,12 @@ impl Decodable for Ident { #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] pub struct Symbol(u32); -// The interner in thread-local, so `Symbol` shouldn't move between threads. +// The interner is pointed to by a thread local value which is only set on the main thread +// with parallelization is disabled. So we don't allow Symbol to transfer between threads +// to avoid panics and other errors, even though it would be memory safe to do so. +#[cfg(not(parallel_queries))] impl !Send for Symbol { } +#[cfg(not(parallel_queries))] impl !Sync for Symbol { } impl Symbol { |
