crate shorthand visibility modifier

With regrets, this breaks rustfmt and rls.

This is in the matter of #45388.
This commit is contained in:
Zack M. Davis
2017-10-19 14:43:47 -07:00
parent 4c053db233
commit 214b0f2293
15 changed files with 99 additions and 12 deletions

View File

@@ -36,7 +36,7 @@ use ast::SelfKind;
use ast::{TraitItem, TraitRef, TraitObjectSyntax};
use ast::{Ty, TyKind, TypeBinding, TyParam, TyParamBounds};
use ast::{ViewPath, ViewPathGlob, ViewPathList, ViewPathSimple};
use ast::{Visibility, WhereClause};
use ast::{Visibility, WhereClause, CrateSugar};
use ast::{BinOpKind, UnOp};
use ast::{RangeEnd, RangeSyntax};
use {ast, attr};
@@ -5325,6 +5325,10 @@ impl<'a> Parser<'a> {
pub fn parse_visibility(&mut self, can_take_tuple: bool) -> PResult<'a, Visibility> {
maybe_whole!(self, NtVis, |x| x);
if self.eat_keyword(keywords::Crate) {
return Ok(Visibility::Crate(self.prev_span, CrateSugar::JustCrate));
}
if !self.eat_keyword(keywords::Pub) {
return Ok(Visibility::Inherited)
}
@@ -5338,7 +5342,7 @@ impl<'a> Parser<'a> {
// `pub(crate)`
self.bump(); // `(`
self.bump(); // `crate`
let vis = Visibility::Crate(self.prev_span);
let vis = Visibility::Crate(self.prev_span, CrateSugar::PubCrate);
self.expect(&token::CloseDelim(token::Paren))?; // `)`
return Ok(vis)
} else if self.look_ahead(1, |t| t.is_keyword(keywords::In)) {