about summary refs log tree commit diff
path: root/src/libsyntax/parse
diff options
context:
space:
mode:
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 {