about summary refs log tree commit diff
path: root/src/libsyntax/parse
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2013-03-11 10:15:58 -0700
committerbors <bors@rust-lang.org>2013-03-11 10:15:58 -0700
commit2ebb67487c1530822d83d6da6f71fa62cb68f2cd (patch)
tree7c5b611ac00f1054d51fd657d7fb7d143291fce2 /src/libsyntax/parse
parent51cdca0bf0d3efc554c1815df9306ea10e881a14 (diff)
parent08c840205ea477d4f76216abac45be6a4ce9fa4b (diff)
downloadrust-2ebb67487c1530822d83d6da6f71fa62cb68f2cd.tar.gz
rust-2ebb67487c1530822d83d6da6f71fa62cb68f2cd.zip
auto merge of #5291 : pcwalton/rust/drop-lint, r=pcwalton
r? @nikomatsakis 
Diffstat (limited to 'src/libsyntax/parse')
-rw-r--r--src/libsyntax/parse/common.rs12
-rw-r--r--src/libsyntax/parse/mod.rs2
-rw-r--r--src/libsyntax/parse/obsolete.rs10
-rw-r--r--src/libsyntax/parse/parser.rs22
4 files changed, 29 insertions, 17 deletions
diff --git a/src/libsyntax/parse/common.rs b/src/libsyntax/parse/common.rs
index 7af2204fafd..c7b9a769293 100644
--- a/src/libsyntax/parse/common.rs
+++ b/src/libsyntax/parse/common.rs
@@ -248,7 +248,7 @@ pub impl Parser {
     fn parse_seq_to_before_gt<T: Copy>(
         &self,
         sep: Option<token::Token>,
-        f: fn(&Parser) -> T
+        f: &fn(&Parser) -> T
     ) -> OptVec<T> {
         let mut first = true;
         let mut v = opt_vec::Empty;
@@ -269,7 +269,7 @@ pub impl Parser {
     fn parse_seq_to_gt<T: Copy>(
         &self,
         sep: Option<token::Token>,
-        f: fn(&Parser) -> T
+        f: &fn(&Parser) -> T
     ) -> OptVec<T> {
         let v = self.parse_seq_to_before_gt(sep, f);
         self.expect_gt();
@@ -283,7 +283,7 @@ pub impl Parser {
         &self,
         ket: &token::Token,
         sep: SeqSep,
-        f: fn(&Parser) -> T
+        f: &fn(&Parser) -> T
     ) -> ~[T] {
         let val = self.parse_seq_to_before_end(ket, sep, f);
         self.bump();
@@ -297,7 +297,7 @@ pub impl Parser {
         &self,
         ket: &token::Token,
         sep: SeqSep,
-        f: fn(&Parser) -> T
+        f: &fn(&Parser) -> T
     ) -> ~[T] {
         let mut first: bool = true;
         let mut v: ~[T] = ~[];
@@ -323,7 +323,7 @@ pub impl Parser {
         bra: &token::Token,
         ket: &token::Token,
         sep: SeqSep,
-        f: fn(&Parser) -> T
+        f: &fn(&Parser) -> T
     ) -> ~[T] {
         self.expect(bra);
         let result = self.parse_seq_to_before_end(ket, sep, f);
@@ -338,7 +338,7 @@ pub impl Parser {
         bra: &token::Token,
         ket: &token::Token,
         sep: SeqSep,
-        f: fn(&Parser) -> T
+        f: &fn(&Parser) -> T
     ) -> spanned<~[T]> {
         let lo = self.span.lo;
         self.expect(bra);
diff --git a/src/libsyntax/parse/mod.rs b/src/libsyntax/parse/mod.rs
index a1fc7230dd1..fd84f867068 100644
--- a/src/libsyntax/parse/mod.rs
+++ b/src/libsyntax/parse/mod.rs
@@ -173,7 +173,7 @@ pub fn parse_tts_from_source_str(
 }
 
 pub fn parse_from_source_str<T>(
-    f: fn (Parser) -> T,
+    f: &fn (Parser) -> T,
     name: ~str, ss: codemap::FileSubstr,
     source: @~str,
     +cfg: ast::crate_cfg,
diff --git a/src/libsyntax/parse/obsolete.rs b/src/libsyntax/parse/obsolete.rs
index 97ff175da07..ef858a2d5eb 100644
--- a/src/libsyntax/parse/obsolete.rs
+++ b/src/libsyntax/parse/obsolete.rs
@@ -53,6 +53,8 @@ pub enum ObsoleteSyntax {
     ObsoleteRecordPattern,
     ObsoleteAssertion,
     ObsoletePostFnTySigil,
+    ObsoleteBareFnType,
+    ObsoleteNewtypeEnum,
 }
 
 impl to_bytes::IterBytes for ObsoleteSyntax {
@@ -166,6 +168,14 @@ pub impl Parser {
                 "Rather than `fn@`, `fn~`, or `fn&`, \
                  write `@fn`, `~fn`, and `&fn` respectively"
             ),
+            ObsoleteBareFnType => (
+                "bare function type",
+                "use `&fn` or `extern fn` instead"
+            ),
+            ObsoleteNewtypeEnum => (
+                "newtype enum",
+                "instead of `enum Foo = int`, write `struct Foo(int)`"
+            ),
         };
 
         self.report(sp, kind, kind_str, desc);
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 38cd09abad4..99c1c2cb1fe 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -77,6 +77,7 @@ use parse::obsolete::{ObsoleteTraitBoundSeparator, ObsoleteMutOwnedPointer};
 use parse::obsolete::{ObsoleteMutVector, ObsoleteTraitImplVisibility};
 use parse::obsolete::{ObsoleteRecordType, ObsoleteRecordPattern};
 use parse::obsolete::{ObsoleteAssertion, ObsoletePostFnTySigil};
+use parse::obsolete::{ObsoleteBareFnType, ObsoleteNewtypeEnum};
 use parse::prec::{as_prec, token_to_binop};
 use parse::token::{can_begin_expr, is_ident, is_ident_or_path};
 use parse::token::{is_plain_ident, INTERPOLATED, special_idents};
@@ -647,8 +648,9 @@ pub impl Parser {
         } else if self.eat_keyword(&~"extern") {
             self.parse_ty_bare_fn()
         } else if self.token_is_closure_keyword(&copy *self.token) {
-            // self.warn(fmt!("Old-school closure keyword"));
-            self.parse_ty_closure(ast::BorrowedSigil, None)
+            let result = self.parse_ty_closure(ast::BorrowedSigil, None);
+            self.obsolete(*self.last_span, ObsoleteBareFnType);
+            result
         } else if *self.token == token::MOD_SEP
             || is_ident_or_path(&*self.token) {
             let path = self.parse_path_with_tps(colons_before_params);
@@ -1829,7 +1831,7 @@ pub impl Parser {
 
     fn parse_sugary_call_expr(&self, keyword: ~str,
                               sugar: CallSugar,
-                              ctor: fn(+v: @expr) -> expr_) -> @expr {
+                              ctor: &fn(+v: @expr) -> expr_) -> @expr {
         let lo = self.last_span;
         // Parse the callee `foo` in
         //    for foo || {
@@ -2769,7 +2771,7 @@ pub impl Parser {
         (lifetimes, opt_vec::take_vec(result))
     }
 
-    fn parse_fn_decl(&self, parse_arg_fn: fn(&Parser) -> arg_or_capture_item)
+    fn parse_fn_decl(&self, parse_arg_fn: &fn(&Parser) -> arg_or_capture_item)
         -> fn_decl
     {
         let args_or_capture_items: ~[arg_or_capture_item] =
@@ -2813,10 +2815,10 @@ pub impl Parser {
     fn parse_fn_decl_with_self(
         &self,
         parse_arg_fn:
-        fn(&Parser) -> arg_or_capture_item
+        &fn(&Parser) -> arg_or_capture_item
     ) -> (self_ty, fn_decl) {
         fn maybe_parse_self_ty(
-            cnstr: fn(+v: mutability) -> ast::self_ty_,
+            cnstr: &fn(+v: mutability) -> ast::self_ty_,
             p: &Parser
         ) -> ast::self_ty_ {
             // We need to make sure it isn't a mode or a type
@@ -3765,7 +3767,7 @@ pub impl Parser {
                         enum");
         }
 
-        enum_def(ast::enum_def_ { variants: variants, common: common_fields })
+        ast::enum_def { variants: variants, common: common_fields }
     }
 
     fn parse_item_enum(&self) -> item_info {
@@ -3788,12 +3790,12 @@ pub impl Parser {
                 vis: public,
             });
 
+            self.obsolete(*self.last_span, ObsoleteNewtypeEnum);
+
             return (
                 id,
                 item_enum(
-                    enum_def(
-                        ast::enum_def_ { variants: ~[variant], common: None }
-                    ),
+                    ast::enum_def { variants: ~[variant], common: None },
                     generics),
                 None
             );