Fix JS DCE removing reachable functions

This commit is contained in:
Alexey Andreev
2017-10-09 20:12:03 +03:00
parent cb7d561c6c
commit 8cdef4139e
11 changed files with 108 additions and 13 deletions
+17
View File
@@ -0,0 +1,17 @@
(function(_) {
var x = {};
function foo() {
return x["bar"]();
}
x.bar = function() {
return "bar";
};
x.baz = function() {
return "baz";
};
_.foo = foo;
})(module.exports);
// REQUEST_REACHABLE: main.foo
// ASSERT_REACHABLE: x.bar
// ASSERT_UNREACHABLE: x.baz
+27
View File
@@ -0,0 +1,27 @@
(function(_, Kotlin) {
Kotlin.defineInlineFunction("bar", Kotlin.wrapFunction(function() {
function baz() {
return "bar";
}
return function() {
return baz();
};
}));
return _;
})(module.exports, require("kotlin"));
(function(_) {
function baz() {
return "baz";
}
function foo() {
return baz();
}
_.foo = foo;
})(module.exports);
// REQUEST_REACHABLE: main.foo
// ASSERT_REACHABLE: main.foo
// ASSERT_REACHABLE: baz
+15
View File
@@ -0,0 +1,15 @@
(function(_) {
var x = {};
x.y = {};
x.y.bar = function() {
return "bar";
};
function foo() {
return typeof x.y;
}
_.foo = foo;
})(module.exports);
// REQUEST_REACHABLE: main.foo
// ASSERT_REACHABLE: x.y
// ASSERT_UNREACHABLE: x.y.bar