1
Fork 0

Forbid priv where it has no effect

This is everywhere except struct fields and enum variants.
This commit is contained in:
Alex Crichton 2013-08-06 23:03:31 -07:00 committed by Corey Richardson
parent 8964fcc5ac
commit e99eff172a
17 changed files with 81 additions and 64 deletions

View file

@ -85,7 +85,7 @@ use parse::obsolete::{ObsoleteConstItem, ObsoleteFixedLengthVectorType};
use parse::obsolete::{ObsoleteNamedExternModule, ObsoleteMultipleLocalDecl};
use parse::obsolete::{ObsoleteMutWithMultipleBindings};
use parse::obsolete::{ObsoleteExternVisibility, ObsoleteUnsafeExternFn};
use parse::obsolete::{ParserObsoleteMethods};
use parse::obsolete::{ParserObsoleteMethods, ObsoletePrivVisibility};
use parse::token::{can_begin_expr, get_ident_interner, ident_to_str, is_ident};
use parse::token::{is_ident_or_path};
use parse::token::{is_plain_ident, INTERPOLATED, keywords, special_idents};
@ -814,7 +814,7 @@ impl Parser {
let attrs = p.parse_outer_attributes();
let lo = p.span.lo;
let vis = p.parse_visibility();
let vis = p.parse_non_priv_visibility();
let pur = p.parse_fn_purity();
// NB: at the moment, trait methods are public by default; this
// could change.
@ -3608,7 +3608,7 @@ impl Parser {
let attrs = self.parse_outer_attributes();
let lo = self.span.lo;
let visa = self.parse_visibility();
let visa = self.parse_non_priv_visibility();
let pur = self.parse_fn_purity();
let ident = self.parse_ident();
let generics = self.parse_generics();
@ -3871,6 +3871,18 @@ impl Parser {
else { inherited }
}
// parse visibility, but emits an obsolete error if it's private
fn parse_non_priv_visibility(&self) -> visibility {
match self.parse_visibility() {
public => public,
inherited => inherited,
private => {
self.obsolete(*self.last_span, ObsoletePrivVisibility);
inherited
}
}
}
fn parse_staticness(&self) -> bool {
if self.eat_keyword(keywords::Static) {
self.obsolete(*self.last_span, ObsoleteStaticMethod);
@ -4063,7 +4075,7 @@ impl Parser {
// parse a function declaration from a foreign module
fn parse_item_foreign_fn(&self, attrs: ~[Attribute]) -> @foreign_item {
let lo = self.span.lo;
let vis = self.parse_visibility();
let vis = self.parse_non_priv_visibility();
// Parse obsolete purity.
let purity = self.parse_fn_purity();
@ -4443,7 +4455,7 @@ impl Parser {
maybe_whole!(iovi self, nt_item);
let lo = self.span.lo;
let visibility = self.parse_visibility();
let visibility = self.parse_non_priv_visibility();
// must be a view item:
if self.eat_keyword(keywords::Use) {
@ -4575,7 +4587,7 @@ impl Parser {
maybe_whole!(iovi self, nt_item);
let lo = self.span.lo;
let visibility = self.parse_visibility();
let visibility = self.parse_non_priv_visibility();
if (self.is_keyword(keywords::Const) || self.is_keyword(keywords::Static)) {
// FOREIGN CONST ITEM