Skip to content

Commit 3eeec1c

Browse files
committed
Break dependencies between syntax_ext and some other crates
Move `source_uitil` macros into `syntax_ext` Cleanup dependencies of `rustc_driver`
1 parent 09e3989 commit 3eeec1c

File tree

10 files changed

+22
-47
lines changed

10 files changed

+22
-47
lines changed

Cargo.lock

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2863,31 +2863,20 @@ dependencies = [
28632863
name = "rustc_driver"
28642864
version = "0.0.0"
28652865
dependencies = [
2866-
"arena 0.0.0",
28672866
"env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)",
28682867
"graphviz 0.0.0",
28692868
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
28702869
"rustc 0.0.0",
2871-
"rustc-rayon 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
28722870
"rustc_ast_borrowck 0.0.0",
28732871
"rustc_codegen_utils 0.0.0",
28742872
"rustc_data_structures 0.0.0",
28752873
"rustc_errors 0.0.0",
2876-
"rustc_incremental 0.0.0",
28772874
"rustc_interface 0.0.0",
2878-
"rustc_lint 0.0.0",
28792875
"rustc_metadata 0.0.0",
28802876
"rustc_mir 0.0.0",
2881-
"rustc_passes 0.0.0",
2882-
"rustc_plugin 0.0.0",
2883-
"rustc_privacy 0.0.0",
2884-
"rustc_resolve 0.0.0",
28852877
"rustc_save_analysis 0.0.0",
28862878
"rustc_target 0.0.0",
2887-
"rustc_traits 0.0.0",
2888-
"rustc_typeck 0.0.0",
28892879
"serialize 0.0.0",
2890-
"smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
28912880
"syntax 0.0.0",
28922881
"syntax_pos 0.0.0",
28932882
]
@@ -3066,7 +3055,6 @@ dependencies = [
30663055
"rustc_errors 0.0.0",
30673056
"rustc_mir 0.0.0",
30683057
"syntax 0.0.0",
3069-
"syntax_ext 0.0.0",
30703058
"syntax_pos 0.0.0",
30713059
]
30723060

src/librustc_driver/Cargo.toml

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,30 +10,19 @@ path = "lib.rs"
1010
crate-type = ["dylib"]
1111

1212
[dependencies]
13-
arena = { path = "../libarena" }
1413
graphviz = { path = "../libgraphviz" }
1514
log = "0.4"
1615
env_logger = { version = "0.5", default-features = false }
17-
rayon = { version = "0.2.0", package = "rustc-rayon" }
1816
rustc = { path = "../librustc" }
1917
rustc_target = { path = "../librustc_target" }
2018
rustc_ast_borrowck = { path = "../librustc_ast_borrowck" }
2119
rustc_data_structures = { path = "../librustc_data_structures" }
2220
errors = { path = "../librustc_errors", package = "rustc_errors" }
23-
rustc_incremental = { path = "../librustc_incremental" }
24-
rustc_lint = { path = "../librustc_lint" }
2521
rustc_metadata = { path = "../librustc_metadata" }
2622
rustc_mir = { path = "../librustc_mir" }
27-
rustc_passes = { path = "../librustc_passes" }
28-
rustc_plugin = { path = "../librustc_plugin" }
29-
rustc_privacy = { path = "../librustc_privacy" }
30-
rustc_resolve = { path = "../librustc_resolve" }
3123
rustc_save_analysis = { path = "../librustc_save_analysis" }
32-
rustc_traits = { path = "../librustc_traits" }
3324
rustc_codegen_utils = { path = "../librustc_codegen_utils" }
34-
rustc_typeck = { path = "../librustc_typeck" }
3525
rustc_interface = { path = "../librustc_interface" }
3626
rustc_serialize = { path = "../libserialize", package = "serialize" }
3727
syntax = { path = "../libsyntax" }
38-
smallvec = { version = "0.6.7", features = ["union", "may_dangle"] }
3928
syntax_pos = { path = "../libsyntax_pos" }

src/librustc_passes/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,5 @@ rustc = { path = "../librustc" }
1414
rustc_mir = { path = "../librustc_mir"}
1515
rustc_data_structures = { path = "../librustc_data_structures" }
1616
syntax = { path = "../libsyntax" }
17-
syntax_ext = { path = "../libsyntax_ext" }
1817
syntax_pos = { path = "../libsyntax_pos" }
1918
errors = { path = "../librustc_errors", package = "rustc_errors" }

src/librustc_passes/ast_validation.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ use rustc::session::Session;
1414
use rustc_data_structures::fx::FxHashMap;
1515
use syntax::ast::*;
1616
use syntax::attr;
17+
use syntax::ext::proc_macro::is_proc_macro_attr;
1718
use syntax::feature_gate::is_builtin_attr;
1819
use syntax::source_map::Spanned;
1920
use syntax::symbol::{kw, sym};
2021
use syntax::visit::{self, Visitor};
2122
use syntax::{span_err, struct_span_err, walk_list};
22-
use syntax_ext::proc_macro_decls::is_proc_macro_attr;
2323
use syntax_pos::{Span, MultiSpan};
2424
use errors::{Applicability, FatalError};
2525

src/libsyntax/ext/base.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use crate::tokenstream::{self, TokenStream, TokenTree};
1414

1515
use errors::{DiagnosticBuilder, DiagnosticId};
1616
use smallvec::{smallvec, SmallVec};
17-
use syntax_pos::{Span, MultiSpan, DUMMY_SP};
17+
use syntax_pos::{FileName, Span, MultiSpan, DUMMY_SP};
1818
use syntax_pos::hygiene::{ExpnInfo, ExpnKind};
1919

2020
use rustc_data_structures::fx::FxHashMap;

src/libsyntax/ext/proc_macro.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
use crate::ast::Attribute;
2+
use crate::symbol::sym;
3+
4+
pub fn is_proc_macro_attr(attr: &Attribute) -> bool {
5+
[sym::proc_macro, sym::proc_macro_attribute, sym::proc_macro_derive]
6+
.iter().any(|kind| attr.check_name(*kind))
7+
}

src/libsyntax/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ const MACRO_ARGUMENTS: Option<&'static str> = Some("macro arguments");
3737
// way towards a non-panic!-prone parser. It should be used for fatal parsing
3838
// errors; eventually we plan to convert all code using panictry to just use
3939
// normal try.
40+
#[macro_export]
4041
macro_rules! panictry {
4142
($e:expr) => ({
4243
use std::result::Result::{Ok, Err};
@@ -168,7 +169,7 @@ pub mod ext {
168169
pub mod derive;
169170
pub mod expand;
170171
pub mod placeholders;
171-
pub mod source_util;
172+
pub mod proc_macro;
172173

173174
pub mod tt {
174175
pub mod transcribe;

src/libsyntax_ext/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ mod global_allocator;
3939
mod global_asm;
4040
mod log_syntax;
4141
mod proc_macro_server;
42+
mod source_util;
4243
mod test;
4344
mod test_case;
4445
mod trace_macros;

src/libsyntax_ext/proc_macro_decls.rs

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,15 @@ use syntax::ext::base::{ExtCtxt, MacroKind};
77
use syntax::ext::build::AstBuilder;
88
use syntax::ext::expand::ExpansionConfig;
99
use syntax::ext::hygiene::ExpnId;
10+
use syntax::ext::proc_macro::is_proc_macro_attr;
1011
use syntax::mut_visit::MutVisitor;
1112
use syntax::parse::ParseSess;
1213
use syntax::ptr::P;
13-
use syntax::symbol::Symbol;
1414
use syntax::symbol::{kw, sym};
1515
use syntax::visit::{self, Visitor};
1616

1717
use syntax_pos::{Span, DUMMY_SP};
1818

19-
const PROC_MACRO_KINDS: [Symbol; 3] = [
20-
sym::proc_macro_derive,
21-
sym::proc_macro_attribute,
22-
sym::proc_macro
23-
];
24-
2519
struct ProcMacroDerive {
2620
trait_name: ast::Name,
2721
function_name: Ident,
@@ -88,10 +82,6 @@ pub fn modify(sess: &ParseSess,
8882
krate
8983
}
9084

91-
pub fn is_proc_macro_attr(attr: &ast::Attribute) -> bool {
92-
PROC_MACRO_KINDS.iter().any(|kind| attr.check_name(*kind))
93-
}
94-
9585
impl<'a> CollectProcMacros<'a> {
9686
fn check_not_pub_in_root(&self, vis: &ast::Visibility, sp: Span) {
9787
if self.is_proc_macro_crate && self.in_root && vis.node.is_pub() {

src/libsyntax/ext/source_util.rs renamed to src/libsyntax_ext/source_util.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
use crate::ast;
2-
use crate::ext::base::{self, *};
3-
use crate::ext::build::AstBuilder;
4-
use crate::parse::{self, token, DirectoryOwnership};
5-
use crate::print::pprust;
6-
use crate::ptr::P;
7-
use crate::symbol::Symbol;
8-
use crate::tokenstream;
1+
use syntax::{ast, panictry};
2+
use syntax::ext::base::{self, *};
3+
use syntax::ext::build::AstBuilder;
4+
use syntax::parse::{self, token, DirectoryOwnership};
5+
use syntax::print::pprust;
6+
use syntax::ptr::P;
7+
use syntax::symbol::Symbol;
8+
use syntax::tokenstream;
99

1010
use smallvec::SmallVec;
1111
use syntax_pos::{self, Pos, Span};
@@ -94,7 +94,7 @@ pub fn expand_include<'cx>(cx: &'cx mut ExtCtxt<'_>, sp: Span, tts: &[tokenstrea
9494
while self.p.token != token::Eof {
9595
match panictry!(self.p.parse_item()) {
9696
Some(item) => ret.push(item),
97-
None => self.p.diagnostic().span_fatal(self.p.token.span,
97+
None => self.p.sess.span_diagnostic.span_fatal(self.p.token.span,
9898
&format!("expected item, found `{}`",
9999
self.p.this_token_to_string()))
100100
.raise()

0 commit comments

Comments
 (0)