From 22db7ae85ac0c96e6d3b05c47c08b8eb7ca4b030 Mon Sep 17 00:00:00 2001 From: Michael Ficarra Date: Tue, 27 Mar 2012 21:31:48 -0400 Subject: [PATCH] Octal and binary literals are more appropriately converted to hex --- lib/coffee-script/lexer.js | 8 ++++---- src/lexer.coffee | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/coffee-script/lexer.js b/lib/coffee-script/lexer.js index 9e66b4e0..e03dd909 100644 --- a/lib/coffee-script/lexer.js +++ b/lib/coffee-script/lexer.js @@ -122,11 +122,11 @@ this.error("octal literal '" + number + "' must be prefixed with '0o'"); } lexedLength = number.length; - if (octalLiteral = /0o([0-7]+)/.exec(number)) { - number = (parseInt(octalLiteral[1], 8)).toString(); + if (octalLiteral = /^0o([0-7]+)/.exec(number)) { + number = '0x' + (parseInt(octalLiteral[1], 8)).toString(16); } - if (binaryLiteral = /0b([01]+)/.exec(number)) { - number = (parseInt(binaryLiteral[1], 2)).toString(); + if (binaryLiteral = /^0b([01]+)/.exec(number)) { + number = '0x' + (parseInt(binaryLiteral[1], 2)).toString(16); } this.token('NUMBER', number); return lexedLength; diff --git a/src/lexer.coffee b/src/lexer.coffee index e99af4e2..54651803 100644 --- a/src/lexer.coffee +++ b/src/lexer.coffee @@ -142,10 +142,10 @@ exports.Lexer = class Lexer else if /^0\d+/.test number @error "octal literal '#{number}' must be prefixed with '0o'" lexedLength = number.length - if octalLiteral = /0o([0-7]+)/.exec number - number = (parseInt octalLiteral[1], 8).toString() - if binaryLiteral = /0b([01]+)/.exec number - number = (parseInt binaryLiteral[1], 2).toString() + if octalLiteral = /^0o([0-7]+)/.exec number + number = '0x' + (parseInt octalLiteral[1], 8).toString 16 + if binaryLiteral = /^0b([01]+)/.exec number + number = '0x' + (parseInt binaryLiteral[1], 2).toString 16 @token 'NUMBER', number lexedLength