summary refs log tree commit diff
path: root/src/libsyntax/parse
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2013-01-23 11:43:58 -0800
committerPatrick Walton <pcwalton@mimiga.net>2013-01-23 14:41:08 -0800
commit54b2cad8b341434c7c0edb153a0fa662fb2981f1 (patch)
tree72e8fa6637f1d5250b826ef4436e00993e2d3388 /src/libsyntax/parse
parent1d1b81143b947fa33745a78cf00af12cda437149 (diff)
downloadrust-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.rs12
-rw-r--r--src/libsyntax/parse/obsolete.rs7
-rw-r--r--src/libsyntax/parse/parser.rs8
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 {