@@ -7598,7 +7598,9 @@ merge(Compressor.prototype, {
|
|||||||
// typeof always returns a non-empty string, thus it's
|
// typeof always returns a non-empty string, thus it's
|
||||||
// always true in booleans
|
// always true in booleans
|
||||||
AST_Node.warn("Boolean expression always true [{file}:{line},{col}]", self.start);
|
AST_Node.warn("Boolean expression always true [{file}:{line},{col}]", self.start);
|
||||||
return (exp instanceof AST_SymbolRef ? make_node(AST_True, self) : make_sequence(self, [
|
return (exp instanceof AST_SymbolRef && all(exp.definition().orig, function(sym) {
|
||||||
|
return !(sym instanceof AST_SymbolConst || sym instanceof AST_SymbolLet);
|
||||||
|
}) ? make_node(AST_True, self) : make_sequence(self, [
|
||||||
exp,
|
exp,
|
||||||
make_node(AST_True, self)
|
make_node(AST_True, self)
|
||||||
])).optimize(compressor);
|
])).optimize(compressor);
|
||||||
|
|||||||
@@ -386,7 +386,7 @@ function test_case(test) {
|
|||||||
mangle: test.mangle
|
mangle: test.mangle
|
||||||
});
|
});
|
||||||
var actual = stdout[toplevel ? 1 : 0];
|
var actual = stdout[toplevel ? 1 : 0];
|
||||||
if (test.expect_stdout === true) {
|
if (test.expect_stdout === true || test.expect_stdout instanceof Error && test.expect_stdout.name === actual.name) {
|
||||||
test.expect_stdout = actual;
|
test.expect_stdout = actual;
|
||||||
}
|
}
|
||||||
if (!sandbox.same_stdout(test.expect_stdout, actual)) {
|
if (!sandbox.same_stdout(test.expect_stdout, actual)) {
|
||||||
|
|||||||
@@ -1084,3 +1084,23 @@ issue_4231: {
|
|||||||
}
|
}
|
||||||
expect_stdout: "function"
|
expect_stdout: "function"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
issue_4245: {
|
||||||
|
options = {
|
||||||
|
booleans: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
const a = f();
|
||||||
|
function f() {
|
||||||
|
typeof a;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
const a = f();
|
||||||
|
function f() {
|
||||||
|
a,
|
||||||
|
1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
expect_stdout: true
|
||||||
|
}
|
||||||
|
|||||||
@@ -893,3 +893,26 @@ issue_4231: {
|
|||||||
expect_stdout: "function"
|
expect_stdout: "function"
|
||||||
node_version: ">=4"
|
node_version: ">=4"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
issue_4245: {
|
||||||
|
options = {
|
||||||
|
booleans: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
"use strict";
|
||||||
|
let a = f();
|
||||||
|
function f() {
|
||||||
|
typeof a;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
"use strict";
|
||||||
|
let a = f();
|
||||||
|
function f() {
|
||||||
|
a,
|
||||||
|
1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
expect_stdout: ReferenceError("a is not defined")
|
||||||
|
node_version: ">=4"
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user