diff options
| author | Marijn Haverbeke <marijnh@gmail.com> | 2011-11-03 10:57:54 +0100 |
|---|---|---|
| committer | Marijn Haverbeke <marijnh@gmail.com> | 2011-11-03 10:57:54 +0100 |
| commit | 1a68a98824cab9122bb39920d09415ff34a3944e (patch) | |
| tree | 322a122fe33ac78370e068433f217dca064cf725 /src/comp/syntax | |
| parent | 1deaf9700244eb44d789a284e8ba8e43d03aea7d (diff) | |
| download | rust-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.rs | 21 | ||||
| -rw-r--r-- | src/comp/syntax/parse/parser.rs | 1 |
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. { |
