diff --git a/src/boot/fe/lexer.mll b/src/boot/fe/lexer.mll index 84aeb9ab11487..b84e5906bb9e7 100644 --- a/src/boot/fe/lexer.mll +++ b/src/boot/fe/lexer.mll @@ -297,7 +297,8 @@ rule token = parse | '\'' { char lexbuf } | '"' { let buf = Buffer.create 32 in str buf lexbuf } - +| _ as c { let s = Char.escaped c in + fail lexbuf ("Bad character: " ^ s) } | eof { EOF } and str buf = parse diff --git a/src/comp/front/lexer.rs b/src/comp/front/lexer.rs index aa7f2ce1f5e28..866cba351f2f9 100644 --- a/src/comp/front/lexer.rs +++ b/src/comp/front/lexer.rs @@ -388,7 +388,7 @@ impure fn scan_number(mutable char c, reader rdr) -> token.token { } else { accum_int = scan_dec_digits(rdr); } - + c = rdr.curr(); n = rdr.next(); @@ -443,6 +443,7 @@ impure fn scan_number(mutable char c, reader rdr) -> token.token { } } c = rdr.curr(); + if (c == '.') { // Parse a floating-point number. rdr.bump(); diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs index a65bb284121f8..cff80f74778ed 100644 --- a/src/comp/middle/trans.rs +++ b/src/comp/middle/trans.rs @@ -4594,6 +4594,7 @@ fn trans_log(@block_ctxt cx, @ast.expr e) -> result { auto sub = trans_expr(cx, e); auto e_ty = ty.expr_ty(e); + if (ty.type_is_fp(e_ty)) { let TypeRef tr; let bool is32bit = false;