Auto merge of #68133 - Centril:slimmer-syntax, r=petrochenkov

Slimmer syntax

High-level summary of changes:

- The `syntax::node_count` pass is moved into `rustc_ast_passes`. This works towards improving #65031 by making compiling `syntax` go faster.

- The `syntax::{GLOBALS, with_globals, ..}` business is consolidated into `syntax::attr` for cleaner code and future possible improvements.

- The pretty printer loses its dependency on `ParseSess`, opting to use `SourceMap` & friends directly instead.

- Some drive by cleanup of `syntax::attr::HasAttr` happens.

- Builtin attribute logic (`syntax::attr::builtin`) + `syntax::attr::allow_internal_unstable` is moved into a new `rustc_attr` crate. More logic from `syntax::attr` should be moved into that crate over time. This also means that `syntax` loses all mentions of `ParseSess`, which enables the next point.

- The pretty printer `syntax::print` is moved into a new crate `rustc_ast_pretty`.

- `rustc_session::node_id` is moved back as `syntax::node_id`. As a result, `syntax` gets to drop dependencies on `rustc_session` (and implicitly `rustc_target`), `rustc_error_codes`, and `rustc_errors`. Moreover `rustc_hir` gets to drop its dependency on `rustc_session` as well. At this point, these crates are mostly "pure data crates", which is approaching a desirable end state.

  - We should consider renaming `syntax` to `rustc_ast` now.
This commit is contained in:
bors 2020-02-01 18:29:09 +00:00
commit 13db6501c7
139 changed files with 451 additions and 358 deletions

View file

@ -1,6 +1,7 @@
#![feature(box_syntax, plugin, plugin_registrar, rustc_private)]
#![crate_type = "dylib"]
extern crate rustc_ast_pretty;
extern crate rustc_driver;
extern crate rustc_hir;
#[macro_use] extern crate rustc_lint;
@ -8,13 +9,13 @@ extern crate rustc_hir;
extern crate rustc_span;
extern crate syntax;
use rustc_ast_pretty::pprust;
use rustc_hir::intravisit;
use rustc_hir as hir;
use rustc_hir::Node;
use rustc_lint::{LateContext, LintPass, LintArray, LateLintPass, LintContext};
use rustc_driver::plugin::Registry;
use rustc_span::source_map;
use syntax::print::pprust;
#[plugin_registrar]
pub fn plugin_registrar(reg: &mut Registry) {

View file

@ -6,12 +6,13 @@
extern crate syntax;
extern crate rustc_parse;
extern crate rustc_session;
extern crate rustc_span;
use rustc_parse::new_parser_from_file;
use rustc_session::parse::ParseSess;
use rustc_span::source_map::FilePathMapping;
use std::path::Path;
use syntax::sess::ParseSess;
#[path = "mod_dir_simple/test.rs"]
mod gravy;

View file

@ -19,19 +19,21 @@
#![feature(rustc_private)]
extern crate rustc_ast_pretty;
extern crate rustc_data_structures;
extern crate syntax;
extern crate rustc_parse;
extern crate rustc_session;
extern crate rustc_span;
use rustc_ast_pretty::pprust;
use rustc_data_structures::thin_vec::ThinVec;
use rustc_parse::new_parser_from_source_str;
use rustc_session::parse::ParseSess;
use rustc_span::source_map::{Spanned, DUMMY_SP, FileName};
use rustc_span::source_map::FilePathMapping;
use syntax::ast::*;
use syntax::sess::ParseSess;
use syntax::mut_visit::{self, MutVisitor, visit_clobber};
use syntax::print::pprust;
use syntax::ptr::P;
fn parse_expr(ps: &ParseSess, src: &str) -> Option<P<Expr>> {