extend support for numeral literals (#4176)
This commit is contained in:
@@ -28,4 +28,65 @@ describe("Number literals", function() {
|
||||
assert.throws(test(inputs[i]), error, inputs[i]);
|
||||
}
|
||||
});
|
||||
it("Should parse binary, hexadecimal, octal and underscore correctly", function() {
|
||||
[
|
||||
"42",
|
||||
"4_2",
|
||||
"052",
|
||||
"0o52",
|
||||
"0O52",
|
||||
"0o5_2",
|
||||
"0x2a",
|
||||
"0X2A",
|
||||
"0x2_a",
|
||||
"0b101010",
|
||||
"0B101010",
|
||||
"0b101_010",
|
||||
"0.0000000042e+10",
|
||||
"0.0000000042E+10",
|
||||
"0.0_000000042e+10",
|
||||
"0.0000000042e+1_0",
|
||||
"0.000_000_004_2e+1_0",
|
||||
"0.000_000_004_2e+1_0-0B101_010+0x2_A-0o5_2+4_2",
|
||||
].forEach(function(code) {
|
||||
var result = UglifyJS.minify(code, {
|
||||
compress: {
|
||||
expression: true,
|
||||
},
|
||||
});
|
||||
if (result.error) throw result.error;
|
||||
assert.strictEqual(result.code, "42;");
|
||||
});
|
||||
});
|
||||
it("Should reject invalid use of underscore", function() {
|
||||
[
|
||||
"_42",
|
||||
"_+42",
|
||||
"+_42",
|
||||
].forEach(function(code) {
|
||||
var node = UglifyJS.parse(code, {
|
||||
expression: true,
|
||||
});
|
||||
assert.ok(!node.is_constant(), code);
|
||||
assert.ok(!(node instanceof UglifyJS.AST_Statement), code);
|
||||
});
|
||||
[
|
||||
"42_",
|
||||
"4__2",
|
||||
"0_52",
|
||||
"05_2",
|
||||
"0_o52",
|
||||
"0o_52",
|
||||
"0.0000000042_e10",
|
||||
"0.0000000042e_10",
|
||||
"0.0000000042e_+10",
|
||||
"0.0000000042e+_10",
|
||||
].forEach(function(code) {
|
||||
assert.throws(function() {
|
||||
UglifyJS.parse(code);
|
||||
}, function(e) {
|
||||
return e instanceof UglifyJS.JS_Parse_Error;
|
||||
}, code);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user