From e38fde71b1dede9772043b71fe09c43b4ba61b8c Mon Sep 17 00:00:00 2001 From: klutzy Date: Thu, 29 May 2014 15:17:00 +0900 Subject: [PATCH 1/2] doc: Remove use of `pub use` globs --- src/doc/rust.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/doc/rust.md b/src/doc/rust.md index cde26bd8813..61fd83c10d4 100644 --- a/src/doc/rust.md +++ b/src/doc/rust.md @@ -904,7 +904,7 @@ An example of re-exporting: ~~~~ # fn main() { } mod quux { - pub use quux::foo::*; + pub use quux::foo::{bar, baz}; pub mod foo { pub fn bar() { } @@ -913,10 +913,10 @@ mod quux { } ~~~~ -In this example, the module `quux` re-exports all of the public names defined in `foo`. +In this example, the module `quux` re-exports two public names defined in `foo`. Also note that the paths contained in `use` items are relative to the crate root. -So, in the previous example, the `use` refers to `quux::foo::*`, and not simply to `foo::*`. +So, in the previous example, the `use` refers to `quux::foo::{bar, baz}`, and not simply to `foo::{bar, baz}`. This also means that top-level module declarations should be at the crate root if direct usage of the declared modules within `use` items is desired. It is also possible to use `self` and `super` at the beginning of a `use` item to refer to the current and direct parent modules respectively. From 976c8324e1e5f2ec1e4bd4e8d029abce02ff7654 Mon Sep 17 00:00:00 2001 From: klutzy Date: Thu, 29 May 2014 12:19:05 +0900 Subject: [PATCH 2/2] syntax: Remove use of `pub use` globs `quote_expr!` now injects two more (priv) `use` globs. This may cause extra unused_imports warning. --- src/libregex_macros/lib.rs | 1 + src/libsyntax/ext/build.rs | 4 ++-- src/libsyntax/ext/deriving/bounds.rs | 1 + src/libsyntax/ext/deriving/clone.rs | 1 + src/libsyntax/ext/deriving/cmp/eq.rs | 1 + src/libsyntax/ext/deriving/cmp/ord.rs | 1 + src/libsyntax/ext/deriving/cmp/totaleq.rs | 1 + src/libsyntax/ext/deriving/cmp/totalord.rs | 1 + src/libsyntax/ext/deriving/decodable.rs | 1 + src/libsyntax/ext/deriving/default.rs | 1 + src/libsyntax/ext/deriving/encodable.rs | 1 + src/libsyntax/ext/deriving/generic/mod.rs | 5 ++-- src/libsyntax/ext/deriving/hash.rs | 1 + src/libsyntax/ext/deriving/primitive.rs | 1 + src/libsyntax/ext/deriving/rand.rs | 1 + src/libsyntax/ext/deriving/show.rs | 1 + src/libsyntax/ext/deriving/zero.rs | 1 + src/libsyntax/ext/quote.rs | 28 +++++++++++++++------- src/libsyntax/lib.rs | 1 + 19 files changed, 41 insertions(+), 12 deletions(-) diff --git a/src/libregex_macros/lib.rs b/src/libregex_macros/lib.rs index 71e3d06cf96..452d1d74e52 100644 --- a/src/libregex_macros/lib.rs +++ b/src/libregex_macros/lib.rs @@ -20,6 +20,7 @@ html_root_url = "http://doc.rust-lang.org/")] #![feature(macro_registrar, managed_boxes, quote)] +#![allow(unused_imports)] // `quote_expr!` adds some `use` globs which may be unused extern crate regex; extern crate syntax; diff --git a/src/libsyntax/ext/build.rs b/src/libsyntax/ext/build.rs index bb7b73c5f81..7b25f4db980 100644 --- a/src/libsyntax/ext/build.rs +++ b/src/libsyntax/ext/build.rs @@ -9,16 +9,16 @@ // except according to those terms. use abi; -use ast::{P, Ident}; +use ast::{P, Ident, Generics, NodeId, Expr}; use ast; use ast_util; use attr; use codemap::{Span, respan, Spanned, DUMMY_SP}; use ext::base::ExtCtxt; -use ext::quote::rt::*; use fold::Folder; use owned_slice::OwnedSlice; use parse::token::special_idents; +use parse::token::InternedString; use parse::token; pub struct Field { diff --git a/src/libsyntax/ext/deriving/bounds.rs b/src/libsyntax/ext/deriving/bounds.rs index d90c7f37213..81fb1e46bba 100644 --- a/src/libsyntax/ext/deriving/bounds.rs +++ b/src/libsyntax/ext/deriving/bounds.rs @@ -12,6 +12,7 @@ use ast::{MetaItem, MetaWord, Item}; use codemap::Span; use ext::base::ExtCtxt; use ext::deriving::generic::*; +use ext::deriving::generic::ty::*; pub fn expand_deriving_bound(cx: &mut ExtCtxt, span: Span, diff --git a/src/libsyntax/ext/deriving/clone.rs b/src/libsyntax/ext/deriving/clone.rs index 89c94891b33..6ddfedfeb4f 100644 --- a/src/libsyntax/ext/deriving/clone.rs +++ b/src/libsyntax/ext/deriving/clone.rs @@ -13,6 +13,7 @@ use codemap::Span; use ext::base::ExtCtxt; use ext::build::AstBuilder; use ext::deriving::generic::*; +use ext::deriving::generic::ty::*; use parse::token::InternedString; pub fn expand_deriving_clone(cx: &mut ExtCtxt, diff --git a/src/libsyntax/ext/deriving/cmp/eq.rs b/src/libsyntax/ext/deriving/cmp/eq.rs index 4a8c64f870b..e7a6cb35582 100644 --- a/src/libsyntax/ext/deriving/cmp/eq.rs +++ b/src/libsyntax/ext/deriving/cmp/eq.rs @@ -13,6 +13,7 @@ use codemap::Span; use ext::base::ExtCtxt; use ext::build::AstBuilder; use ext::deriving::generic::*; +use ext::deriving::generic::ty::*; use parse::token::InternedString; pub fn expand_deriving_eq(cx: &mut ExtCtxt, diff --git a/src/libsyntax/ext/deriving/cmp/ord.rs b/src/libsyntax/ext/deriving/cmp/ord.rs index 5d5619a740f..abe504b8885 100644 --- a/src/libsyntax/ext/deriving/cmp/ord.rs +++ b/src/libsyntax/ext/deriving/cmp/ord.rs @@ -14,6 +14,7 @@ use codemap::Span; use ext::base::ExtCtxt; use ext::build::AstBuilder; use ext::deriving::generic::*; +use ext::deriving::generic::ty::*; use parse::token::InternedString; pub fn expand_deriving_ord(cx: &mut ExtCtxt, diff --git a/src/libsyntax/ext/deriving/cmp/totaleq.rs b/src/libsyntax/ext/deriving/cmp/totaleq.rs index a8124493acb..fb7be4c14b6 100644 --- a/src/libsyntax/ext/deriving/cmp/totaleq.rs +++ b/src/libsyntax/ext/deriving/cmp/totaleq.rs @@ -13,6 +13,7 @@ use codemap::Span; use ext::base::ExtCtxt; use ext::build::AstBuilder; use ext::deriving::generic::*; +use ext::deriving::generic::ty::*; use parse::token::InternedString; pub fn expand_deriving_totaleq(cx: &mut ExtCtxt, diff --git a/src/libsyntax/ext/deriving/cmp/totalord.rs b/src/libsyntax/ext/deriving/cmp/totalord.rs index c4611a552f5..03ac4c9ab03 100644 --- a/src/libsyntax/ext/deriving/cmp/totalord.rs +++ b/src/libsyntax/ext/deriving/cmp/totalord.rs @@ -14,6 +14,7 @@ use codemap::Span; use ext::base::ExtCtxt; use ext::build::AstBuilder; use ext::deriving::generic::*; +use ext::deriving::generic::ty::*; use parse::token::InternedString; use std::cmp::{Ordering, Equal, Less, Greater}; diff --git a/src/libsyntax/ext/deriving/decodable.rs b/src/libsyntax/ext/deriving/decodable.rs index 172ae8dca62..fe198749384 100644 --- a/src/libsyntax/ext/deriving/decodable.rs +++ b/src/libsyntax/ext/deriving/decodable.rs @@ -19,6 +19,7 @@ use codemap::Span; use ext::base::ExtCtxt; use ext::build::AstBuilder; use ext::deriving::generic::*; +use ext::deriving::generic::ty::*; use parse::token::InternedString; use parse::token; diff --git a/src/libsyntax/ext/deriving/default.rs b/src/libsyntax/ext/deriving/default.rs index c225906ed2b..28547a5a494 100644 --- a/src/libsyntax/ext/deriving/default.rs +++ b/src/libsyntax/ext/deriving/default.rs @@ -13,6 +13,7 @@ use codemap::Span; use ext::base::ExtCtxt; use ext::build::AstBuilder; use ext::deriving::generic::*; +use ext::deriving::generic::ty::*; use parse::token::InternedString; pub fn expand_deriving_default(cx: &mut ExtCtxt, diff --git a/src/libsyntax/ext/deriving/encodable.rs b/src/libsyntax/ext/deriving/encodable.rs index d6b7e84b535..c8f5061c989 100644 --- a/src/libsyntax/ext/deriving/encodable.rs +++ b/src/libsyntax/ext/deriving/encodable.rs @@ -88,6 +88,7 @@ use codemap::Span; use ext::base::ExtCtxt; use ext::build::AstBuilder; use ext::deriving::generic::*; +use ext::deriving::generic::ty::*; use parse::token; pub fn expand_deriving_encodable(cx: &mut ExtCtxt, diff --git a/src/libsyntax/ext/deriving/generic/mod.rs b/src/libsyntax/ext/deriving/generic/mod.rs index 7bf4df357f4..eb224d255e5 100644 --- a/src/libsyntax/ext/deriving/generic/mod.rs +++ b/src/libsyntax/ext/deriving/generic/mod.rs @@ -191,8 +191,9 @@ use codemap::Span; use owned_slice::OwnedSlice; use parse::token::InternedString; -pub use self::ty::*; -mod ty; +use self::ty::*; + +pub mod ty; pub struct TraitDef<'a> { /// The span for the current #[deriving(Foo)] header. diff --git a/src/libsyntax/ext/deriving/hash.rs b/src/libsyntax/ext/deriving/hash.rs index 3e6b8d522d4..a9d5f156a99 100644 --- a/src/libsyntax/ext/deriving/hash.rs +++ b/src/libsyntax/ext/deriving/hash.rs @@ -14,6 +14,7 @@ use codemap::Span; use ext::base::ExtCtxt; use ext::build::AstBuilder; use ext::deriving::generic::*; +use ext::deriving::generic::ty::*; use parse::token::InternedString; pub fn expand_deriving_hash(cx: &mut ExtCtxt, diff --git a/src/libsyntax/ext/deriving/primitive.rs b/src/libsyntax/ext/deriving/primitive.rs index 5066a395b41..0db3233c475 100644 --- a/src/libsyntax/ext/deriving/primitive.rs +++ b/src/libsyntax/ext/deriving/primitive.rs @@ -14,6 +14,7 @@ use codemap::Span; use ext::base::ExtCtxt; use ext::build::AstBuilder; use ext::deriving::generic::*; +use ext::deriving::generic::ty::*; use parse::token::InternedString; pub fn expand_deriving_from_primitive(cx: &mut ExtCtxt, diff --git a/src/libsyntax/ext/deriving/rand.rs b/src/libsyntax/ext/deriving/rand.rs index 5314b39f805..86620f1aa1b 100644 --- a/src/libsyntax/ext/deriving/rand.rs +++ b/src/libsyntax/ext/deriving/rand.rs @@ -14,6 +14,7 @@ use codemap::Span; use ext::base::ExtCtxt; use ext::build::{AstBuilder}; use ext::deriving::generic::*; +use ext::deriving::generic::ty::*; pub fn expand_deriving_rand(cx: &mut ExtCtxt, span: Span, diff --git a/src/libsyntax/ext/deriving/show.rs b/src/libsyntax/ext/deriving/show.rs index fb6a85e4e7c..b352a702eec 100644 --- a/src/libsyntax/ext/deriving/show.rs +++ b/src/libsyntax/ext/deriving/show.rs @@ -15,6 +15,7 @@ use ext::format; use ext::base::ExtCtxt; use ext::build::AstBuilder; use ext::deriving::generic::*; +use ext::deriving::generic::ty::*; use parse::token; use collections::HashMap; diff --git a/src/libsyntax/ext/deriving/zero.rs b/src/libsyntax/ext/deriving/zero.rs index 449851dd3ea..0328f7b470c 100644 --- a/src/libsyntax/ext/deriving/zero.rs +++ b/src/libsyntax/ext/deriving/zero.rs @@ -13,6 +13,7 @@ use codemap::Span; use ext::base::ExtCtxt; use ext::build::AstBuilder; use ext::deriving::generic::*; +use ext::deriving::generic::ty::*; use parse::token::InternedString; pub fn expand_deriving_zero(cx: &mut ExtCtxt, diff --git a/src/libsyntax/ext/quote.rs b/src/libsyntax/ext/quote.rs index 62e052b0bb9..56bf0309e93 100644 --- a/src/libsyntax/ext/quote.rs +++ b/src/libsyntax/ext/quote.rs @@ -36,8 +36,17 @@ pub mod rt { use parse; use print::pprust; - pub use ast::*; - pub use parse::token::*; + #[cfg(not(stage0))] + use ast::{TokenTree, Generics, Expr}; + + // NOTE remove this after snapshot + // (stage0 quasiquoter needs this) + #[cfg(stage0)] + pub use ast::{Generics, TokenTree, TTTok}; + #[cfg(stage0)] + pub use parse::token::{IDENT, SEMI, LBRACE, RBRACE, LIFETIME, COLON, AND, BINOP, EQ, + LBRACKET, RBRACKET, LPAREN, RPAREN, POUND, NOT, MOD_SEP, DOT, COMMA}; + pub use parse::new_parser_from_tts; pub use codemap::{BytePos, Span, dummy_spanned}; @@ -72,7 +81,7 @@ pub mod rt { impl ToSource for ast::Ident { fn to_source(&self) -> String { - get_ident(*self).get().to_string() + token::get_ident(*self).get().to_string() } } @@ -685,11 +694,14 @@ fn expand_wrapper(cx: &ExtCtxt, sp: Span, cx_expr: @ast::Expr, expr: @ast::Expr) -> @ast::Expr { - let uses = vec![ cx.view_use_glob(sp, ast::Inherited, - ids_ext(vec!["syntax".to_string(), - "ext".to_string(), - "quote".to_string(), - "rt".to_string()])) ]; + let uses = [ + &["syntax", "ast"], + &["syntax", "parse", "token"], + &["syntax", "ext", "quote", "rt"], + ].iter().map(|path| { + let path = path.iter().map(|s| s.to_string()).collect(); + cx.view_use_glob(sp, ast::Inherited, ids_ext(path)) + }).collect(); let stmt_let_ext_cx = cx.stmt_let(sp, false, id_ext("ext_cx"), cx_expr); diff --git a/src/libsyntax/lib.rs b/src/libsyntax/lib.rs index 627b2b71b35..b1033c419b1 100644 --- a/src/libsyntax/lib.rs +++ b/src/libsyntax/lib.rs @@ -48,6 +48,7 @@ pub mod util { pub mod syntax { pub use ext; pub use parse; + pub use ast; } pub mod owned_slice;