Skip to content

Commit 5392373

Browse files
committed
Forbid ~str and ~[]
This corrects a rebasing error. Also adds a test so it won't happen again.
1 parent f2b87e9 commit 5392373

File tree

2 files changed

+27
-13
lines changed

2 files changed

+27
-13
lines changed

src/libsyntax/parse/parser.rs

+6-13
Original file line numberDiff line numberDiff line change
@@ -1427,14 +1427,10 @@ impl<'a> Parser<'a> {
14271427
} else if self.token == token::TILDE {
14281428
// OWNED POINTER
14291429
self.bump();
1430-
let span = self.last_span;
1430+
let last_span = self.last_span;
14311431
match self.token {
1432-
token::IDENT(ref ident, _)
1433-
if "str" == token::get_ident(*ident).get() => {
1434-
// This is OK (for now).
1435-
}
1436-
token::LBRACKET => {} // Also OK.
1437-
_ => self.obsolete(span, ObsoleteOwnedType)
1432+
token::LBRACKET => self.obsolete(last_span, ObsoleteOwnedVector),
1433+
_ => self.obsolete(last_span, ObsoleteOwnedType)
14381434
}
14391435
TyUniq(self.parse_ty(false))
14401436
} else if self.token == token::BINOP(token::STAR) {
@@ -2563,13 +2559,10 @@ impl<'a> Parser<'a> {
25632559
}
25642560
token::TILDE => {
25652561
self.bump();
2566-
let span = self.last_span;
2562+
let last_span = self.last_span;
25672563
match self.token {
2568-
token::LIT_STR(_) => {
2569-
// This is OK (for now).
2570-
}
2571-
token::LBRACKET => {} // Also OK.
2572-
_ => self.obsolete(span, ObsoleteOwnedExpr)
2564+
token::LBRACKET => self.obsolete(last_span, ObsoleteOwnedVector),
2565+
_ => self.obsolete(last_span, ObsoleteOwnedExpr)
25732566
}
25742567

25752568
let e = self.parse_prefix_expr();
+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
// Test that ~ pointers give an obsolescence message.
12+
13+
fn foo(x: ~int) {} //~ ERROR obsolete syntax: `~` notation for owned pointers
14+
fn bar(x: ~str) {} //~ ERROR obsolete syntax: `~` notation for owned pointers
15+
fn baz(x: ~[int]) {} //~ ERROR obsolete syntax: `~[T]` is no longer a type
16+
17+
fn main() {
18+
let x = ~4i; //~ ERROR obsolete syntax: `~` notation for owned pointer allocation
19+
let y = ~"hello"; //~ ERROR obsolete syntax: `~` notation for owned pointer allocation
20+
let z = ~[1i, 2, 3]; //~ ERROR obsolete syntax: `~[T]` is no longer a type
21+
}

0 commit comments

Comments
 (0)