diff --git a/src/libsyntax/parse/obsolete.rs b/src/libsyntax/parse/obsolete.rs index 9a2b6474b19e..724c824d5cd8 100644 --- a/src/libsyntax/parse/obsolete.rs +++ b/src/libsyntax/parse/obsolete.rs @@ -20,7 +20,8 @@ pub enum ObsoleteSyntax { ObsoleteStructCtor, ObsoleteWith, ObsoleteClassMethod, - ObsoleteClassTraits + ObsoleteClassTraits, + ObsoletePrivSection } impl ObsoleteSyntax : cmp::Eq { @@ -82,6 +83,11 @@ impl parser : ObsoleteReporter { "implemented traits are specified on the impl, as in \ `impl foo : bar {`" ), + ObsoletePrivSection => ( + "private section", + "the `priv` keyword is applied to individual items, methods, \ + and fields" + ), }; self.report(sp, kind, kind_str, desc); @@ -152,5 +158,19 @@ impl parser : ObsoleteReporter { } } + fn try_parse_obsolete_priv_section() -> bool { + if self.is_keyword(~"priv") && self.look_ahead(1) == token::LBRACE { + self.obsolete(copy self.span, ObsoletePrivSection); + self.eat_keyword(~"priv"); + self.bump(); + while self.token != token::RBRACE { + self.parse_single_class_item(ast::private); + } + self.bump(); + true + } else { + false + } + } } diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 74370d005ce7..0b326c141589 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -2818,22 +2818,13 @@ impl parser { } fn parse_class_item() -> class_contents { + + if self.try_parse_obsolete_priv_section() { + return members(~[]); + } + if self.eat_keyword(~"priv") { - // XXX: Remove after snapshot. - match self.token { - token::LBRACE => { - self.bump(); - let mut results = ~[]; - while self.token != token::RBRACE { - vec::push(results, - self.parse_single_class_item(private)); - } - self.bump(); - return members(results); - } - _ => - return members(~[self.parse_single_class_item(private)]) - } + return members(~[self.parse_single_class_item(private)]) } if self.eat_keyword(~"pub") { diff --git a/src/test/auxiliary/cci_class.rs b/src/test/auxiliary/cci_class.rs index d6700f79600c..b08f8def5adb 100644 --- a/src/test/auxiliary/cci_class.rs +++ b/src/test/auxiliary/cci_class.rs @@ -1,9 +1,7 @@ mod kitties { struct cat { - priv { - mut meows : uint, - } + priv mut meows : uint, how_hungry : int, diff --git a/src/test/auxiliary/cci_class_2.rs b/src/test/auxiliary/cci_class_2.rs index 30b57e5fbff4..bfbf58ddd117 100644 --- a/src/test/auxiliary/cci_class_2.rs +++ b/src/test/auxiliary/cci_class_2.rs @@ -1,9 +1,7 @@ mod kitties { struct cat { - priv { - mut meows : uint, - } + priv mut meows : uint, how_hungry : int, diff --git a/src/test/auxiliary/cci_class_3.rs b/src/test/auxiliary/cci_class_3.rs index 53f1a3568947..a16c6b4c3a9b 100644 --- a/src/test/auxiliary/cci_class_3.rs +++ b/src/test/auxiliary/cci_class_3.rs @@ -1,9 +1,7 @@ mod kitties { struct cat { - priv { - mut meows : uint, - } + priv mut meows : uint, how_hungry : int, } diff --git a/src/test/auxiliary/cci_class_4.rs b/src/test/auxiliary/cci_class_4.rs index 585fc09e3202..32da73d14e4b 100644 --- a/src/test/auxiliary/cci_class_4.rs +++ b/src/test/auxiliary/cci_class_4.rs @@ -1,9 +1,7 @@ mod kitties { struct cat { - priv { - mut meows : uint, - } + priv mut meows : uint, mut how_hungry : int, name : ~str, diff --git a/src/test/auxiliary/cci_class_6.rs b/src/test/auxiliary/cci_class_6.rs index 272c381c73d2..0d41bccfd336 100644 --- a/src/test/auxiliary/cci_class_6.rs +++ b/src/test/auxiliary/cci_class_6.rs @@ -1,10 +1,8 @@ mod kitties { struct cat { - priv { - mut info : ~[U], - mut meows : uint, - } + priv mut info : ~[U], + priv mut meows : uint, how_hungry : int, } diff --git a/src/test/auxiliary/cci_class_cast.rs b/src/test/auxiliary/cci_class_cast.rs index 56cf40fd968b..2471c9f4ccf5 100644 --- a/src/test/auxiliary/cci_class_cast.rs +++ b/src/test/auxiliary/cci_class_cast.rs @@ -4,10 +4,7 @@ use to_str::ToStr; mod kitty { struct cat { - priv { - mut meows : uint, - } - + priv mut meows : uint, mut how_hungry : int, name : ~str, } diff --git a/src/test/compile-fail/assign-to-method.rs b/src/test/compile-fail/assign-to-method.rs index 4d63180a8438..fd578ff5c4f9 100644 --- a/src/test/compile-fail/assign-to-method.rs +++ b/src/test/compile-fail/assign-to-method.rs @@ -1,7 +1,5 @@ struct cat { - priv { - mut meows : uint - } + priv mut meows : uint, how_hungry : int, } diff --git a/src/test/compile-fail/class-cast-to-trait.rs b/src/test/compile-fail/class-cast-to-trait.rs index 58c0bfab7999..5292e301ac01 100644 --- a/src/test/compile-fail/class-cast-to-trait.rs +++ b/src/test/compile-fail/class-cast-to-trait.rs @@ -4,9 +4,7 @@ trait noisy { } struct cat { - priv { - mut meows : uint, - } + priv mut meows : uint, mut how_hungry : int, name : str, diff --git a/src/test/compile-fail/class-missing-self.rs b/src/test/compile-fail/class-missing-self.rs index 48a8c7a56b9c..50c9ea99e0c5 100644 --- a/src/test/compile-fail/class-missing-self.rs +++ b/src/test/compile-fail/class-missing-self.rs @@ -1,7 +1,5 @@ struct cat { - priv { - mut meows : uint, - } + priv mut meows : uint, } priv impl cat { diff --git a/src/test/compile-fail/mutable-class-fields-2.rs b/src/test/compile-fail/mutable-class-fields-2.rs index 68eaffc7f703..ed6c2f268f45 100644 --- a/src/test/compile-fail/mutable-class-fields-2.rs +++ b/src/test/compile-fail/mutable-class-fields-2.rs @@ -1,8 +1,6 @@ // error-pattern:assigning to immutable field struct cat { - priv { - mut meows : uint, - } + priv mut meows : uint, how_hungry : int, } diff --git a/src/test/compile-fail/mutable-class-fields.rs b/src/test/compile-fail/mutable-class-fields.rs index a78ad6aa23bc..4d1bb669efcb 100644 --- a/src/test/compile-fail/mutable-class-fields.rs +++ b/src/test/compile-fail/mutable-class-fields.rs @@ -1,8 +1,6 @@ // error-pattern:assigning to immutable field struct cat { - priv { - mut meows : uint, - } + priv mut meows : uint, how_hungry : int, diff --git a/src/test/compile-fail/obsolete-syntax.rs b/src/test/compile-fail/obsolete-syntax.rs index 9a3939692f56..9f57e08cdb2f 100644 --- a/src/test/compile-fail/obsolete-syntax.rs +++ b/src/test/compile-fail/obsolete-syntax.rs @@ -31,6 +31,13 @@ struct q : r { //~^ ERROR obsolete syntax: class traits } +struct sss { + priv { + //~^ ERROR obsolete syntax: private section + foo: () + } +} + fn obsolete_with() { struct S { foo: (), diff --git a/src/test/compile-fail/private-method.rs b/src/test/compile-fail/private-method.rs index d9f070fb5bd8..0f489a7dc761 100644 --- a/src/test/compile-fail/private-method.rs +++ b/src/test/compile-fail/private-method.rs @@ -2,9 +2,7 @@ mod kitties { struct cat { - priv { - mut meows : uint, - } + priv mut meows : uint, how_hungry : int, diff --git a/src/test/run-pass/class-cast-to-trait-multiple-types.rs b/src/test/run-pass/class-cast-to-trait-multiple-types.rs index f2e35c4cd557..f0581c2df8ce 100644 --- a/src/test/run-pass/class-cast-to-trait-multiple-types.rs +++ b/src/test/run-pass/class-cast-to-trait-multiple-types.rs @@ -3,9 +3,7 @@ trait noisy { } struct dog { - priv { - barks : @mut uint, - } + priv barks : @mut uint, volume : @mut int, } @@ -37,9 +35,7 @@ fn dog() -> dog { } struct cat { - priv { - meows : @mut uint, - } + priv meows : @mut uint, how_hungry : @mut int, name : ~str, diff --git a/src/test/run-pass/class-cast-to-trait.rs b/src/test/run-pass/class-cast-to-trait.rs index 422dd6142f04..eda5340aeed9 100644 --- a/src/test/run-pass/class-cast-to-trait.rs +++ b/src/test/run-pass/class-cast-to-trait.rs @@ -3,10 +3,7 @@ trait noisy { } struct cat { - priv { - mut meows : uint, - } - + priv mut meows : uint, mut how_hungry : int, name : ~str, } diff --git a/src/test/run-pass/class-impl-very-parameterized-trait.rs b/src/test/run-pass/class-impl-very-parameterized-trait.rs index b4d47f86e1a8..70d0d8f3b3f3 100644 --- a/src/test/run-pass/class-impl-very-parameterized-trait.rs +++ b/src/test/run-pass/class-impl-very-parameterized-trait.rs @@ -15,10 +15,8 @@ impl cat_type : cmp::Eq { // ok: T should be in scope when resolving the trait ref for map struct cat { - priv { - // Yes, you can have negative meows - mut meows : int, - } + // Yes, you can have negative meows + priv mut meows : int, mut how_hungry : int, name : T, diff --git a/src/test/run-pass/class-implement-trait-cross-crate.rs b/src/test/run-pass/class-implement-trait-cross-crate.rs index a1c2b420c46e..7be0a197d468 100644 --- a/src/test/run-pass/class-implement-trait-cross-crate.rs +++ b/src/test/run-pass/class-implement-trait-cross-crate.rs @@ -4,9 +4,7 @@ use cci_class_trait; use cci_class_trait::animals::*; struct cat { - priv { - mut meows : uint, - } + priv mut meows : uint, mut how_hungry : int, name : ~str, diff --git a/src/test/run-pass/class-implement-traits.rs b/src/test/run-pass/class-implement-traits.rs index e31501d02f52..aa8e52e33514 100644 --- a/src/test/run-pass/class-implement-traits.rs +++ b/src/test/run-pass/class-implement-traits.rs @@ -3,9 +3,7 @@ trait noisy { } struct cat { - priv { - mut meows : uint, - } + priv mut meows : uint, mut how_hungry : int, name : ~str, diff --git a/src/test/run-pass/class-methods.rs b/src/test/run-pass/class-methods.rs index d5cee133097f..732e01a7c573 100644 --- a/src/test/run-pass/class-methods.rs +++ b/src/test/run-pass/class-methods.rs @@ -1,7 +1,5 @@ struct cat { - priv { - mut meows : uint, - } + priv mut meows : uint, how_hungry : int, } diff --git a/src/test/run-pass/class-poly-methods.rs b/src/test/run-pass/class-poly-methods.rs index 0f07b36e6c14..7b38d0e03f9c 100644 --- a/src/test/run-pass/class-poly-methods.rs +++ b/src/test/run-pass/class-poly-methods.rs @@ -1,8 +1,6 @@ struct cat { - priv { - mut info : ~[U], - mut meows : uint, - } + priv mut info : ~[U], + priv mut meows : uint, how_hungry : int, } diff --git a/src/test/run-pass/class-separate-impl.rs b/src/test/run-pass/class-separate-impl.rs index 47fd98b49a89..c7517ab1b3d2 100644 --- a/src/test/run-pass/class-separate-impl.rs +++ b/src/test/run-pass/class-separate-impl.rs @@ -3,9 +3,7 @@ use to_str::*; use to_str::ToStr; struct cat { - priv { - mut meows : uint, - } + priv mut meows : uint, mut how_hungry : int, name : ~str, diff --git a/src/test/run-pass/class-typarams.rs b/src/test/run-pass/class-typarams.rs index d11b1761b3cd..7512c352406f 100644 --- a/src/test/run-pass/class-typarams.rs +++ b/src/test/run-pass/class-typarams.rs @@ -1,7 +1,5 @@ struct cat { - priv { - mut meows : uint, - } + priv mut meows : uint, how_hungry : int, } diff --git a/src/test/run-pass/classes-simple-method.rs b/src/test/run-pass/classes-simple-method.rs index 4cee896f23a3..26ee513b338d 100644 --- a/src/test/run-pass/classes-simple-method.rs +++ b/src/test/run-pass/classes-simple-method.rs @@ -1,7 +1,5 @@ struct cat { - priv { - mut meows : uint, - } + priv mut meows : uint, how_hungry : int, } diff --git a/src/test/run-pass/classes-simple.rs b/src/test/run-pass/classes-simple.rs index af30fd44982e..84e0fc6bb62a 100644 --- a/src/test/run-pass/classes-simple.rs +++ b/src/test/run-pass/classes-simple.rs @@ -1,7 +1,5 @@ struct cat { - priv { - mut meows : uint, - } + priv mut meows : uint, how_hungry : int, diff --git a/src/test/run-pass/classes.rs b/src/test/run-pass/classes.rs index 0ade8e57f9ca..4911aa9b3901 100644 --- a/src/test/run-pass/classes.rs +++ b/src/test/run-pass/classes.rs @@ -1,7 +1,5 @@ struct cat { - priv { - mut meows : uint, - } + priv mut meows : uint, mut how_hungry : int, name : ~str, diff --git a/src/test/run-pass/private-class-field.rs b/src/test/run-pass/private-class-field.rs index 735545a580c1..b1e3773fe0d7 100644 --- a/src/test/run-pass/private-class-field.rs +++ b/src/test/run-pass/private-class-field.rs @@ -1,7 +1,5 @@ struct cat { - priv { - mut meows : uint, - } + priv mut meows : uint, how_hungry : int, } diff --git a/src/test/run-pass/private-method.rs b/src/test/run-pass/private-method.rs index 23789676549b..ff70fb1667c6 100644 --- a/src/test/run-pass/private-method.rs +++ b/src/test/run-pass/private-method.rs @@ -1,7 +1,5 @@ struct cat { - priv { - mut meows : uint, - } + priv mut meows : uint, how_hungry : int, }