18 lines
612 B
JavaScript
18 lines
612 B
JavaScript
description(
|
|
"Tests what happens when you do ToString twice, and it has a side effect that clobbers the toString method in between the two ToStrings."
|
|
);
|
|
|
|
function foo(s, sideEffect) {
|
|
var a = String(s);
|
|
sideEffect(s);
|
|
var b = String(s);
|
|
return a + b;
|
|
}
|
|
|
|
var count = 0;
|
|
for (var i = 0; i < 200; ++i) {
|
|
var code = "(function(s) { " + (i < 150 ? "return " + i + ";" : "count++; debug(\"hi!\"); s.toString = function() { return " + i + "; };") + " })";
|
|
var sideEffect = eval(code);
|
|
shouldBe("foo(new String(\"hello\"), sideEffect)", i < 150 ? "\"hellohello\"" : "\"hello" + i + "\"");
|
|
}
|