Compare commits

..

No commits in common. "6a1368ad811d642afa1b26123a53b8a9c5d8ac3b" and "e7661983f712671f3bedbb9c233394f3fd7ee6f7" have entirely different histories.

13 changed files with 25 additions and 86 deletions

View File

@ -3,7 +3,6 @@ on:
push: push:
paths: paths:
- 'gulpfile.mjs' - 'gulpfile.mjs'
- 'external/builder/**'
- 'src/**' - 'src/**'
- 'test/test.mjs' - 'test/test.mjs'
- 'test/integration/**' - 'test/integration/**'
@ -14,7 +13,6 @@ on:
pull_request: pull_request:
paths: paths:
- 'gulpfile.mjs' - 'gulpfile.mjs'
- 'external/builder/**'
- 'src/**' - 'src/**'
- 'test/test.mjs' - 'test/test.mjs'
- 'test/integration/**' - 'test/integration/**'

View File

@ -3,7 +3,6 @@ on:
push: push:
paths: paths:
- 'gulpfile.mjs' - 'gulpfile.mjs'
- 'external/builder/**'
- 'src/**' - 'src/**'
- 'test/test.mjs' - 'test/test.mjs'
- 'test/unit/**' - 'test/unit/**'
@ -14,7 +13,6 @@ on:
pull_request: pull_request:
paths: paths:
- 'gulpfile.mjs' - 'gulpfile.mjs'
- 'external/builder/**'
- 'src/**' - 'src/**'
- 'test/test.mjs' - 'test/test.mjs'
- 'test/unit/**' - 'test/unit/**'

View File

@ -47,31 +47,18 @@ function handlePreprocessorAction(ctx, actionName, args, path) {
} }
function babelPluginPDFJSPreprocessor(babel, ctx) { function babelPluginPDFJSPreprocessor(babel, ctx) {
function removeUnusedFunctionsAndVariables(path) { function removeUnusedFunctions(path) {
const { scope } = path;
let removed; let removed;
do { do {
removed = false; removed = false;
scope.crawl(); path.scope.crawl();
for (const name in scope.bindings) { for (const name in path.scope.bindings) {
const binding = scope.bindings[name]; const binding = path.scope.bindings[name];
if (!binding.referenced) { if (!binding.referenced) {
const { path: bindingPath } = binding; const { path: bindingPath } = binding;
if (bindingPath.isFunctionDeclaration()) { if (bindingPath.isFunctionDeclaration()) {
bindingPath.remove(); bindingPath.remove();
removed = true; removed = true;
} else if (
bindingPath.isClassDeclaration() &&
!bindingPath.node.body.body.some(m => m.type === "StaticBlock")
) {
bindingPath.remove();
removed = true;
} else if (
bindingPath.isVariableDeclarator() &&
scope.isPure(bindingPath.node.init, false)
) {
bindingPath.remove();
removed = true;
} }
} }
} }
@ -126,28 +113,24 @@ function babelPluginPDFJSPreprocessor(babel, ctx) {
LogicalExpression: { LogicalExpression: {
exit(path) { exit(path) {
const { node } = path; const { node } = path;
let leftIsTruthy = false; if (!t.isBooleanLiteral(node.left)) {
switch (node.left.type) { return;
case "BooleanLiteral":
case "NumericLiteral":
case "StringLiteral":
case "NullLiteral":
leftIsTruthy = Boolean(node.left.value);
break;
default:
return;
} }
switch (node.operator) { switch (node.operator) {
case "&&": case "&&":
// true && expr => expr // true && expr => expr
// false && expr => false // false && expr => false
path.replaceWith(leftIsTruthy ? node.right : node.left); path.replaceWith(
node.left.value === true ? node.right : node.left
);
break; break;
case "||": case "||":
// true || expr => true // true || expr => true
// false || expr => expr // false || expr => expr
path.replaceWith(leftIsTruthy ? node.left : node.right); path.replaceWith(
node.left.value === true ? node.left : node.right
);
break; break;
} }
}, },
@ -275,7 +258,7 @@ function babelPluginPDFJSPreprocessor(babel, ctx) {
body.pop(); body.pop();
} }
removeUnusedFunctionsAndVariables(path); removeUnusedFunctions(path);
}, },
}, },
ClassMethod: { ClassMethod: {
@ -301,7 +284,7 @@ function babelPluginPDFJSPreprocessor(babel, ctx) {
Program: { Program: {
exit(path) { exit(path) {
if (path.node.sourceType === "module") { if (path.node.sourceType === "module") {
removeUnusedFunctionsAndVariables(path); removeUnusedFunctions(path);
} }
}, },
}, },

View File

@ -13,6 +13,3 @@ var l = true;
var m = false; var m = false;
var n = false; var n = false;
var o = true; var o = true;
var p = null;
var q = 1;
use(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q);

View File

@ -13,7 +13,3 @@ var l = 'test' !== 'test2';
var m = '1' === true; var m = '1' === true;
var n = !true; var n = !true;
var o = !false; var o = !false;
var p = null && 1;
var q = null || 1;
use(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q);

View File

@ -18,8 +18,6 @@ class E extends A {
class F { class F {
constructor() { constructor() {
var a = 0; var a = 0;
use(a);
} }
} }
class G {} class G {}
use(B, C, D, E, F, G);

View File

@ -24,7 +24,6 @@ class F {
constructor() { constructor() {
if (PDFJSDev.test('TRUE')) { if (PDFJSDev.test('TRUE')) {
var a = 0; var a = 0;
use(a);
} }
} }
} }
@ -33,9 +32,6 @@ class G {
constructor() { constructor() {
if (PDFJSDev.test('FALSE')) { if (PDFJSDev.test('FALSE')) {
var a = 0; var a = 0;
use(a);
} }
} }
} }
use(B, C, D, E, F, G);

View File

@ -5,12 +5,12 @@ function f2() {
} }
f2(); f2();
function f3() { function f3() {
before(); var i = 0;
throw "test"; throw "test";
} }
f3(); f3();
function f4() { function f4() {
before(); var i = 0;
} }
f4(); f4();
var obj = { var obj = {
@ -23,4 +23,3 @@ class C {
} }
var arrow1 = () => {}; var arrow1 = () => {};
var arrow2 = () => {}; var arrow2 = () => {};
use(obj, C, arrow1, arrow2);

View File

@ -1,43 +1,41 @@
function f1() { function f1() {
return; return;
after(); var i = 0;
} }
f1(); f1();
function f2() { function f2() {
return 1; return 1;
after(); var i = 0;
} }
f2(); f2();
function f3() { function f3() {
before(); var i = 0;
throw "test"; throw "test";
after(); var j = 0;
} }
f3(); f3();
function f4() { function f4() {
before(); var i = 0;
if (true) { if (true) {
return; return;
} }
throw "test"; throw "test";
after(); var j = 0;
} }
f4(); f4();
var obj = { var obj = {
method1() { return; after(); }, method1() { return; var i = 0; },
method2() { return; }, method2() { return; },
}; };
class C { class C {
method1() { return; after(); } method1() { return; var i = 0; }
method2() { return; } method2() { return; }
} }
var arrow1 = () => { return; after(); }; var arrow1 = () => { return; var i = 0; };
var arrow2 = () => { return; }; var arrow2 = () => { return; };
use(obj, C, arrow1, arrow2);

View File

@ -16,4 +16,3 @@ var j = {
}; };
var k = false; var k = false;
var l = true; var l = true;
use(a, b, c, d, e, f, g, i, j, k, l);

View File

@ -9,5 +9,3 @@ var i = typeof PDFJSDev === 'undefined' ? PDFJSDev.eval('FALSE') : '0';
var j = typeof PDFJSDev !== 'undefined' ? PDFJSDev.eval('OBJ.obj') : '0'; var j = typeof PDFJSDev !== 'undefined' ? PDFJSDev.eval('OBJ.obj') : '0';
var k = !PDFJSDev.test('TRUE'); var k = !PDFJSDev.test('TRUE');
var l = !PDFJSDev.test('FALSE'); var l = !PDFJSDev.test('FALSE');
use(a, b, c, d, e, f, g, i, j, k, l);

View File

@ -1,7 +0,0 @@
let c = 4;
let e = sideEffect();
let f = 5;
use(c);
{
use(f);
}

View File

@ -1,14 +0,0 @@
let a = 1;
let b = a, c = 4;
let d = null && sideEffect();
let e = null || sideEffect();
let f = 5;
let g = 6;
use(c);
if (PDFJSDev.test('TRUE')) {
use(f);
} else {
use(g);
}