Index: test/mjsunit/harmony/array-find.js |
diff --git a/test/mjsunit/harmony/array-find.js b/test/mjsunit/harmony/array-find.js |
index 9f5750eca05d03a66c979902b021c1564672b893..c75fae8fdae2f98520007a827a4e7c27a44d32f6 100644 |
--- a/test/mjsunit/harmony/array-find.js |
+++ b/test/mjsunit/harmony/array-find.js |
@@ -237,6 +237,23 @@ assertEquals(22, a.find(function(val) { return 22 === val; }), undefined); |
return this.elementAt(key) === val; |
}, thisArg); |
assertEquals("b", found); |
+ |
+ // Create a new object in each function call when receiver is a primitive value. |
+ // See ECMA-262, Annex C. |
+ a = []; |
+ [1, 2].find(function() { a.push(this) }, ""); |
+ assertTrue(a[0] !== a[1]); |
+ |
+ // Do not create a new object otherwise. |
+ a = []; |
+ [1, 2].find(function() { a.push(this) }, {}); |
+ assertFalse(a[0] !== a[1]); |
+ |
+ // In strict mode primitive values should not be coerced to an object. |
+ a = []; |
+ [1, 2].find(function() { 'use strict'; a.push(this); }, ""); |
+ assertTrue(a[0] === "" && a[0] === a[1]); |
+ |
})(); |
// Test exceptions |