diff --git a/src/libsyntax/parse/obsolete.rs b/src/libsyntax/parse/obsolete.rs index dba4f62aa9c7..6aa1afee206e 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 b783ea6da3c5..a71d5bf0e9e5 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 {