about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMazdak Farrokhzad <twingoow@gmail.com>2020-01-11 15:03:15 +0100
committerMazdak Farrokhzad <twingoow@gmail.com>2020-02-01 18:58:08 +0100
commit097d5e1c5edea1c0bf350b709087ddf5d60d2d9f (patch)
tree5c1555c8d346774cab0028a3f3d73a78a8d7b9f5
parent93a8283614e995a0cf7a866356609b7522cfda24 (diff)
downloadrust-097d5e1c5edea1c0bf350b709087ddf5d60d2d9f.tar.gz
rust-097d5e1c5edea1c0bf350b709087ddf5d60d2d9f.zip
1. move node_id to syntax
2. invert rustc_session & syntax deps
3. drop rustc_session dep in rustc_hir
-rw-r--r--Cargo.lock4
-rw-r--r--src/librustc/hir/map/definitions.rs2
-rw-r--r--src/librustc/middle/stability.rs15
-rw-r--r--src/librustc/ty/context.rs27
-rw-r--r--src/librustc/ty/mod.rs5
-rw-r--r--src/librustc_ast_lowering/item.rs2
-rw-r--r--src/librustc_ast_lowering/lib.rs8
-rw-r--r--src/librustc_ast_passes/feature_gate.rs2
-rw-r--r--src/librustc_builtin_macros/cmdline_attrs.rs2
-rw-r--r--src/librustc_builtin_macros/deriving/generic/mod.rs2
-rw-r--r--src/librustc_builtin_macros/proc_macro_harness.rs2
-rw-r--r--src/librustc_builtin_macros/standard_library_imports.rs2
-rw-r--r--src/librustc_builtin_macros/test_harness.rs2
-rw-r--r--src/librustc_expand/base.rs2
-rw-r--r--src/librustc_expand/expand.rs2
-rw-r--r--src/librustc_expand/mbe/macro_parser.rs2
-rw-r--r--src/librustc_expand/mbe/macro_rules.rs2
-rw-r--r--src/librustc_expand/mbe/quoted.rs2
-rw-r--r--src/librustc_expand/proc_macro_server.rs2
-rw-r--r--src/librustc_hir/Cargo.toml1
-rw-r--r--src/librustc_hir/hir.rs9
-rw-r--r--src/librustc_interface/interface.rs6
-rw-r--r--src/librustc_interface/util.rs3
-rw-r--r--src/librustc_lint/levels.rs8
-rw-r--r--src/librustc_parse/config.rs2
-rw-r--r--src/librustc_parse/lexer/mod.rs2
-rw-r--r--src/librustc_parse/lib.rs9
-rw-r--r--src/librustc_parse/parser/mod.rs2
-rw-r--r--src/librustc_resolve/check_unused.rs2
-rw-r--r--src/librustc_resolve/lib.rs2
-rw-r--r--src/librustc_session/Cargo.toml1
-rw-r--r--src/librustc_session/lib.rs1
-rw-r--r--src/librustc_session/lint.rs2
-rw-r--r--src/librustc_session/parse.rs3
-rw-r--r--src/librustdoc/clean/cfg.rs2
-rw-r--r--src/librustdoc/html/highlight.rs2
-rw-r--r--src/librustdoc/passes/check_code_block_syntax.rs2
-rw-r--r--src/librustdoc/test.rs2
-rw-r--r--src/libsyntax/Cargo.toml2
-rw-r--r--src/libsyntax/ast.rs12
-rw-r--r--src/libsyntax/lib.rs2
-rw-r--r--src/libsyntax/node_id.rs (renamed from src/librustc_session/node_id.rs)8
42 files changed, 83 insertions, 89 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 55f7a8357b7..6214b56004d 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -3606,7 +3606,6 @@ dependencies = [
  "rustc_errors",
  "rustc_index",
  "rustc_macros",
- "rustc_session",
  "rustc_span",
  "rustc_target",
  "serialize",
@@ -3917,6 +3916,7 @@ dependencies = [
  "rustc_span",
  "rustc_target",
  "serialize",
+ "syntax",
 ]
 
 [[package]]
@@ -4513,11 +4513,9 @@ dependencies = [
  "log",
  "rustc_data_structures",
  "rustc_errors",
- "rustc_feature",
  "rustc_index",
  "rustc_lexer",
  "rustc_macros",
- "rustc_session",
  "rustc_span",
  "scoped-tls",
  "serialize",
diff --git a/src/librustc/hir/map/definitions.rs b/src/librustc/hir/map/definitions.rs
index ac2d7a9a8dc..048c1f026be 100644
--- a/src/librustc/hir/map/definitions.rs
+++ b/src/librustc/hir/map/definitions.rs
@@ -10,12 +10,12 @@ use rustc_data_structures::stable_hasher::StableHasher;
 use rustc_hir as hir;
 use rustc_hir::def_id::{CrateNum, DefId, DefIndex, CRATE_DEF_INDEX, LOCAL_CRATE};
 use rustc_index::vec::IndexVec;
-use rustc_session::node_id::NodeMap;
 use rustc_session::CrateDisambiguator;
 use rustc_span::hygiene::ExpnId;
 use rustc_span::symbol::{sym, Symbol};
 use rustc_span::Span;
 use syntax::ast;
+use syntax::node_id::NodeMap;
 
 use std::borrow::Borrow;
 use std::fmt::Write;
diff --git a/src/librustc/middle/stability.rs b/src/librustc/middle/stability.rs
index 752b0945e71..7cbe77b9e82 100644
--- a/src/librustc/middle/stability.rs
+++ b/src/librustc/middle/stability.rs
@@ -13,11 +13,12 @@ use rustc_hir as hir;
 use rustc_hir::def::DefKind;
 use rustc_hir::def_id::{CrateNum, DefId, CRATE_DEF_INDEX};
 use rustc_hir::{self, HirId};
-use rustc_session::lint::{self, BuiltinLintDiagnostics, Lint, LintBuffer};
+use rustc_session::lint::builtin::{DEPRECATED, DEPRECATED_IN_FUTURE, SOFT_UNSTABLE};
+use rustc_session::lint::{BuiltinLintDiagnostics, Lint, LintBuffer};
+use rustc_session::parse::feature_err_issue;
 use rustc_span::symbol::{sym, Symbol};
 use rustc_span::{MultiSpan, Span};
 use syntax::ast::CRATE_NODE_ID;
-use syntax::sess::feature_err_issue;
 
 use std::num::NonZeroU32;
 
@@ -97,7 +98,7 @@ pub fn report_unstable(
     issue: Option<NonZeroU32>,
     is_soft: bool,
     span: Span,
-    soft_handler: impl FnOnce(&'static lint::Lint, Span, &str),
+    soft_handler: impl FnOnce(&'static Lint, Span, &str),
 ) {
     let msg = match reason {
         Some(r) => format!("use of unstable library feature '{}': {}", feature, r),
@@ -119,7 +120,7 @@ pub fn report_unstable(
     let fresh = sess.one_time_diagnostics.borrow_mut().insert(error_id);
     if fresh {
         if is_soft {
-            soft_handler(lint::builtin::SOFT_UNSTABLE, span, &msg)
+            soft_handler(SOFT_UNSTABLE, span, &msg)
         } else {
             feature_err_issue(&sess.parse_sess, feature, span, GateIssue::Library(issue), &msg)
                 .emit();
@@ -175,19 +176,19 @@ fn deprecation_message_common(message: String, reason: Option<Symbol>) -> String
 
 pub fn deprecation_message(depr: &Deprecation, path: &str) -> (String, &'static Lint) {
     let message = format!("use of deprecated item '{}'", path);
-    (deprecation_message_common(message, depr.note), lint::builtin::DEPRECATED)
+    (deprecation_message_common(message, depr.note), DEPRECATED)
 }
 
 pub fn rustc_deprecation_message(depr: &RustcDeprecation, path: &str) -> (String, &'static Lint) {
     let (message, lint) = if deprecation_in_effect(&depr.since.as_str()) {
-        (format!("use of deprecated item '{}'", path), lint::builtin::DEPRECATED)
+        (format!("use of deprecated item '{}'", path), DEPRECATED)
     } else {
         (
             format!(
                 "use of item '{}' that will be deprecated in future version {}",
                 path, depr.since
             ),
-            lint::builtin::DEPRECATED_IN_FUTURE,
+            DEPRECATED_IN_FUTURE,
         )
     };
     (deprecation_message_common(message, Some(depr.reason)), lint)
diff --git a/src/librustc/ty/context.rs b/src/librustc/ty/context.rs
index 8d0b7756565..f12032943f9 100644
--- a/src/librustc/ty/context.rs
+++ b/src/librustc/ty/context.rs
@@ -41,16 +41,6 @@ use crate::ty::{ExistentialPredicate, InferTy, ParamTy, PolyFnSig, Predicate, Pr
 use crate::ty::{InferConst, ParamConst};
 use crate::ty::{List, TyKind, TyS};
 use crate::util::common::ErrorReported;
-use rustc_data_structures::sync;
-use rustc_hir as hir;
-use rustc_hir::def::{DefKind, Res};
-use rustc_hir::def_id::{CrateNum, DefId, DefIdMap, DefIdSet, DefIndex, LOCAL_CRATE};
-use rustc_hir::{HirId, Node, TraitCandidate};
-use rustc_hir::{ItemKind, ItemLocalId, ItemLocalMap, ItemLocalSet};
-use rustc_session::config::CrateType;
-use rustc_session::config::{BorrowckMode, OutputFilenames};
-use rustc_session::Session;
-
 use rustc_attr as attr;
 use rustc_data_structures::fx::{FxHashMap, FxHashSet};
 use rustc_data_structures::profiling::SelfProfilerRef;
@@ -58,16 +48,27 @@ use rustc_data_structures::sharded::{IntoPointer, ShardedHashMap};
 use rustc_data_structures::stable_hasher::{
     hash_stable_hashmap, HashStable, StableHasher, StableVec,
 };
-use rustc_data_structures::sync::{Lock, Lrc, WorkerLocal};
+use rustc_data_structures::sync::{self, Lock, Lrc, WorkerLocal};
 use rustc_errors::DiagnosticBuilder;
+use rustc_hir as hir;
+use rustc_hir::def::{DefKind, Res};
+use rustc_hir::def_id::{CrateNum, DefId, DefIdMap, DefIdSet, DefIndex, LOCAL_CRATE};
+use rustc_hir::{HirId, Node, TraitCandidate};
+use rustc_hir::{ItemKind, ItemLocalId, ItemLocalMap, ItemLocalSet};
 use rustc_index::vec::{Idx, IndexVec};
 use rustc_macros::HashStable;
+use rustc_session::config::CrateType;
+use rustc_session::config::{BorrowckMode, OutputFilenames};
 use rustc_session::lint::{Level, Lint};
-use rustc_session::node_id::NodeMap;
+use rustc_session::Session;
 use rustc_span::source_map::MultiSpan;
 use rustc_span::symbol::{kw, sym, Symbol};
 use rustc_span::Span;
 use rustc_target::spec::abi;
+use syntax::ast;
+use syntax::expand::allocator::AllocatorKind;
+use syntax::node_id::NodeMap;
+
 use smallvec::SmallVec;
 use std::any::Any;
 use std::borrow::Borrow;
@@ -79,8 +80,6 @@ use std::iter;
 use std::mem;
 use std::ops::{Bound, Deref};
 use std::sync::Arc;
-use syntax::ast;
-use syntax::expand::allocator::AllocatorKind;
 
 type InternedSet<'tcx, T> = ShardedHashMap<Interned<'tcx, T>, ()>;
 
diff --git a/src/librustc/ty/mod.rs b/src/librustc/ty/mod.rs
index 24b22d3f682..f417b907a38 100644
--- a/src/librustc/ty/mod.rs
+++ b/src/librustc/ty/mod.rs
@@ -39,11 +39,13 @@ use rustc_hir::{GlobMap, Node, TraitMap};
 use rustc_index::vec::{Idx, IndexVec};
 use rustc_macros::HashStable;
 use rustc_serialize::{self, Encodable, Encoder};
-use rustc_session::node_id::{NodeMap, NodeSet};
 use rustc_span::hygiene::ExpnId;
 use rustc_span::symbol::{kw, sym, Symbol};
 use rustc_span::Span;
 use rustc_target::abi::Align;
+use syntax::ast::{self, Constness, Ident, Name};
+use syntax::node_id::{NodeId, NodeMap, NodeSet};
+
 use smallvec;
 use std::cell::RefCell;
 use std::cmp::{self, Ordering};
@@ -53,7 +55,6 @@ use std::ops::Deref;
 use std::ops::Range;
 use std::slice;
 use std::{mem, ptr};
-use syntax::ast::{self, Constness, Ident, Name, NodeId};
 
 pub use self::sty::BoundRegion::*;
 pub use self::sty::InferTy::*;
diff --git a/src/librustc_ast_lowering/item.rs b/src/librustc_ast_lowering/item.rs
index 2025d0c1c8e..e27f2bdb8d2 100644
--- a/src/librustc_ast_lowering/item.rs
+++ b/src/librustc_ast_lowering/item.rs
@@ -7,13 +7,13 @@ use rustc_errors::struct_span_err;
 use rustc_hir as hir;
 use rustc_hir::def::{DefKind, Res};
 use rustc_hir::def_id::DefId;
-use rustc_session::node_id::NodeMap;
 use rustc_span::source_map::{respan, DesugaringKind};
 use rustc_span::symbol::{kw, sym};
 use rustc_span::Span;
 use rustc_target::spec::abi;
 use syntax::ast::*;
 use syntax::attr;
+use syntax::node_id::NodeMap;
 use syntax::visit::{self, Visitor};
 
 use log::debug;
diff --git a/src/librustc_ast_lowering/lib.rs b/src/librustc_ast_lowering/lib.rs
index 284ede3b4fa..932ca743b02 100644
--- a/src/librustc_ast_lowering/lib.rs
+++ b/src/librustc_ast_lowering/lib.rs
@@ -49,8 +49,8 @@ use rustc_hir::intravisit;
 use rustc_hir::{ConstArg, GenericArg, ParamName};
 use rustc_index::vec::IndexVec;
 use rustc_session::config::nightly_options;
-use rustc_session::lint::{builtin, BuiltinLintDiagnostics, LintBuffer};
-use rustc_session::node_id::NodeMap;
+use rustc_session::lint::{builtin::BARE_TRAIT_OBJECTS, BuiltinLintDiagnostics, LintBuffer};
+use rustc_session::parse::ParseSess;
 use rustc_session::Session;
 use rustc_span::hygiene::ExpnId;
 use rustc_span::source_map::{respan, DesugaringKind, ExpnData, ExpnKind};
@@ -59,8 +59,8 @@ use rustc_span::Span;
 use syntax::ast;
 use syntax::ast::*;
 use syntax::attr;
+use syntax::node_id::NodeMap;
 use syntax::print::pprust;
-use syntax::sess::ParseSess;
 use syntax::token::{self, Nonterminal, Token};
 use syntax::tokenstream::{TokenStream, TokenTree};
 use syntax::visit::{self, Visitor};
@@ -2621,7 +2621,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
             .unwrap_or(true);
         if !is_macro_callsite {
             self.resolver.lint_buffer().buffer_lint_with_diagnostic(
-                builtin::BARE_TRAIT_OBJECTS,
+                BARE_TRAIT_OBJECTS,
                 id,
                 span,
                 "trait objects without an explicit `dyn` are deprecated",
diff --git a/src/librustc_ast_passes/feature_gate.rs b/src/librustc_ast_passes/feature_gate.rs
index 953127429d5..3b13ab354fd 100644
--- a/src/librustc_ast_passes/feature_gate.rs
+++ b/src/librustc_ast_passes/feature_gate.rs
@@ -1,13 +1,13 @@
 use rustc_errors::{struct_span_err, Handler};
 use rustc_feature::{AttributeGate, BUILTIN_ATTRIBUTE_MAP};
 use rustc_feature::{Features, GateIssue, UnstableFeatures};
+use rustc_session::parse::{feature_err, feature_err_issue, ParseSess};
 use rustc_span::source_map::Spanned;
 use rustc_span::symbol::sym;
 use rustc_span::Span;
 use syntax::ast::{self, AssocTyConstraint, AssocTyConstraintKind, NodeId};
 use syntax::ast::{GenericParam, GenericParamKind, PatKind, RangeEnd, VariantData};
 use syntax::attr;
-use syntax::sess::{feature_err, feature_err_issue, ParseSess};
 use syntax::visit::{self, FnKind, Visitor};
 
 use log::debug;
diff --git a/src/librustc_builtin_macros/cmdline_attrs.rs b/src/librustc_builtin_macros/cmdline_attrs.rs
index 2f7f7e73ac2..aa373d31e06 100644
--- a/src/librustc_builtin_macros/cmdline_attrs.rs
+++ b/src/librustc_builtin_macros/cmdline_attrs.rs
@@ -1,10 +1,10 @@
 //! Attributes injected into the crate root from command line using `-Z crate-attr`.
 
 use rustc_expand::panictry;
+use rustc_session::parse::ParseSess;
 use rustc_span::FileName;
 use syntax::ast::{self, AttrItem, AttrStyle};
 use syntax::attr::mk_attr;
-use syntax::sess::ParseSess;
 use syntax::token;
 
 pub fn inject(mut krate: ast::Crate, parse_sess: &ParseSess, attrs: &[String]) -> ast::Crate {
diff --git a/src/librustc_builtin_macros/deriving/generic/mod.rs b/src/librustc_builtin_macros/deriving/generic/mod.rs
index d0208cb33a7..364d8ff8e22 100644
--- a/src/librustc_builtin_macros/deriving/generic/mod.rs
+++ b/src/librustc_builtin_macros/deriving/generic/mod.rs
@@ -183,13 +183,13 @@ use std::vec;
 
 use rustc_attr as attr;
 use rustc_expand::base::{Annotatable, ExtCtxt};
+use rustc_session::parse::ParseSess;
 use rustc_span::source_map::respan;
 use rustc_span::symbol::{kw, sym, Symbol};
 use rustc_span::Span;
 use syntax::ast::{self, BinOpKind, EnumDef, Expr, Generics, Ident, PatKind};
 use syntax::ast::{GenericArg, GenericParamKind, VariantData};
 use syntax::ptr::P;
-use syntax::sess::ParseSess;
 use syntax::util::map_in_place::MapInPlace;
 
 use ty::{LifetimeBounds, Path, Ptr, PtrTy, Self_, Ty};
diff --git a/src/librustc_builtin_macros/proc_macro_harness.rs b/src/librustc_builtin_macros/proc_macro_harness.rs
index ae706085051..75bd64895b0 100644
--- a/src/librustc_builtin_macros/proc_macro_harness.rs
+++ b/src/librustc_builtin_macros/proc_macro_harness.rs
@@ -2,6 +2,7 @@ use std::mem;
 
 use rustc_expand::base::{ExtCtxt, Resolver};
 use rustc_expand::expand::{AstFragment, ExpansionConfig};
+use rustc_session::parse::ParseSess;
 use rustc_span::hygiene::AstPass;
 use rustc_span::symbol::{kw, sym};
 use rustc_span::{Span, DUMMY_SP};
@@ -11,7 +12,6 @@ use syntax::attr;
 use syntax::expand::is_proc_macro_attr;
 use syntax::print::pprust;
 use syntax::ptr::P;
-use syntax::sess::ParseSess;
 use syntax::visit::{self, Visitor};
 
 struct ProcMacroDerive {
diff --git a/src/librustc_builtin_macros/standard_library_imports.rs b/src/librustc_builtin_macros/standard_library_imports.rs
index 0c982b21eee..6663eecbf5f 100644
--- a/src/librustc_builtin_macros/standard_library_imports.rs
+++ b/src/librustc_builtin_macros/standard_library_imports.rs
@@ -1,11 +1,11 @@
 use rustc_expand::base::{ExtCtxt, Resolver};
 use rustc_expand::expand::ExpansionConfig;
+use rustc_session::parse::ParseSess;
 use rustc_span::edition::Edition;
 use rustc_span::hygiene::AstPass;
 use rustc_span::symbol::{kw, sym, Ident, Symbol};
 use rustc_span::DUMMY_SP;
 use syntax::ptr::P;
-use syntax::sess::ParseSess;
 use syntax::{ast, attr};
 
 pub fn inject(
diff --git a/src/librustc_builtin_macros/test_harness.rs b/src/librustc_builtin_macros/test_harness.rs
index 17d180da6bf..6a73f121c99 100644
--- a/src/librustc_builtin_macros/test_harness.rs
+++ b/src/librustc_builtin_macros/test_harness.rs
@@ -4,6 +4,7 @@ use log::debug;
 use rustc_expand::base::{ExtCtxt, Resolver};
 use rustc_expand::expand::{AstFragment, ExpansionConfig};
 use rustc_feature::Features;
+use rustc_session::parse::ParseSess;
 use rustc_span::hygiene::{AstPass, SyntaxContext, Transparency};
 use rustc_span::source_map::respan;
 use rustc_span::symbol::{sym, Symbol};
@@ -15,7 +16,6 @@ use syntax::attr;
 use syntax::entry::{self, EntryPointType};
 use syntax::mut_visit::{ExpectOne, *};
 use syntax::ptr::P;
-use syntax::sess::ParseSess;
 
 use std::{iter, mem};
 
diff --git a/src/librustc_expand/base.rs b/src/librustc_expand/base.rs
index 52e5798ec19..536259e0547 100644
--- a/src/librustc_expand/base.rs
+++ b/src/librustc_expand/base.rs
@@ -5,6 +5,7 @@ use rustc_data_structures::fx::FxHashMap;
 use rustc_data_structures::sync::{self, Lrc};
 use rustc_errors::{DiagnosticBuilder, DiagnosticId};
 use rustc_parse::{self, parser, DirectoryOwnership, MACRO_ARGUMENTS};
+use rustc_session::parse::ParseSess;
 use rustc_span::edition::Edition;
 use rustc_span::hygiene::{AstPass, ExpnData, ExpnId, ExpnKind};
 use rustc_span::source_map::SourceMap;
@@ -14,7 +15,6 @@ use smallvec::{smallvec, SmallVec};
 use syntax::ast::{self, Attribute, Name, NodeId, PatKind};
 use syntax::mut_visit::{self, MutVisitor};
 use syntax::ptr::P;
-use syntax::sess::ParseSess;
 use syntax::token;
 use syntax::tokenstream::{self, TokenStream};
 use syntax::visit::Visitor;
diff --git a/src/librustc_expand/expand.rs b/src/librustc_expand/expand.rs
index 35b6b96d49b..9964818c367 100644
--- a/src/librustc_expand/expand.rs
+++ b/src/librustc_expand/expand.rs
@@ -13,6 +13,7 @@ use rustc_parse::configure;
 use rustc_parse::parser::Parser;
 use rustc_parse::validate_attr;
 use rustc_parse::DirectoryOwnership;
+use rustc_session::parse::{feature_err, ParseSess};
 use rustc_span::source_map::respan;
 use rustc_span::symbol::{sym, Symbol};
 use rustc_span::{FileName, Span, DUMMY_SP};
@@ -21,7 +22,6 @@ use syntax::ast::{ItemKind, MacArgs, MacStmtStyle, StmtKind};
 use syntax::mut_visit::*;
 use syntax::print::pprust;
 use syntax::ptr::P;
-use syntax::sess::{feature_err, ParseSess};
 use syntax::token;
 use syntax::tokenstream::{TokenStream, TokenTree};
 use syntax::util::map_in_place::MapInPlace;
diff --git a/src/librustc_expand/mbe/macro_parser.rs b/src/librustc_expand/mbe/macro_parser.rs
index 6e7a4a556b8..a7d7f811c56 100644
--- a/src/librustc_expand/mbe/macro_parser.rs
+++ b/src/librustc_expand/mbe/macro_parser.rs
@@ -78,11 +78,11 @@ use crate::mbe::{self, TokenTree};
 
 use rustc_parse::parser::{FollowedByType, Parser, PathStyle};
 use rustc_parse::Directory;
+use rustc_session::parse::ParseSess;
 use rustc_span::symbol::{kw, sym, Symbol};
 use syntax::ast::{Ident, Name};
 use syntax::print::pprust;
 use syntax::ptr::P;
-use syntax::sess::ParseSess;
 use syntax::token::{self, DocComment, Nonterminal, Token};
 use syntax::tokenstream::TokenStream;
 
diff --git a/src/librustc_expand/mbe/macro_rules.rs b/src/librustc_expand/mbe/macro_rules.rs
index 3dbe8e7983c..34a0616eadb 100644
--- a/src/librustc_expand/mbe/macro_rules.rs
+++ b/src/librustc_expand/mbe/macro_rules.rs
@@ -15,13 +15,13 @@ use rustc_errors::{Applicability, DiagnosticBuilder, FatalError};
 use rustc_feature::Features;
 use rustc_parse::parser::Parser;
 use rustc_parse::Directory;
+use rustc_session::parse::ParseSess;
 use rustc_span::edition::Edition;
 use rustc_span::hygiene::Transparency;
 use rustc_span::symbol::{kw, sym, Symbol};
 use rustc_span::Span;
 use syntax::ast;
 use syntax::print::pprust;
-use syntax::sess::ParseSess;
 use syntax::token::{self, NtTT, Token, TokenKind::*};
 use syntax::tokenstream::{DelimSpan, TokenStream};
 
diff --git a/src/librustc_expand/mbe/quoted.rs b/src/librustc_expand/mbe/quoted.rs
index 4a33c51d573..8cac1fa658e 100644
--- a/src/librustc_expand/mbe/quoted.rs
+++ b/src/librustc_expand/mbe/quoted.rs
@@ -1,10 +1,10 @@
 use crate::mbe::macro_parser;
 use crate::mbe::{Delimited, KleeneOp, KleeneToken, SequenceRepetition, TokenTree};
 
+use rustc_session::parse::ParseSess;
 use rustc_span::symbol::kw;
 use syntax::ast;
 use syntax::print::pprust;
-use syntax::sess::ParseSess;
 use syntax::token::{self, Token};
 use syntax::tokenstream;
 
diff --git a/src/librustc_expand/proc_macro_server.rs b/src/librustc_expand/proc_macro_server.rs
index d441613ac58..0a86754b23f 100644
--- a/src/librustc_expand/proc_macro_server.rs
+++ b/src/librustc_expand/proc_macro_server.rs
@@ -4,11 +4,11 @@ use rustc_data_structures::sync::Lrc;
 use rustc_errors::Diagnostic;
 use rustc_parse::lexer::nfc_normalize;
 use rustc_parse::{nt_to_tokenstream, parse_stream_from_source_str};
+use rustc_session::parse::ParseSess;
 use rustc_span::symbol::{kw, sym, Symbol};
 use rustc_span::{BytePos, FileName, MultiSpan, Pos, SourceFile, Span};
 use syntax::ast;
 use syntax::print::pprust;
-use syntax::sess::ParseSess;
 use syntax::token;
 use syntax::tokenstream::{self, DelimSpan, IsJoint::*, TokenStream, TreeAndJoint};
 use syntax::util::comments;
diff --git a/src/librustc_hir/Cargo.toml b/src/librustc_hir/Cargo.toml
index f2e420dbae6..02b394b6d79 100644
--- a/src/librustc_hir/Cargo.toml
+++ b/src/librustc_hir/Cargo.toml
@@ -17,6 +17,5 @@ rustc_index = { path = "../librustc_index" }
 rustc_span = { path = "../librustc_span" }
 rustc_errors = { path = "../librustc_errors" }
 rustc_serialize = { path = "../libserialize", package = "serialize" }
-rustc_session = { path = "../librustc_session" }
 syntax = { path = "../libsyntax" }
 smallvec = { version = "1.0", features = ["union", "may_dangle"] }
diff --git a/src/librustc_hir/hir.rs b/src/librustc_hir/hir.rs
index b62a7e413e3..0db75454aee 100644
--- a/src/librustc_hir/hir.rs
+++ b/src/librustc_hir/hir.rs
@@ -12,21 +12,22 @@ use rustc_data_structures::fx::FxHashSet;
 use rustc_data_structures::sync::{par_for_each_in, Send, Sync};
 use rustc_errors::FatalError;
 use rustc_macros::HashStable_Generic;
-use rustc_session::node_id::NodeMap;
 use rustc_span::source_map::{SourceMap, Spanned};
 use rustc_span::symbol::{kw, sym, Symbol};
 use rustc_span::{MultiSpan, Span, DUMMY_SP};
 use rustc_target::spec::abi::Abi;
-use smallvec::SmallVec;
-use std::collections::{BTreeMap, BTreeSet};
-use std::fmt;
 use syntax::ast::{self, AsmDialect, CrateSugar, Ident, Name, NodeId};
 use syntax::ast::{AttrVec, Attribute, FloatTy, IntTy, Label, LitKind, StrStyle, UintTy};
 pub use syntax::ast::{BorrowKind, ImplPolarity, IsAuto};
 pub use syntax::ast::{CaptureBy, Constness, Movability, Mutability, Unsafety};
+use syntax::node_id::NodeMap;
 use syntax::tokenstream::TokenStream;
 use syntax::util::parser::ExprPrecedence;
 
+use smallvec::SmallVec;
+use std::collections::{BTreeMap, BTreeSet};
+use std::fmt;
+
 #[derive(Copy, Clone, RustcEncodable, RustcDecodable, HashStable_Generic)]
 pub struct Lifetime {
     pub hir_id: HirId,
diff --git a/src/librustc_interface/interface.rs b/src/librustc_interface/interface.rs
index f491d662f97..ae758b5e327 100644
--- a/src/librustc_interface/interface.rs
+++ b/src/librustc_interface/interface.rs
@@ -14,13 +14,13 @@ use rustc_data_structures::OnDrop;
 use rustc_errors::registry::Registry;
 use rustc_lint::LintStore;
 use rustc_parse::new_parser_from_source_str;
+use rustc_session::parse::{CrateConfig, ParseSess};
 use rustc_span::edition;
 use rustc_span::source_map::{FileLoader, FileName, SourceMap};
 use std::path::PathBuf;
 use std::result;
 use std::sync::{Arc, Mutex};
-use syntax::ast::{self, MetaItemKind};
-use syntax::sess::ParseSess;
+use syntax::ast::MetaItemKind;
 use syntax::token;
 
 pub type Result<T> = result::Result<T, ErrorReported>;
@@ -106,7 +106,7 @@ pub fn parse_cfgspecs(cfgspecs: Vec<String>) -> FxHashSet<(String, Option<String
 
                 error!(r#"expected `key` or `key="value"`"#);
             })
-            .collect::<ast::CrateConfig>();
+            .collect::<CrateConfig>();
         cfg.into_iter().map(|(a, b)| (a.to_string(), b.map(|b| b.to_string()))).collect()
     })
 }
diff --git a/src/librustc_interface/util.rs b/src/librustc_interface/util.rs
index 56121fba2d5..842b702be2a 100644
--- a/src/librustc_interface/util.rs
+++ b/src/librustc_interface/util.rs
@@ -14,6 +14,7 @@ use rustc_resolve::{self, Resolver};
 use rustc_session as session;
 use rustc_session::config::{ErrorOutputType, Input, OutputFilenames};
 use rustc_session::lint::{BuiltinLintDiagnostics, LintBuffer};
+use rustc_session::parse::CrateConfig;
 use rustc_session::CrateDisambiguator;
 use rustc_session::{config, early_error, filesearch, DiagnosticOutput, Session};
 use rustc_span::edition::Edition;
@@ -40,7 +41,7 @@ use syntax::{self, ast};
 /// This is performed by checking whether a whitelisted set of
 /// features is available on the target machine, by querying LLVM.
 pub fn add_configuration(
-    cfg: &mut ast::CrateConfig,
+    cfg: &mut CrateConfig,
     sess: &Session,
     codegen_backend: &dyn CodegenBackend,
 ) {
diff --git a/src/librustc_lint/levels.rs b/src/librustc_lint/levels.rs
index d5bbdc53160..ae490a1c6dd 100644
--- a/src/librustc_lint/levels.rs
+++ b/src/librustc_lint/levels.rs
@@ -9,15 +9,15 @@ use rustc_data_structures::fx::FxHashMap;
 use rustc_errors::{struct_span_err, Applicability, DiagnosticBuilder};
 use rustc_hir as hir;
 use rustc_hir::def_id::{CrateNum, LOCAL_CRATE};
-use rustc_hir::hir_id::HirId;
-use rustc_hir::intravisit;
+use rustc_hir::{intravisit, HirId};
 use rustc_session::lint::{builtin, Level, Lint};
+use rustc_session::parse::feature_err;
 use rustc_session::Session;
-use rustc_span::{sym, MultiSpan, Symbol};
+use rustc_span::source_map::MultiSpan;
+use rustc_span::symbol::{sym, Symbol};
 use syntax::ast;
 use syntax::attr;
 use syntax::print::pprust;
-use syntax::sess::feature_err;
 use syntax::unwrap_or;
 
 use std::cmp;
diff --git a/src/librustc_parse/config.rs b/src/librustc_parse/config.rs
index d97fe621174..0edd56680f9 100644
--- a/src/librustc_parse/config.rs
+++ b/src/librustc_parse/config.rs
@@ -16,6 +16,7 @@ use rustc_feature::{Feature, Features, State as FeatureState};
 use rustc_feature::{
     ACCEPTED_FEATURES, ACTIVE_FEATURES, REMOVED_FEATURES, STABLE_REMOVED_FEATURES,
 };
+use rustc_session::parse::{feature_err, ParseSess};
 use rustc_span::edition::{Edition, ALL_EDITIONS};
 use rustc_span::symbol::{sym, Symbol};
 use rustc_span::{Span, DUMMY_SP};
@@ -23,7 +24,6 @@ use syntax::ast::{self, AttrItem, Attribute, MetaItem};
 use syntax::attr::HasAttrs;
 use syntax::mut_visit::*;
 use syntax::ptr::P;
-use syntax::sess::{feature_err, ParseSess};
 use syntax::util::map_in_place::MapInPlace;
 
 use smallvec::SmallVec;
diff --git a/src/librustc_parse/lexer/mod.rs b/src/librustc_parse/lexer/mod.rs
index 02e4808679f..af56e9d344d 100644
--- a/src/librustc_parse/lexer/mod.rs
+++ b/src/librustc_parse/lexer/mod.rs
@@ -2,9 +2,9 @@ use rustc_data_structures::sync::Lrc;
 use rustc_errors::{DiagnosticBuilder, FatalError};
 use rustc_lexer::unescape;
 use rustc_lexer::Base;
+use rustc_session::parse::ParseSess;
 use rustc_span::symbol::{sym, Symbol};
 use rustc_span::{BytePos, Pos, Span};
-use syntax::sess::ParseSess;
 use syntax::token::{self, Token, TokenKind};
 use syntax::util::comments;
 
diff --git a/src/librustc_parse/lib.rs b/src/librustc_parse/lib.rs
index 08f4f210152..d2555785542 100644
--- a/src/librustc_parse/lib.rs
+++ b/src/librustc_parse/lib.rs
@@ -4,16 +4,15 @@
 #![feature(crate_visibility_modifier)]
 #![cfg_attr(bootstrap, feature(slice_patterns))]
 
+use rustc_data_structures::sync::Lrc;
+use rustc_errors::{Diagnostic, FatalError, Level, PResult};
+use rustc_session::parse::ParseSess;
+use rustc_span::{FileName, SourceFile, Span};
 use syntax::ast;
 use syntax::print::pprust;
-use syntax::sess::ParseSess;
 use syntax::token::{self, Nonterminal};
 use syntax::tokenstream::{self, TokenStream, TokenTree};
 
-use rustc_data_structures::sync::Lrc;
-use rustc_errors::{Diagnostic, FatalError, Level, PResult};
-use rustc_span::{FileName, SourceFile, Span};
-
 use std::borrow::Cow;
 use std::path::Path;
 use std::str;
diff --git a/src/librustc_parse/parser/mod.rs b/src/librustc_parse/parser/mod.rs
index 4a9016394d2..4c7b37ff7e1 100644
--- a/src/librustc_parse/parser/mod.rs
+++ b/src/librustc_parse/parser/mod.rs
@@ -17,6 +17,7 @@ use crate::{Directory, DirectoryOwnership};
 
 use log::debug;
 use rustc_errors::{struct_span_err, Applicability, DiagnosticBuilder, FatalError, PResult};
+use rustc_session::parse::ParseSess;
 use rustc_span::source_map::respan;
 use rustc_span::symbol::{kw, sym, Symbol};
 use rustc_span::{BytePos, FileName, Span, DUMMY_SP};
@@ -24,7 +25,6 @@ use syntax::ast::{self, AttrStyle, AttrVec, CrateSugar, Extern, Ident, Unsafety,
 use syntax::ast::{IsAsync, MacArgs, MacDelimiter, Mutability, StrLit, Visibility, VisibilityKind};
 use syntax::print::pprust;
 use syntax::ptr::P;
-use syntax::sess::ParseSess;
 use syntax::token::{self, DelimToken, Token, TokenKind};
 use syntax::tokenstream::{self, DelimSpan, TokenStream, TokenTree, TreeAndJoint};
 use syntax::util::comments::{doc_comment_style, strip_doc_comment_decoration};
diff --git a/src/librustc_resolve/check_unused.rs b/src/librustc_resolve/check_unused.rs
index 4a6df92d822..e8e3b685794 100644
--- a/src/librustc_resolve/check_unused.rs
+++ b/src/librustc_resolve/check_unused.rs
@@ -30,9 +30,9 @@ use rustc::{lint, ty};
 use rustc_data_structures::fx::FxHashSet;
 use rustc_errors::pluralize;
 use rustc_session::lint::BuiltinLintDiagnostics;
-use rustc_session::node_id::NodeMap;
 use rustc_span::{MultiSpan, Span, DUMMY_SP};
 use syntax::ast;
+use syntax::node_id::NodeMap;
 use syntax::visit::{self, Visitor};
 
 struct UnusedImport<'a> {
diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs
index 0b1752419b8..55d1be70ad7 100644
--- a/src/librustc_resolve/lib.rs
+++ b/src/librustc_resolve/lib.rs
@@ -37,7 +37,6 @@ use rustc_hir::PrimTy::{self, Bool, Char, Float, Int, Str, Uint};
 use rustc_hir::{GlobMap, TraitMap};
 use rustc_metadata::creader::{CStore, CrateLoader};
 use rustc_session::lint::{BuiltinLintDiagnostics, LintBuffer};
-use rustc_session::node_id::{NodeMap, NodeSet};
 use rustc_session::Session;
 use rustc_span::hygiene::{ExpnId, ExpnKind, MacroKind, SyntaxContext, Transparency};
 use rustc_span::source_map::Spanned;
@@ -47,6 +46,7 @@ use syntax::ast::{self, FloatTy, Ident, IntTy, Name, NodeId, UintTy};
 use syntax::ast::{Crate, CRATE_NODE_ID};
 use syntax::ast::{ItemKind, Path};
 use syntax::attr;
+use syntax::node_id::{NodeMap, NodeSet};
 use syntax::print::pprust;
 use syntax::unwrap_or;
 use syntax::visit::{self, Visitor};
diff --git a/src/librustc_session/Cargo.toml b/src/librustc_session/Cargo.toml
index 47c23bc4dcf..c74011e26aa 100644
--- a/src/librustc_session/Cargo.toml
+++ b/src/librustc_session/Cargo.toml
@@ -19,3 +19,4 @@ rustc_span = { path = "../librustc_span" }
 rustc_index = { path = "../librustc_index" }
 rustc_fs_util = { path = "../librustc_fs_util" }
 num_cpus = "1.0"
+syntax = { path = "../libsyntax" }
diff --git a/src/librustc_session/lib.rs b/src/librustc_session/lib.rs
index 65d6635adad..4101c32d547 100644
--- a/src/librustc_session/lib.rs
+++ b/src/librustc_session/lib.rs
@@ -10,7 +10,6 @@ pub mod cgu_reuse_tracker;
 pub mod utils;
 #[macro_use]
 pub mod lint;
-pub mod node_id;
 pub mod parse;
 
 mod code_stats;
diff --git a/src/librustc_session/lint.rs b/src/librustc_session/lint.rs
index 2ba3932c7d9..983dfb19919 100644
--- a/src/librustc_session/lint.rs
+++ b/src/librustc_session/lint.rs
@@ -1,8 +1,8 @@
 pub use self::Level::*;
-use crate::node_id::{NodeId, NodeMap};
 use rustc_data_structures::stable_hasher::{HashStable, StableHasher, ToStableHashKey};
 use rustc_span::edition::Edition;
 use rustc_span::{sym, symbol::Ident, MultiSpan, Span, Symbol};
+use syntax::node_id::{NodeId, NodeMap};
 
 pub mod builtin;
 
diff --git a/src/librustc_session/parse.rs b/src/librustc_session/parse.rs
index 72c68fcb244..32642300262 100644
--- a/src/librustc_session/parse.rs
+++ b/src/librustc_session/parse.rs
@@ -2,8 +2,6 @@
 //! It also serves as an input to the parser itself.
 
 use crate::lint::{BufferedEarlyLint, BuiltinLintDiagnostics, Lint, LintId};
-use crate::node_id::NodeId;
-
 use rustc_data_structures::fx::{FxHashMap, FxHashSet};
 use rustc_data_structures::sync::{Lock, Lrc, Once};
 use rustc_errors::{emitter::SilentEmitter, ColorConfig, Handler};
@@ -13,6 +11,7 @@ use rustc_span::edition::Edition;
 use rustc_span::hygiene::ExpnId;
 use rustc_span::source_map::{FilePathMapping, SourceMap};
 use rustc_span::{MultiSpan, Span, Symbol};
+use syntax::node_id::NodeId;
 
 use std::path::PathBuf;
 use std::str;
diff --git a/src/librustdoc/clean/cfg.rs b/src/librustdoc/clean/cfg.rs
index 84e6ff648a3..da3a277dc2a 100644
--- a/src/librustdoc/clean/cfg.rs
+++ b/src/librustdoc/clean/cfg.rs
@@ -8,9 +8,9 @@ use std::mem;
 use std::ops;
 
 use rustc_feature::Features;
+use rustc_session::parse::ParseSess;
 use rustc_span::symbol::{sym, Symbol};
 use syntax::ast::{LitKind, MetaItem, MetaItemKind, NestedMetaItem};
-use syntax::sess::ParseSess;
 
 use rustc_span::Span;
 
diff --git a/src/librustdoc/html/highlight.rs b/src/librustdoc/html/highlight.rs
index 2a603d9900f..1ea053605ec 100644
--- a/src/librustdoc/html/highlight.rs
+++ b/src/librustdoc/html/highlight.rs
@@ -12,10 +12,10 @@ use std::io;
 use std::io::prelude::*;
 
 use rustc_parse::lexer;
+use rustc_session::parse::ParseSess;
 use rustc_span::source_map::SourceMap;
 use rustc_span::symbol::{kw, sym};
 use rustc_span::{FileName, Span};
-use syntax::sess::ParseSess;
 use syntax::token::{self, Token};
 
 /// Highlights `src`, returning the HTML output.
diff --git a/src/librustdoc/passes/check_code_block_syntax.rs b/src/librustdoc/passes/check_code_block_syntax.rs
index 2903fd9dcd6..3b7c0db05a5 100644
--- a/src/librustdoc/passes/check_code_block_syntax.rs
+++ b/src/librustdoc/passes/check_code_block_syntax.rs
@@ -1,9 +1,9 @@
 use rustc_data_structures::sync::{Lock, Lrc};
 use rustc_errors::{emitter::Emitter, Applicability, Diagnostic, Handler};
 use rustc_parse::lexer::StringReader as Lexer;
+use rustc_session::parse::ParseSess;
 use rustc_span::source_map::{FilePathMapping, SourceMap};
 use rustc_span::{FileName, InnerSpan};
-use syntax::sess::ParseSess;
 use syntax::token;
 
 use crate::clean;
diff --git a/src/librustdoc/test.rs b/src/librustdoc/test.rs
index ba36e06fd37..381308ac6be 100644
--- a/src/librustdoc/test.rs
+++ b/src/librustdoc/test.rs
@@ -395,8 +395,8 @@ pub fn make_test(
             use rustc_errors::emitter::EmitterWriter;
             use rustc_errors::Handler;
             use rustc_parse::maybe_new_parser_from_source_str;
+            use rustc_session::parse::ParseSess;
             use rustc_span::source_map::FilePathMapping;
-            use syntax::sess::ParseSess;
 
             let filename = FileName::anon_source_code(s);
             let source = crates + &everything_else;
diff --git a/src/libsyntax/Cargo.toml b/src/libsyntax/Cargo.toml
index 2e647d2a1e0..b3e16f740fd 100644
--- a/src/libsyntax/Cargo.toml
+++ b/src/libsyntax/Cargo.toml
@@ -16,9 +16,7 @@ scoped-tls = "1.0"
 rustc_errors = { path = "../librustc_errors" }
 rustc_span = { path = "../librustc_span" }
 rustc_data_structures = { path = "../librustc_data_structures" }
-rustc_feature = { path = "../librustc_feature" }
 rustc_index = { path = "../librustc_index" }
 rustc_lexer = { path = "../librustc_lexer" }
 rustc_macros = { path = "../librustc_macros" }
 smallvec = { version = "1.0", features = ["union", "may_dangle"] }
-rustc_session = { path = "../librustc_session" }
diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs
index db4fd53fe16..49f559de1b1 100644
--- a/src/libsyntax/ast.rs
+++ b/src/libsyntax/ast.rs
@@ -256,15 +256,7 @@ impl ParenthesizedArgs {
     }
 }
 
-pub use rustc_session::node_id::NodeId;
-
-/// `NodeId` used to represent the root of the crate.
-pub const CRATE_NODE_ID: NodeId = NodeId::from_u32_const(0);
-
-/// When parsing and doing expansions, we initially give all AST nodes this AST
-/// node value. Then later, in the renumber pass, we renumber them to have
-/// small, positive ids.
-pub const DUMMY_NODE_ID: NodeId = NodeId::MAX;
+pub use crate::node_id::{NodeId, CRATE_NODE_ID, DUMMY_NODE_ID};
 
 /// A modifier on a bound, e.g., `?Sized` or `?const Trait`.
 ///
@@ -432,8 +424,6 @@ pub struct WhereEqPredicate {
     pub rhs_ty: P<Ty>,
 }
 
-pub use rustc_session::parse::CrateConfig;
-
 #[derive(Clone, RustcEncodable, RustcDecodable, Debug)]
 pub struct Crate {
     pub module: Mod,
diff --git a/src/libsyntax/lib.rs b/src/libsyntax/lib.rs
index 9fcc7a1dfa8..a0b2d50cef3 100644
--- a/src/libsyntax/lib.rs
+++ b/src/libsyntax/lib.rs
@@ -41,8 +41,8 @@ pub mod attr;
 pub mod entry;
 pub mod expand;
 pub mod mut_visit;
+pub mod node_id;
 pub mod ptr;
-pub use rustc_session::parse as sess;
 pub mod token;
 pub mod tokenstream;
 pub mod visit;
diff --git a/src/librustc_session/node_id.rs b/src/libsyntax/node_id.rs
index 9fefe908e57..58d2334a7b1 100644
--- a/src/librustc_session/node_id.rs
+++ b/src/libsyntax/node_id.rs
@@ -11,6 +11,14 @@ rustc_index::newtype_index! {
 
 rustc_data_structures::define_id_collections!(NodeMap, NodeSet, NodeId);
 
+/// `NodeId` used to represent the root of the crate.
+pub const CRATE_NODE_ID: NodeId = NodeId::from_u32_const(0);
+
+/// When parsing and doing expansions, we initially give all AST nodes this AST
+/// node value. Then later, in the renumber pass, we renumber them to have
+/// small, positive ids.
+pub const DUMMY_NODE_ID: NodeId = NodeId::MAX;
+
 impl NodeId {
     pub fn placeholder_from_expn_id(expn_id: ExpnId) -> Self {
         NodeId::from_u32(expn_id.as_u32())