syntax_pos: Remove the duplicate global edition
It was introduced to avoid going through `hygiene_data`, but now it's read only once, when `ParseSess` is created, so going through a lock is ok.
This commit is contained in:
parent
1a447738b8
commit
74190a5e1c
4 changed files with 6 additions and 36 deletions
|
|
@ -1,41 +1,17 @@
|
|||
use super::*;
|
||||
|
||||
use crate::ast::CrateConfig;
|
||||
use crate::symbol::Symbol;
|
||||
use crate::source_map::{SourceMap, FilePathMapping};
|
||||
use crate::feature_gate::UnstableFeatures;
|
||||
use crate::parse::token;
|
||||
use crate::diagnostics::plugin::ErrorMap;
|
||||
use crate::with_default_globals;
|
||||
use std::io;
|
||||
use std::path::PathBuf;
|
||||
use syntax_pos::{BytePos, Span, edition::Edition};
|
||||
use rustc_data_structures::fx::{FxHashSet, FxHashMap};
|
||||
use rustc_data_structures::sync::{Lock, Once};
|
||||
use errors::{Handler, emitter::EmitterWriter};
|
||||
use syntax_pos::{BytePos, Span};
|
||||
|
||||
fn mk_sess(sm: Lrc<SourceMap>) -> ParseSess {
|
||||
let emitter = errors::emitter::EmitterWriter::new(Box::new(io::sink()),
|
||||
Some(sm.clone()),
|
||||
false,
|
||||
false,
|
||||
false);
|
||||
ParseSess {
|
||||
span_diagnostic: errors::Handler::with_emitter(true, None, Box::new(emitter)),
|
||||
unstable_features: UnstableFeatures::from_environment(),
|
||||
config: CrateConfig::default(),
|
||||
included_mod_stack: Lock::new(Vec::new()),
|
||||
source_map: sm,
|
||||
missing_fragment_specifiers: Lock::new(FxHashSet::default()),
|
||||
raw_identifier_spans: Lock::new(Vec::new()),
|
||||
registered_diagnostics: Lock::new(ErrorMap::new()),
|
||||
buffered_lints: Lock::new(vec![]),
|
||||
edition: Edition::from_session(),
|
||||
ambiguous_block_expr_parse: Lock::new(FxHashMap::default()),
|
||||
param_attr_spans: Lock::new(Vec::new()),
|
||||
let_chains_spans: Lock::new(Vec::new()),
|
||||
async_closure_spans: Lock::new(Vec::new()),
|
||||
injected_crate_name: Once::new(),
|
||||
}
|
||||
let emitter = EmitterWriter::new(Box::new(io::sink()), Some(sm.clone()), false, false, false);
|
||||
ParseSess::with_span_handler(Handler::with_emitter(true, None, Box::new(emitter)), sm)
|
||||
}
|
||||
|
||||
// open a string reader for the given string
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ use errors::{Applicability, FatalError, Level, Handler, ColorConfig, Diagnostic,
|
|||
use rustc_data_structures::sync::{Lrc, Lock, Once};
|
||||
use syntax_pos::{Span, SourceFile, FileName, MultiSpan};
|
||||
use syntax_pos::edition::Edition;
|
||||
use syntax_pos::hygiene::ExpnId;
|
||||
|
||||
use rustc_data_structures::fx::{FxHashSet, FxHashMap};
|
||||
use std::borrow::Cow;
|
||||
|
|
@ -86,7 +87,7 @@ impl ParseSess {
|
|||
included_mod_stack: Lock::new(vec![]),
|
||||
source_map,
|
||||
buffered_lints: Lock::new(vec![]),
|
||||
edition: Edition::from_session(),
|
||||
edition: ExpnId::root().expn_info().edition,
|
||||
ambiguous_block_expr_parse: Lock::new(FxHashMap::default()),
|
||||
param_attr_spans: Lock::new(Vec::new()),
|
||||
let_chains_spans: Lock::new(Vec::new()),
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
use crate::symbol::{Symbol, sym};
|
||||
use std::fmt;
|
||||
use std::str::FromStr;
|
||||
use crate::GLOBALS;
|
||||
|
||||
/// The edition of the compiler (RFC 2052)
|
||||
#[derive(Clone, Copy, Hash, PartialEq, PartialOrd, Debug, RustcEncodable, RustcDecodable, Eq)]
|
||||
|
|
@ -39,10 +38,6 @@ impl fmt::Display for Edition {
|
|||
}
|
||||
|
||||
impl Edition {
|
||||
pub fn from_session() -> Edition {
|
||||
GLOBALS.with(|globals| globals.edition)
|
||||
}
|
||||
|
||||
pub fn lint_name(&self) -> &'static str {
|
||||
match *self {
|
||||
Edition::Edition2015 => "rust_2015_compatibility",
|
||||
|
|
|
|||
|
|
@ -49,7 +49,6 @@ pub struct Globals {
|
|||
symbol_interner: Lock<symbol::Interner>,
|
||||
span_interner: Lock<span_encoding::SpanInterner>,
|
||||
hygiene_data: Lock<hygiene::HygieneData>,
|
||||
edition: Edition,
|
||||
}
|
||||
|
||||
impl Globals {
|
||||
|
|
@ -58,7 +57,6 @@ impl Globals {
|
|||
symbol_interner: Lock::new(symbol::Interner::fresh()),
|
||||
span_interner: Lock::new(span_encoding::SpanInterner::default()),
|
||||
hygiene_data: Lock::new(hygiene::HygieneData::new(edition)),
|
||||
edition,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue