summary refs log tree commit diff
path: root/src/comp/syntax
diff options
context:
space:
mode:
authorMarijn Haverbeke <marijnh@gmail.com>2011-11-03 10:57:54 +0100
committerMarijn Haverbeke <marijnh@gmail.com>2011-11-03 10:57:54 +0100
commit1a68a98824cab9122bb39920d09415ff34a3944e (patch)
tree322a122fe33ac78370e068433f217dca064cf725 /src/comp/syntax
parent1deaf9700244eb44d789a284e8ba8e43d03aea7d (diff)
downloadrust-1a68a98824cab9122bb39920d09415ff34a3944e.tar.gz
rust-1a68a98824cab9122bb39920d09415ff34a3944e.zip
Disallow writing to function arguments again
Remove implicit copying hack.

Closes #1118
Diffstat (limited to 'src/comp/syntax')
-rw-r--r--src/comp/syntax/parse/lexer.rs21
-rw-r--r--src/comp/syntax/parse/parser.rs1
2 files changed, 6 insertions, 16 deletions
diff --git a/src/comp/syntax/parse/lexer.rs b/src/comp/syntax/parse/lexer.rs
index 10581643701..685b93941b9 100644
--- a/src/comp/syntax/parse/lexer.rs
+++ b/src/comp/syntax/parse/lexer.rs
@@ -158,17 +158,6 @@ fn consume_block_comment(rdr: reader) {
     be consume_whitespace_and_comments(rdr);
 }
 
-fn string_to_int(s: str) -> int {
-    let negative = false;
-    if str::char_at(s, 0u) == '-' {
-        negative = true;
-        s = str::substr(s, 1u, str::byte_len(s) - 1u);
-    }
-    let accum_int: int = 0;
-    for c: u8 in s { accum_int *= 10; accum_int += dec_digit_val(c as char); }
-    ret if negative { -accum_int } else { accum_int };
-}
-
 fn scan_exponent(rdr: reader) -> option::t<str> {
     let c = rdr.curr();
     let rslt = "";
@@ -210,7 +199,7 @@ fn scan_dec_digits(rdr: reader) -> str {
 }
 
 fn scan_number(c: char, rdr: reader) -> token::token {
-    let accum_int = 0;
+    let accum_int = 0, c = c;
     let num_str: str = "";
     let n = rdr.next();
     if c == '0' && n == 'x' {
@@ -233,7 +222,7 @@ fn scan_number(c: char, rdr: reader) -> token::token {
         }
     } else {
         num_str = scan_dec_digits_with_prefix(rdr);
-        accum_int = string_to_int(num_str);
+        accum_int = std::int::from_str(num_str);
     }
     c = rdr.curr();
     n = rdr.next();
@@ -321,8 +310,8 @@ fn scan_number(c: char, rdr: reader) -> token::token {
 }
 
 fn scan_numeric_escape(rdr: reader, n_hex_digits: uint) -> char {
-    let accum_int = 0;
-    while n_hex_digits != 0u {
+    let accum_int = 0, i = n_hex_digits;
+    while i != 0u {
         let n = rdr.curr();
         rdr.bump();
         if !is_hex_digit(n) {
@@ -331,7 +320,7 @@ fn scan_numeric_escape(rdr: reader, n_hex_digits: uint) -> char {
         }
         accum_int *= 16;
         accum_int += hex_digit_val(n);
-        n_hex_digits -= 1u;
+        i -= 1u;
     }
     ret accum_int as char;
 }
diff --git a/src/comp/syntax/parse/parser.rs b/src/comp/syntax/parse/parser.rs
index b22afb9efdb..66a3b3440e8 100644
--- a/src/comp/syntax/parse/parser.rs
+++ b/src/comp/syntax/parse/parser.rs
@@ -1038,6 +1038,7 @@ fn parse_dot_or_call_expr(p: parser) -> @ast::expr {
 fn parse_dot_or_call_expr_with(p: parser, e: @ast::expr) -> @ast::expr {
     let lo = e.span.lo;
     let hi = e.span.hi;
+    let e = e;
     while true {
         alt p.peek() {
           token::LPAREN. {