Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(520)

Unified Diff: test/mjsunit/delete-non-configurable.js

Issue 11094021: Fix bug in deletion of indexed properties (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Replace api test by mjsunit test Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« src/objects.cc ('K') | « src/objects.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/mjsunit/delete-non-configurable.js
diff --git a/test/mjsunit/regress/regress-crbug-142218.js b/test/mjsunit/delete-non-configurable.js
similarity index 55%
copy from test/mjsunit/regress/regress-crbug-142218.js
copy to test/mjsunit/delete-non-configurable.js
index 373f83bca34d915ca06cc9c6a52875a30b7ec3e5..8991f43f530a04b8fdf2b07e861a09f01407d095 100644
--- a/test/mjsunit/regress/regress-crbug-142218.js
+++ b/test/mjsunit/delete-non-configurable.js
@@ -25,20 +25,50 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-// Flags: --allow-natives-syntax
+// Delete elements of a String object.
+var TIPLI = "tipli"
+var so = new String(TIPLI);
+var length = so.length;
-length = 1 << 16;
-a = new Array(length);
+for (var i = 0; i < length; i++) {
+ assertFalse(delete so[i]);
+ assertThrows("'use strict'; delete so[i];", TypeError);
+ assertFalse(delete so[i.toString()]);
+ assertThrows("'use strict'; delete so[i.toString()];", TypeError);
+}
+
+assertEquals(length, so.length);
+assertEquals(new String(TIPLI), so);
-function insert_element(key) {
- a[key] = 42;
+// Delete elements of an Array.
+var arr = new Array(length);
+
+for (var i = 0; i < length; i++) {
+ arr[i] = i;
+ Object.defineProperty(arr, i, { configurable: false });
}
-insert_element(1);
-%OptimizeFunctionOnNextCall(insert_element);
-insert_element(new Object());
-count = 0;
for (var i = 0; i < length; i++) {
- if (a[i] != undefined) count++;
+ assertFalse(delete arr[i]);
+ assertThrows("'use strict'; delete arr[i];", TypeError);
+ assertFalse(delete arr[i.toString()]);
+ assertThrows("'use strict'; delete arr[i.toString()];", TypeError);
+ assertEquals(i, arr[i]);
}
-assertEquals(1, count);
+
+assertEquals(length, arr.length);
+assertTrue(delete arr[length]);
+
+// Delete an element of an Object.
+var INDEX = 28;
+var obj = new Object();
+
+obj[INDEX] = TIPLI;
+Object.defineProperty(obj, INDEX, { configurable: false });
+
+assertFalse(delete obj[INDEX]);
+assertThrows("'use strict'; delete obj[INDEX];", TypeError);
+assertFalse(delete obj[INDEX.toString()]);
+assertThrows("'use strict'; delete obj[INDEX.toString()];", TypeError);
+assertEquals(TIPLI, obj[INDEX]);
+assertTrue(delete arr[INDEX+1]);
« src/objects.cc ('K') | « src/objects.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698