diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2013-01-23 11:43:58 -0800 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2013-01-23 14:41:08 -0800 |
| commit | 54b2cad8b341434c7c0edb153a0fa662fb2981f1 (patch) | |
| tree | 72e8fa6637f1d5250b826ef4436e00993e2d3388 /src/libsyntax/parse | |
| parent | 1d1b81143b947fa33745a78cf00af12cda437149 (diff) | |
| download | rust-54b2cad8b341434c7c0edb153a0fa662fb2981f1.tar.gz rust-54b2cad8b341434c7c0edb153a0fa662fb2981f1.zip | |
libsyntax: Remove `fn() unsafe { ... }`. r=graydon
Diffstat (limited to 'src/libsyntax/parse')
| -rw-r--r-- | src/libsyntax/parse/lexer.rs | 12 | ||||
| -rw-r--r-- | src/libsyntax/parse/obsolete.rs | 7 | ||||
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 8 |
3 files changed, 18 insertions, 9 deletions
diff --git a/src/libsyntax/parse/lexer.rs b/src/libsyntax/parse/lexer.rs index 573c36e619b..1574a037a46 100644 --- a/src/libsyntax/parse/lexer.rs +++ b/src/libsyntax/parse/lexer.rs @@ -157,11 +157,13 @@ fn byte_offset(rdr: string_reader) -> BytePos { (rdr.pos - rdr.filemap.start_pos) } -fn get_str_from(rdr: string_reader, start: BytePos) -> ~str unsafe { - // I'm pretty skeptical about this subtraction. What if there's a - // multi-byte character before the mark? - return str::slice(*rdr.src, start.to_uint() - 1u, - byte_offset(rdr).to_uint() - 1u); +fn get_str_from(rdr: string_reader, start: BytePos) -> ~str { + unsafe { + // I'm pretty skeptical about this subtraction. What if there's a + // multi-byte character before the mark? + return str::slice(*rdr.src, start.to_uint() - 1u, + byte_offset(rdr).to_uint() - 1u); + } } fn bump(rdr: string_reader) { diff --git a/src/libsyntax/parse/obsolete.rs b/src/libsyntax/parse/obsolete.rs index 15905c090db..67f6c4bed3f 100644 --- a/src/libsyntax/parse/obsolete.rs +++ b/src/libsyntax/parse/obsolete.rs @@ -44,7 +44,8 @@ pub enum ObsoleteSyntax { ObsoletePrivSection, ObsoleteModeInFnType, ObsoleteMoveInit, - ObsoleteBinaryMove + ObsoleteBinaryMove, + ObsoleteUnsafeBlock } impl ObsoleteSyntax : cmp::Eq { @@ -118,6 +119,10 @@ impl Parser { ObsoleteBinaryMove => ( "binary move", "Write `foo = move bar` instead" + ), + ObsoleteUnsafeBlock => ( + "non-standalone unsafe block", + "use an inner `unsafe { ... }` block instead" ) }; diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index e1fc23276bc..4b8aa5c3f31 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -69,6 +69,7 @@ use parse::obsolete::{ObsoleteLet, ObsoleteFieldTerminator}; use parse::obsolete::{ObsoleteMoveInit, ObsoleteBinaryMove}; use parse::obsolete::{ObsoleteStructCtor, ObsoleteWith, ObsoleteClassMethod}; use parse::obsolete::{ObsoleteSyntax, ObsoleteLowerCaseKindBounds}; +use parse::obsolete::{ObsoleteUnsafeBlock}; use parse::prec::{as_prec, token_to_binop}; use parse::token::{can_begin_expr, is_ident, is_ident_or_path}; use parse::token::{is_plain_ident, INTERPOLATED, special_idents}; @@ -2336,12 +2337,13 @@ impl Parser { } let lo = self.span.lo; - let us = self.eat_keyword(~"unsafe"); + if self.eat_keyword(~"unsafe") { + self.obsolete(copy self.span, ObsoleteUnsafeBlock); + } self.expect(token::LBRACE); let {inner: move inner, next: move next} = maybe_parse_inner_attrs_and_next(self, parse_attrs); - let blk_check_mode = if us { unsafe_blk } else { default_blk }; - return (inner, self.parse_block_tail_(lo, blk_check_mode, next)); + return (inner, self.parse_block_tail_(lo, default_blk, next)); } fn parse_block_no_value() -> blk { |
