about summary refs log tree commit diff
path: root/src/libsyntax/parse
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2014-01-03 14:15:08 -0800
committerPatrick Walton <pcwalton@mimiga.net>2014-01-13 13:11:01 -0800
commitce358fca333db7bc0ac1bffa1daa13099b2561d8 (patch)
treecbe0faf79d26c98503db45abecdf8019eaabbce9 /src/libsyntax/parse
parentb8c60f906b897f413997f17f0376402061993c8d (diff)
downloadrust-ce358fca333db7bc0ac1bffa1daa13099b2561d8.tar.gz
rust-ce358fca333db7bc0ac1bffa1daa13099b2561d8.zip
libsyntax: Make managed box `@` patterns obsolete
Diffstat (limited to 'src/libsyntax/parse')
-rw-r--r--src/libsyntax/parse/obsolete.rs10
-rw-r--r--src/libsyntax/parse/parser.rs5
2 files changed, 12 insertions, 3 deletions
diff --git a/src/libsyntax/parse/obsolete.rs b/src/libsyntax/parse/obsolete.rs
index dba4f62aa9c..6aa1afee206 100644
--- a/src/libsyntax/parse/obsolete.rs
+++ b/src/libsyntax/parse/obsolete.rs
@@ -44,7 +44,8 @@ pub enum ObsoleteSyntax {
     ObsoleteBoxedClosure,
     ObsoleteClosureType,
     ObsoleteMultipleImport,
-    ObsoleteExternModAttributesInParens
+    ObsoleteExternModAttributesInParens,
+    ObsoleteManagedPattern,
 }
 
 impl to_bytes::IterBytes for ObsoleteSyntax {
@@ -148,7 +149,12 @@ impl ParserObsoleteMethods for Parser {
                 "`extern mod` with linkage attribute list",
                 "use `extern mod foo = \"bar\";` instead of \
                 `extern mod foo (name = \"bar\")`"
-            )
+            ),
+            ObsoleteManagedPattern => (
+                "managed pointer pattern",
+                "use a nested `match` expression instead of a managed box \
+                 pattern"
+            ),
         };
 
         self.report(sp, kind, kind_str, desc);
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index b783ea6da3c..a71d5bf0e9e 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -2903,7 +2903,10 @@ impl Parser {
                 };
                 PatLit(vst)
               }
-              _ => PatBox(sub)
+              _ => {
+                self.obsolete(self.span, ObsoleteManagedPattern);
+                PatBox(sub)
+              }
             };
             hi = self.last_span.hi;
             return @ast::Pat {