1
Fork 0

parse interpolated visibility tokens

This commit is contained in:
Alex Burka 2017-04-02 04:46:51 +00:00
parent 06411c4769
commit 16010c2f50
3 changed files with 18 additions and 3 deletions

View file

@ -799,7 +799,8 @@ fn is_in_follow(tok: &quoted::TokenTree, frag: &str) -> Result<bool, (String, &'
Ident(i) if i.name != "priv" => Ok(true), Ident(i) if i.name != "priv" => Ok(true),
_ => Ok(false) _ => Ok(false)
}, },
TokenTree::MetaVarDecl(_, _, frag) if frag.name =="ident" || frag.name == "ty" => Ok(true), TokenTree::MetaVarDecl(_, _, frag)
if frag.name =="ident" || frag.name == "ty" => Ok(true),
_ => Ok(false) _ => Ok(false)
} }
}, },

View file

@ -5057,6 +5057,8 @@ impl<'a> Parser<'a> {
/// a function definition, it's not a tuple struct field) and the contents within the parens /// a function definition, it's not a tuple struct field) and the contents within the parens
/// isn't valid, emit a proper diagnostic. /// isn't valid, emit a proper diagnostic.
pub 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> {
maybe_whole!(self, NtVis, |x| x);
if !self.eat_keyword(keywords::Pub) { if !self.eat_keyword(keywords::Pub) {
return Ok(Visibility::Inherited) return Ok(Visibility::Inherited)
} }

View file

@ -1,3 +1,13 @@
// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
#![allow(dead_code, unused_imports)] #![allow(dead_code, unused_imports)]
/** /**
@ -96,11 +106,13 @@ macro_rules! vis_parse_struct {
vis_parse_struct! { @parse_tuple $(#[$($attrs)*])*, , $name, $($body)* } vis_parse_struct! { @parse_tuple $(#[$($attrs)*])*, , $name, $($body)* }
}; };
(@parse_fields $(#[$attrs:meta])*, $vis:vis, $name:ident, $($fvis:vis $fname:ident: $fty:ty),* $(,)*) => { (@parse_fields
$(#[$attrs:meta])*, $vis:vis, $name:ident, $($fvis:vis $fname:ident: $fty:ty),* $(,)*) => {
$(#[$attrs])* $vis struct $name { $($fvis $fname: $fty,)* } $(#[$attrs])* $vis struct $name { $($fvis $fname: $fty,)* }
}; };
(@parse_tuple $(#[$attrs:meta])*, $vis:vis, $name:ident, $($fvis:vis $fty:ty),* $(,)*) => { (@parse_tuple
$(#[$attrs:meta])*, $vis:vis, $name:ident, $($fvis:vis $fty:ty),* $(,)*) => {
$(#[$attrs])* $vis struct $name ( $($fvis $fty,)* ); $(#[$attrs])* $vis struct $name ( $($fvis $fty,)* );
}; };
} }