about summary refs log tree commit diff
path: root/src/libsyntax
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2013-11-18 18:25:25 -0800
committerPatrick Walton <pcwalton@mimiga.net>2013-11-18 18:28:10 -0800
commitf977bedafd657b52fb618cc788cc31f35336270d (patch)
tree33456b9dc3f2b7a6f5cc07aecf30aa9951242ac3 /src/libsyntax
parentba739b2135f794dd2f1cff3c82cf9282cc1d50cb (diff)
downloadrust-f977bedafd657b52fb618cc788cc31f35336270d.tar.gz
rust-f977bedafd657b52fb618cc788cc31f35336270d.zip
libsyntax: Remove `~fn()` from the language
Diffstat (limited to 'src/libsyntax')
-rw-r--r--src/libsyntax/parse/obsolete.rs8
-rw-r--r--src/libsyntax/parse/parser.rs6
2 files changed, 11 insertions, 3 deletions
diff --git a/src/libsyntax/parse/obsolete.rs b/src/libsyntax/parse/obsolete.rs
index 2af6d141aa1..189cc8e827c 100644
--- a/src/libsyntax/parse/obsolete.rs
+++ b/src/libsyntax/parse/obsolete.rs
@@ -41,7 +41,8 @@ pub enum ObsoleteSyntax {
     ObsoleteLoopAsContinue,
     ObsoleteEnumWildcard,
     ObsoleteStructWildcard,
-    ObsoleteVecDotDotWildcard
+    ObsoleteVecDotDotWildcard,
+    ObsoleteBoxedClosure,
 }
 
 impl to_bytes::IterBytes for ObsoleteSyntax {
@@ -128,6 +129,11 @@ impl ParserObsoleteMethods for Parser {
                 "vec slice wildcard",
                 "use `..` instead of `.._` for matching slices"
             ),
+            ObsoleteBoxedClosure => (
+                "managed or owned closure",
+                "managed closures have been removed and owned closures are \
+                 now written `proc()`"
+            ),
         };
 
         self.report(sp, kind, kind_str, desc);
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 1b2e18f3ca5..2ea6878f4a3 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -1273,15 +1273,17 @@ impl Parser {
     pub fn parse_box_or_uniq_pointee(&self,
                                      sigil: ast::Sigil,
                                      ctor: &fn(v: mt) -> ty_) -> ty_ {
-        // ~'foo fn() or ~fn() are parsed directly as fn types:
+        // ~'foo fn() or ~fn() are parsed directly as obsolete fn types:
         match *self.token {
             token::LIFETIME(*) => {
                 let lifetime = self.parse_lifetime();
+                self.obsolete(*self.last_span, ObsoleteBoxedClosure);
                 return self.parse_ty_closure(Some(sigil), Some(lifetime));
             }
 
-            token::IDENT(*) => {
+            token::IDENT(*) if sigil == ast::BorrowedSigil => {
                 if self.token_is_old_style_closure_keyword() {
+                    self.obsolete(*self.last_span, ObsoleteBoxedClosure);
                     return self.parse_ty_closure(Some(sigil), None);
                 }
             }