Forbid priv
where it has no effect
This is everywhere except struct fields and enum variants.
This commit is contained in:
parent
8964fcc5ac
commit
e99eff172a
17 changed files with 81 additions and 64 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue