-
Bug
-
Resolution: Fixed
-
P4
-
9
-
None
Both rhino and v8 say that a.x=number, but we say it's object for apply_to_call/apply_to_call4.js
print("start");
var x = {
a : 0,
b : 0,
c : 0,
initialize : function(x,y,z) {
this.a = x;
this.b = y;
this.c = z;
}
};
function f(x) {
print("this is a black hole - arguments escape");
}
function test() {
f(arguments);
x.initialize.apply(x, arguments);
}
test(4711,23,17);
print(x.a);
print(x.b);
print(x.c);
function test2() {
arguments[0] = 17;
x.initialize.apply(x, arguments);
}
test2(1,2,3);
print(x.a);
print(x.b);
print(x.c);
function test3() {
var escape = arguments[0];
f(escape);
x.initialize.apply(x, arguments);
}
test3("alpha", "beta", "gamma");
print(x.a);
print(x.b);
print(x.c);
function test4() {
var escape = arguments.length;
f(escape);
x.initialize.apply(x, arguments);
}
test4(1.2, 2.3, 3.4);
print(x.a);
print(x.b);
print(x.c);
function test5() {
x.initialize.apply(x, arguments, 17);
}
print("test 5 done");
test5(11, 22);
print("a="+typeof(x.a));
print(x.b);
print(x.c);
print("Now it's time for transforms");
function test6() {
x.initialize.apply(x, arguments);
}
test6(19, 20, 21);
print(x.a);
print(x.b);
print(x.c);
function test7() {
x.initialize.apply(x, arguments);
}
test7(1, 2.2, 17, 18);
print(x.a);
print(x.b);
print(x.c);
print("Should have transformed");
function test8() {
var apply = f;
x.initialize.apply(x, arguments);
}
test8(7,8,9);
print(x.a);
print(x.b);
print(x.c);
print("start");
var x = {
a : 0,
b : 0,
c : 0,
initialize : function(x,y,z) {
this.a = x;
this.b = y;
this.c = z;
}
};
function f(x) {
print("this is a black hole - arguments escape");
}
function test() {
f(arguments);
x.initialize.apply(x, arguments);
}
test(4711,23,17);
print(x.a);
print(x.b);
print(x.c);
function test2() {
arguments[0] = 17;
x.initialize.apply(x, arguments);
}
test2(1,2,3);
print(x.a);
print(x.b);
print(x.c);
function test3() {
var escape = arguments[0];
f(escape);
x.initialize.apply(x, arguments);
}
test3("alpha", "beta", "gamma");
print(x.a);
print(x.b);
print(x.c);
function test4() {
var escape = arguments.length;
f(escape);
x.initialize.apply(x, arguments);
}
test4(1.2, 2.3, 3.4);
print(x.a);
print(x.b);
print(x.c);
function test5() {
x.initialize.apply(x, arguments, 17);
}
print("test 5 done");
test5(11, 22);
print("a="+typeof(x.a));
print(x.b);
print(x.c);
print("Now it's time for transforms");
function test6() {
x.initialize.apply(x, arguments);
}
test6(19, 20, 21);
print(x.a);
print(x.b);
print(x.c);
function test7() {
x.initialize.apply(x, arguments);
}
test7(1, 2.2, 17, 18);
print(x.a);
print(x.b);
print(x.c);
print("Should have transformed");
function test8() {
var apply = f;
x.initialize.apply(x, arguments);
}
test8(7,8,9);
print(x.a);
print(x.b);
print(x.c);
- duplicates
-
JDK-8057019 Additional arguments to Function.prototype.apply messes up actual arguments passed
-
- Resolved
-