diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2014-06-11 19:33:52 -0700 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2014-06-14 10:45:37 -0700 |
| commit | ade807c6dcf6dc4454732c5e914ca06ebb429773 (patch) | |
| tree | 64606dac9c81ec4567e19f503d4d82e249dbf40a /src/libsyntax/parse | |
| parent | f20b1293fcce4e120bd4a57226e0817271cd672c (diff) | |
| download | rust-ade807c6dcf6dc4454732c5e914ca06ebb429773.tar.gz rust-ade807c6dcf6dc4454732c5e914ca06ebb429773.zip | |
rustc: Obsolete the `@` syntax entirely
This removes all remnants of `@` pointers from rustc. Additionally, this removes the `GC` structure from the prelude as it seems odd exporting an experimental type in the prelude by default. Closes #14193 [breaking-change]
Diffstat (limited to 'src/libsyntax/parse')
| -rw-r--r-- | src/libsyntax/parse/attr.rs | 2 | ||||
| -rw-r--r-- | src/libsyntax/parse/mod.rs | 1 | ||||
| -rw-r--r-- | src/libsyntax/parse/obsolete.rs | 12 | ||||
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 7 |
4 files changed, 18 insertions, 4 deletions
diff --git a/src/libsyntax/parse/attr.rs b/src/libsyntax/parse/attr.rs index c9122e3ceaf..f48ddf4417b 100644 --- a/src/libsyntax/parse/attr.rs +++ b/src/libsyntax/parse/attr.rs @@ -16,7 +16,7 @@ use parse::token; use parse::parser::Parser; use parse::token::INTERPOLATED; -use std::gc::Gc; +use std::gc::{Gc, GC}; // a parser that can parse attributes. pub trait ParserAttr { diff --git a/src/libsyntax/parse/mod.rs b/src/libsyntax/parse/mod.rs index 1ebcbc8a7d1..faffc496846 100644 --- a/src/libsyntax/parse/mod.rs +++ b/src/libsyntax/parse/mod.rs @@ -282,6 +282,7 @@ mod test { use std::io; use std::io::MemWriter; use std::str; + use std::gc::GC; use codemap::{Span, BytePos, Spanned}; use owned_slice::OwnedSlice; use ast; diff --git a/src/libsyntax/parse/obsolete.rs b/src/libsyntax/parse/obsolete.rs index e280c244929..025684ae71e 100644 --- a/src/libsyntax/parse/obsolete.rs +++ b/src/libsyntax/parse/obsolete.rs @@ -22,7 +22,7 @@ use codemap::{Span, respan}; use parse::parser; use parse::token; -use std::gc::Gc; +use std::gc::{Gc, GC}; /// The specific types of unsupported syntax #[deriving(PartialEq, Eq, Hash)] @@ -31,6 +31,8 @@ pub enum ObsoleteSyntax { ObsoleteOwnedExpr, ObsoleteOwnedPattern, ObsoleteOwnedVector, + ObsoleteManagedType, + ObsoleteManagedExpr, } pub trait ParserObsoleteMethods { @@ -68,6 +70,14 @@ impl<'a> ParserObsoleteMethods for parser::Parser<'a> { "`~[T]` is no longer a type", "use the `Vec` type instead" ), + ObsoleteManagedType => ( + "`@` notation for managed pointers", + "use `Gc<T>` in `std::gc` instead" + ), + ObsoleteManagedExpr => ( + "`@` notation for a managed pointer allocation", + "use the `box(GC)` oeprator instead of `@`" + ), }; self.report(sp, kind, kind_str, desc); diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 250ed4af571..ae3b8587ee5 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -79,7 +79,7 @@ use owned_slice::OwnedSlice; use std::collections::HashSet; use std::mem::replace; use std::rc::Rc; -use std::gc::Gc; +use std::gc::{Gc, GC}; #[allow(non_camel_case_types)] #[deriving(PartialEq)] @@ -1342,6 +1342,8 @@ impl<'a> Parser<'a> { } else if self.token == token::AT { // MANAGED POINTER self.bump(); + let span = self.last_span; + self.obsolete(span, ObsoleteManagedType); TyBox(self.parse_ty(plus_allowed)) } else if self.token == token::TILDE { // OWNED POINTER @@ -2375,9 +2377,10 @@ impl<'a> Parser<'a> { } token::AT => { self.bump(); + let span = self.last_span; + self.obsolete(span, ObsoleteManagedExpr); let e = self.parse_prefix_expr(); hi = e.span.hi; - // HACK: pretending @[] is a (removed) @-vec ex = self.mk_unary(UnBox, e); } token::TILDE => { |
