about summary refs log tree commit diff
path: root/src/libsyntax
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2013-03-07 15:44:21 -0800
committerPatrick Walton <pcwalton@mimiga.net>2013-03-11 09:35:58 -0700
commitbd2d17e4a1f75bc7e451fc1054d98ff13c456850 (patch)
tree4786d560c72b34b8725be337a677c4c6b8a47508 /src/libsyntax
parentd18f7854578e8c2e1d7dce90db6e3b5cf9befba9 (diff)
downloadrust-bd2d17e4a1f75bc7e451fc1054d98ff13c456850.tar.gz
rust-bd2d17e4a1f75bc7e451fc1054d98ff13c456850.zip
libsyntax: Stop parsing bare functions in preparation for switching them over
Diffstat (limited to 'src/libsyntax')
-rw-r--r--src/libsyntax/parse/obsolete.rs5
-rw-r--r--src/libsyntax/parse/parser.rs12
2 files changed, 16 insertions, 1 deletions
diff --git a/src/libsyntax/parse/obsolete.rs b/src/libsyntax/parse/obsolete.rs
index 97ff175da07..757df713fc0 100644
--- a/src/libsyntax/parse/obsolete.rs
+++ b/src/libsyntax/parse/obsolete.rs
@@ -53,6 +53,7 @@ pub enum ObsoleteSyntax {
     ObsoleteRecordPattern,
     ObsoleteAssertion,
     ObsoletePostFnTySigil,
+    ObsoleteBareFnType,
 }
 
 impl to_bytes::IterBytes for ObsoleteSyntax {
@@ -166,6 +167,10 @@ 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"
+            ),
         };
 
         self.report(sp, kind, kind_str, desc);
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 92ff83a3975..1c3d906e164 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -76,7 +76,11 @@ use parse::obsolete::{ObsoleteUnsafeBlock, ObsoleteImplSyntax};
 use parse::obsolete::{ObsoleteTraitBoundSeparator, ObsoleteMutOwnedPointer};
 use parse::obsolete::{ObsoleteMutVector, ObsoleteTraitImplVisibility};
 use parse::obsolete::{ObsoleteRecordType, ObsoleteRecordPattern};
+<<<<<<< HEAD
 use parse::obsolete::{ObsoleteAssertion, ObsoletePostFnTySigil};
+=======
+use parse::obsolete::{ObsoleteAssertion, ObsoleteBareFnType};
+>>>>>>> libsyntax: Stop parsing bare functions in preparation for switching them over
 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 +651,14 @@ pub impl Parser {
         } else if self.eat_keyword(&~"extern") {
             self.parse_ty_bare_fn()
         } else if self.token_is_closure_keyword(&copy *self.token) {
+<<<<<<< HEAD
             // self.warn(fmt!("Old-school closure keyword"));
             self.parse_ty_closure(ast::BorrowedSigil, None)
+=======
+            let result = self.parse_ty_closure(None, None);
+            self.obsolete(*self.last_span, ObsoleteBareFnType);
+            result
+>>>>>>> libsyntax: Stop parsing bare functions in preparation for switching them over
         } else if *self.token == token::MOD_SEP
             || is_ident_or_path(&*self.token) {
             let path = self.parse_path_with_tps(colons_before_params);
@@ -2813,7 +2823,7 @@ 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_,