"vis" => {
// Explicitly disallow `priv`, on the off chance it comes back.
match *tok {
- Comma => Ok(true),
- ModSep => Ok(true),
- MatchNt(_, ref frag, _, _) => {
- let name = frag.name.as_str();
- Ok(name == "ident" || name == "ty")
+ TokenTree::Token(_, ref tok) => match *tok {
+ Comma => Ok(true),
+ ModSep => Ok(true),
+ Ident(i) if i.name != "priv" => Ok(true),
+ _ => Ok(false)
},
- Ident(i, _) if i.name.as_str() != "priv" => Ok(true),
+ TokenTree::MetaVarDecl(_, _, frag) if frag.name =="ident" || frag.name == "ty" => Ok(true),
_ => Ok(false)
}
},
/// and `pub(super)` for `pub(in super)`. If the following element can't be a tuple (i.e. it's
/// a function definition, it's not a tuple struct field) and the contents within the parens
/// isn't valid, emit a proper diagnostic.
- fn parse_visibility(&mut self, can_take_tuple: bool) -> PResult<'a, Visibility> {
+ pub fn parse_visibility(&mut self, can_take_tuple: bool) -> PResult<'a, Visibility> {
if !self.eat_keyword(keywords::Pub) {
return Ok(Visibility::Inherited)
}
#![allow(dead_code, unused_imports)]
-#![feature(pub_restricted)]
/**
Ensure that `:vis` matches can be captured in existing positions, and passed
mod garden {
mod with_pub_restricted_path {
- vis_passthru! { pub(::garden) const A: i32 = 0; }
- vis_passthru! { pub(::garden) enum B {} }
- vis_passthru! { pub(::garden) extern "C" fn c() {} }
- vis_passthru! { pub(::garden) mod d {} }
- vis_passthru! { pub(::garden) static E: i32 = 0; }
- vis_passthru! { pub(::garden) struct F; }
- vis_passthru! { pub(::garden) trait G {} }
- vis_passthru! { pub(::garden) type H = i32; }
- vis_passthru! { pub(::garden) use A as I; }
+ vis_passthru! { pub(in garden) const A: i32 = 0; }
+ vis_passthru! { pub(in garden) enum B {} }
+ vis_passthru! { pub(in garden) extern "C" fn c() {} }
+ vis_passthru! { pub(in garden) mod d {} }
+ vis_passthru! { pub(in garden) static E: i32 = 0; }
+ vis_passthru! { pub(in garden) struct F; }
+ vis_passthru! { pub(in garden) trait G {} }
+ vis_passthru! { pub(in garden) type H = i32; }
+ vis_passthru! { pub(in garden) use A as I; }
}
}