mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-04 19:12:50 +00:00
Break dependencies between syntax_ext
and some other crates
Move `source_uitil` macros into `syntax_ext` Cleanup dependencies of `rustc_driver`
This commit is contained in:
parent
09e3989758
commit
3eeec1c5d2
12
Cargo.lock
12
Cargo.lock
@ -2863,31 +2863,20 @@ dependencies = [
|
|||||||
name = "rustc_driver"
|
name = "rustc_driver"
|
||||||
version = "0.0.0"
|
version = "0.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arena 0.0.0",
|
|
||||||
"env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
"env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"graphviz 0.0.0",
|
"graphviz 0.0.0",
|
||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rustc 0.0.0",
|
"rustc 0.0.0",
|
||||||
"rustc-rayon 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"rustc_ast_borrowck 0.0.0",
|
"rustc_ast_borrowck 0.0.0",
|
||||||
"rustc_codegen_utils 0.0.0",
|
"rustc_codegen_utils 0.0.0",
|
||||||
"rustc_data_structures 0.0.0",
|
"rustc_data_structures 0.0.0",
|
||||||
"rustc_errors 0.0.0",
|
"rustc_errors 0.0.0",
|
||||||
"rustc_incremental 0.0.0",
|
|
||||||
"rustc_interface 0.0.0",
|
"rustc_interface 0.0.0",
|
||||||
"rustc_lint 0.0.0",
|
|
||||||
"rustc_metadata 0.0.0",
|
"rustc_metadata 0.0.0",
|
||||||
"rustc_mir 0.0.0",
|
"rustc_mir 0.0.0",
|
||||||
"rustc_passes 0.0.0",
|
|
||||||
"rustc_plugin 0.0.0",
|
|
||||||
"rustc_privacy 0.0.0",
|
|
||||||
"rustc_resolve 0.0.0",
|
|
||||||
"rustc_save_analysis 0.0.0",
|
"rustc_save_analysis 0.0.0",
|
||||||
"rustc_target 0.0.0",
|
"rustc_target 0.0.0",
|
||||||
"rustc_traits 0.0.0",
|
|
||||||
"rustc_typeck 0.0.0",
|
|
||||||
"serialize 0.0.0",
|
"serialize 0.0.0",
|
||||||
"smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"syntax 0.0.0",
|
"syntax 0.0.0",
|
||||||
"syntax_pos 0.0.0",
|
"syntax_pos 0.0.0",
|
||||||
]
|
]
|
||||||
@ -3066,7 +3055,6 @@ dependencies = [
|
|||||||
"rustc_errors 0.0.0",
|
"rustc_errors 0.0.0",
|
||||||
"rustc_mir 0.0.0",
|
"rustc_mir 0.0.0",
|
||||||
"syntax 0.0.0",
|
"syntax 0.0.0",
|
||||||
"syntax_ext 0.0.0",
|
|
||||||
"syntax_pos 0.0.0",
|
"syntax_pos 0.0.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -10,30 +10,19 @@ path = "lib.rs"
|
|||||||
crate-type = ["dylib"]
|
crate-type = ["dylib"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
arena = { path = "../libarena" }
|
|
||||||
graphviz = { path = "../libgraphviz" }
|
graphviz = { path = "../libgraphviz" }
|
||||||
log = "0.4"
|
log = "0.4"
|
||||||
env_logger = { version = "0.5", default-features = false }
|
env_logger = { version = "0.5", default-features = false }
|
||||||
rayon = { version = "0.2.0", package = "rustc-rayon" }
|
|
||||||
rustc = { path = "../librustc" }
|
rustc = { path = "../librustc" }
|
||||||
rustc_target = { path = "../librustc_target" }
|
rustc_target = { path = "../librustc_target" }
|
||||||
rustc_ast_borrowck = { path = "../librustc_ast_borrowck" }
|
rustc_ast_borrowck = { path = "../librustc_ast_borrowck" }
|
||||||
rustc_data_structures = { path = "../librustc_data_structures" }
|
rustc_data_structures = { path = "../librustc_data_structures" }
|
||||||
errors = { path = "../librustc_errors", package = "rustc_errors" }
|
errors = { path = "../librustc_errors", package = "rustc_errors" }
|
||||||
rustc_incremental = { path = "../librustc_incremental" }
|
|
||||||
rustc_lint = { path = "../librustc_lint" }
|
|
||||||
rustc_metadata = { path = "../librustc_metadata" }
|
rustc_metadata = { path = "../librustc_metadata" }
|
||||||
rustc_mir = { path = "../librustc_mir" }
|
rustc_mir = { path = "../librustc_mir" }
|
||||||
rustc_passes = { path = "../librustc_passes" }
|
|
||||||
rustc_plugin = { path = "../librustc_plugin" }
|
|
||||||
rustc_privacy = { path = "../librustc_privacy" }
|
|
||||||
rustc_resolve = { path = "../librustc_resolve" }
|
|
||||||
rustc_save_analysis = { path = "../librustc_save_analysis" }
|
rustc_save_analysis = { path = "../librustc_save_analysis" }
|
||||||
rustc_traits = { path = "../librustc_traits" }
|
|
||||||
rustc_codegen_utils = { path = "../librustc_codegen_utils" }
|
rustc_codegen_utils = { path = "../librustc_codegen_utils" }
|
||||||
rustc_typeck = { path = "../librustc_typeck" }
|
|
||||||
rustc_interface = { path = "../librustc_interface" }
|
rustc_interface = { path = "../librustc_interface" }
|
||||||
rustc_serialize = { path = "../libserialize", package = "serialize" }
|
rustc_serialize = { path = "../libserialize", package = "serialize" }
|
||||||
syntax = { path = "../libsyntax" }
|
syntax = { path = "../libsyntax" }
|
||||||
smallvec = { version = "0.6.7", features = ["union", "may_dangle"] }
|
|
||||||
syntax_pos = { path = "../libsyntax_pos" }
|
syntax_pos = { path = "../libsyntax_pos" }
|
||||||
|
@ -14,6 +14,5 @@ rustc = { path = "../librustc" }
|
|||||||
rustc_mir = { path = "../librustc_mir"}
|
rustc_mir = { path = "../librustc_mir"}
|
||||||
rustc_data_structures = { path = "../librustc_data_structures" }
|
rustc_data_structures = { path = "../librustc_data_structures" }
|
||||||
syntax = { path = "../libsyntax" }
|
syntax = { path = "../libsyntax" }
|
||||||
syntax_ext = { path = "../libsyntax_ext" }
|
|
||||||
syntax_pos = { path = "../libsyntax_pos" }
|
syntax_pos = { path = "../libsyntax_pos" }
|
||||||
errors = { path = "../librustc_errors", package = "rustc_errors" }
|
errors = { path = "../librustc_errors", package = "rustc_errors" }
|
||||||
|
@ -14,12 +14,12 @@ use rustc::session::Session;
|
|||||||
use rustc_data_structures::fx::FxHashMap;
|
use rustc_data_structures::fx::FxHashMap;
|
||||||
use syntax::ast::*;
|
use syntax::ast::*;
|
||||||
use syntax::attr;
|
use syntax::attr;
|
||||||
|
use syntax::ext::proc_macro::is_proc_macro_attr;
|
||||||
use syntax::feature_gate::is_builtin_attr;
|
use syntax::feature_gate::is_builtin_attr;
|
||||||
use syntax::source_map::Spanned;
|
use syntax::source_map::Spanned;
|
||||||
use syntax::symbol::{kw, sym};
|
use syntax::symbol::{kw, sym};
|
||||||
use syntax::visit::{self, Visitor};
|
use syntax::visit::{self, Visitor};
|
||||||
use syntax::{span_err, struct_span_err, walk_list};
|
use syntax::{span_err, struct_span_err, walk_list};
|
||||||
use syntax_ext::proc_macro_decls::is_proc_macro_attr;
|
|
||||||
use syntax_pos::{Span, MultiSpan};
|
use syntax_pos::{Span, MultiSpan};
|
||||||
use errors::{Applicability, FatalError};
|
use errors::{Applicability, FatalError};
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ use crate::tokenstream::{self, TokenStream, TokenTree};
|
|||||||
|
|
||||||
use errors::{DiagnosticBuilder, DiagnosticId};
|
use errors::{DiagnosticBuilder, DiagnosticId};
|
||||||
use smallvec::{smallvec, SmallVec};
|
use smallvec::{smallvec, SmallVec};
|
||||||
use syntax_pos::{Span, MultiSpan, DUMMY_SP};
|
use syntax_pos::{FileName, Span, MultiSpan, DUMMY_SP};
|
||||||
use syntax_pos::hygiene::{ExpnInfo, ExpnKind};
|
use syntax_pos::hygiene::{ExpnInfo, ExpnKind};
|
||||||
|
|
||||||
use rustc_data_structures::fx::FxHashMap;
|
use rustc_data_structures::fx::FxHashMap;
|
||||||
|
7
src/libsyntax/ext/proc_macro.rs
Normal file
7
src/libsyntax/ext/proc_macro.rs
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
use crate::ast::Attribute;
|
||||||
|
use crate::symbol::sym;
|
||||||
|
|
||||||
|
pub fn is_proc_macro_attr(attr: &Attribute) -> bool {
|
||||||
|
[sym::proc_macro, sym::proc_macro_attribute, sym::proc_macro_derive]
|
||||||
|
.iter().any(|kind| attr.check_name(*kind))
|
||||||
|
}
|
@ -37,6 +37,7 @@ const MACRO_ARGUMENTS: Option<&'static str> = Some("macro arguments");
|
|||||||
// way towards a non-panic!-prone parser. It should be used for fatal parsing
|
// way towards a non-panic!-prone parser. It should be used for fatal parsing
|
||||||
// errors; eventually we plan to convert all code using panictry to just use
|
// errors; eventually we plan to convert all code using panictry to just use
|
||||||
// normal try.
|
// normal try.
|
||||||
|
#[macro_export]
|
||||||
macro_rules! panictry {
|
macro_rules! panictry {
|
||||||
($e:expr) => ({
|
($e:expr) => ({
|
||||||
use std::result::Result::{Ok, Err};
|
use std::result::Result::{Ok, Err};
|
||||||
@ -168,7 +169,7 @@ pub mod ext {
|
|||||||
pub mod derive;
|
pub mod derive;
|
||||||
pub mod expand;
|
pub mod expand;
|
||||||
pub mod placeholders;
|
pub mod placeholders;
|
||||||
pub mod source_util;
|
pub mod proc_macro;
|
||||||
|
|
||||||
pub mod tt {
|
pub mod tt {
|
||||||
pub mod transcribe;
|
pub mod transcribe;
|
||||||
|
@ -39,6 +39,7 @@ mod global_allocator;
|
|||||||
mod global_asm;
|
mod global_asm;
|
||||||
mod log_syntax;
|
mod log_syntax;
|
||||||
mod proc_macro_server;
|
mod proc_macro_server;
|
||||||
|
mod source_util;
|
||||||
mod test;
|
mod test;
|
||||||
mod test_case;
|
mod test_case;
|
||||||
mod trace_macros;
|
mod trace_macros;
|
||||||
|
@ -7,21 +7,15 @@ use syntax::ext::base::{ExtCtxt, MacroKind};
|
|||||||
use syntax::ext::build::AstBuilder;
|
use syntax::ext::build::AstBuilder;
|
||||||
use syntax::ext::expand::ExpansionConfig;
|
use syntax::ext::expand::ExpansionConfig;
|
||||||
use syntax::ext::hygiene::ExpnId;
|
use syntax::ext::hygiene::ExpnId;
|
||||||
|
use syntax::ext::proc_macro::is_proc_macro_attr;
|
||||||
use syntax::mut_visit::MutVisitor;
|
use syntax::mut_visit::MutVisitor;
|
||||||
use syntax::parse::ParseSess;
|
use syntax::parse::ParseSess;
|
||||||
use syntax::ptr::P;
|
use syntax::ptr::P;
|
||||||
use syntax::symbol::Symbol;
|
|
||||||
use syntax::symbol::{kw, sym};
|
use syntax::symbol::{kw, sym};
|
||||||
use syntax::visit::{self, Visitor};
|
use syntax::visit::{self, Visitor};
|
||||||
|
|
||||||
use syntax_pos::{Span, DUMMY_SP};
|
use syntax_pos::{Span, DUMMY_SP};
|
||||||
|
|
||||||
const PROC_MACRO_KINDS: [Symbol; 3] = [
|
|
||||||
sym::proc_macro_derive,
|
|
||||||
sym::proc_macro_attribute,
|
|
||||||
sym::proc_macro
|
|
||||||
];
|
|
||||||
|
|
||||||
struct ProcMacroDerive {
|
struct ProcMacroDerive {
|
||||||
trait_name: ast::Name,
|
trait_name: ast::Name,
|
||||||
function_name: Ident,
|
function_name: Ident,
|
||||||
@ -88,10 +82,6 @@ pub fn modify(sess: &ParseSess,
|
|||||||
krate
|
krate
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn is_proc_macro_attr(attr: &ast::Attribute) -> bool {
|
|
||||||
PROC_MACRO_KINDS.iter().any(|kind| attr.check_name(*kind))
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'a> CollectProcMacros<'a> {
|
impl<'a> CollectProcMacros<'a> {
|
||||||
fn check_not_pub_in_root(&self, vis: &ast::Visibility, sp: Span) {
|
fn check_not_pub_in_root(&self, vis: &ast::Visibility, sp: Span) {
|
||||||
if self.is_proc_macro_crate && self.in_root && vis.node.is_pub() {
|
if self.is_proc_macro_crate && self.in_root && vis.node.is_pub() {
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
use crate::ast;
|
use syntax::{ast, panictry};
|
||||||
use crate::ext::base::{self, *};
|
use syntax::ext::base::{self, *};
|
||||||
use crate::ext::build::AstBuilder;
|
use syntax::ext::build::AstBuilder;
|
||||||
use crate::parse::{self, token, DirectoryOwnership};
|
use syntax::parse::{self, token, DirectoryOwnership};
|
||||||
use crate::print::pprust;
|
use syntax::print::pprust;
|
||||||
use crate::ptr::P;
|
use syntax::ptr::P;
|
||||||
use crate::symbol::Symbol;
|
use syntax::symbol::Symbol;
|
||||||
use crate::tokenstream;
|
use syntax::tokenstream;
|
||||||
|
|
||||||
use smallvec::SmallVec;
|
use smallvec::SmallVec;
|
||||||
use syntax_pos::{self, Pos, Span};
|
use syntax_pos::{self, Pos, Span};
|
||||||
@ -94,7 +94,7 @@ pub fn expand_include<'cx>(cx: &'cx mut ExtCtxt<'_>, sp: Span, tts: &[tokenstrea
|
|||||||
while self.p.token != token::Eof {
|
while self.p.token != token::Eof {
|
||||||
match panictry!(self.p.parse_item()) {
|
match panictry!(self.p.parse_item()) {
|
||||||
Some(item) => ret.push(item),
|
Some(item) => ret.push(item),
|
||||||
None => self.p.diagnostic().span_fatal(self.p.token.span,
|
None => self.p.sess.span_diagnostic.span_fatal(self.p.token.span,
|
||||||
&format!("expected item, found `{}`",
|
&format!("expected item, found `{}`",
|
||||||
self.p.this_token_to_string()))
|
self.p.this_token_to_string()))
|
||||||
.raise()
|
.raise()
|
Loading…
Reference in New Issue
Block a user