about summary refs log tree commit diff
path: root/src/libsyntax/parse
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-09-10 18:56:07 -0700
committerBrian Anderson <banderson@mozilla.com>2012-09-11 15:29:37 -0700
commit1203da3b9ddbf6af343fdb826b899b55a7bda053 (patch)
tree6b49a9b89d8ba29d2aeca115faecef7c321ad30d /src/libsyntax/parse
parent3aa5b0cb4403e0a61a11455ac615108b67e45ccd (diff)
downloadrust-1203da3b9ddbf6af343fdb826b899b55a7bda053.tar.gz
rust-1203da3b9ddbf6af343fdb826b899b55a7bda053.zip
Remove priv sections from classes. Obsolete the syntax
Diffstat (limited to 'src/libsyntax/parse')
-rw-r--r--src/libsyntax/parse/obsolete.rs22
-rw-r--r--src/libsyntax/parse/parser.rs21
2 files changed, 27 insertions, 16 deletions
diff --git a/src/libsyntax/parse/obsolete.rs b/src/libsyntax/parse/obsolete.rs
index 9a2b6474b19..724c824d5cd 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 74370d005ce..0b326c14158 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") {