Reviewed by Darin Adler.
JavaScript delete operator should return false for string properties
https://bugs.webkit.org/show_bug.cgi?id=32012
* runtime/StringObject.cpp:
(JSC::StringObject::deleteProperty):
2009-12-04 Kent Hansen <kent.hansen@nokia.com>
Reviewed by Darin Adler.
Add test for JavaScript string property deletion
https://bugs.webkit.org/show_bug.cgi?id=32012
* fast/js/script-tests/string-property-deletion.js: Added.
* fast/js/string-property-deletion-expected.txt: Added.
* fast/js/string-property-deletion.html: Added.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@51724
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2009-12-04 Kent Hansen <kent.hansen@nokia.com>
+
+ Reviewed by Darin Adler.
+
+ JavaScript delete operator should return false for string properties
+ https://bugs.webkit.org/show_bug.cgi?id=32012
+
+ * runtime/StringObject.cpp:
+ (JSC::StringObject::deleteProperty):
+
2009-12-03 Drew Wilson <atwilson@chromium.org>
Rolled back r51633 because it causes a perf regression in Chromium.
{
if (propertyName == exec->propertyNames().length)
return false;
+ bool isStrictUInt32;
+ unsigned i = propertyName.toStrictUInt32(&isStrictUInt32);
+ if (isStrictUInt32 && internalValue()->canGetIndex(i))
+ return false;
return JSObject::deleteProperty(exec, propertyName);
}
+2009-12-04 Kent Hansen <kent.hansen@nokia.com>
+
+ Reviewed by Darin Adler.
+
+ Add test for JavaScript string property deletion
+ https://bugs.webkit.org/show_bug.cgi?id=32012
+
+ * fast/js/script-tests/string-property-deletion.js: Added.
+ * fast/js/string-property-deletion-expected.txt: Added.
+ * fast/js/string-property-deletion.html: Added.
+
2009-12-04 Yuzo Fujishima <yuzo@google.com>
Reviewed by Alexey Proskuryakov.
--- /dev/null
+description("This page tests deletion of properties on a string object.");
+
+var str = "abc";
+shouldBe('str.length', '3');
+shouldBe('delete str.length', 'false');
+shouldBe('delete str[0]', 'false');
+shouldBe('delete str[1]', 'false');
+shouldBe('delete str[2]', 'false');
+shouldBe('delete str[3]', 'true');
+shouldBe('delete str[-1]', 'true');
+shouldBe('delete str[4294967294]', 'true');
+shouldBe('delete str[4294967295]', 'true');
+shouldBe('delete str[4294967296]', 'true');
+shouldBe('delete str[0.0]', 'false');
+shouldBe('delete str[0.1]', 'true');
+shouldBe('delete str[\'0.0\']', 'true');
+shouldBe('delete str.foo', 'true');
+
+var successfullyParsed = true;
--- /dev/null
+This page tests deletion of properties on a string object.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS str.length is 3
+PASS delete str.length is false
+PASS delete str[0] is false
+PASS delete str[1] is false
+PASS delete str[2] is false
+PASS delete str[3] is true
+PASS delete str[-1] is true
+PASS delete str[4294967294] is true
+PASS delete str[4294967295] is true
+PASS delete str[4294967296] is true
+PASS delete str[0.0] is false
+PASS delete str[0.1] is true
+PASS delete str['0.0'] is true
+PASS delete str.foo is true
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="resources/js-test-style.css">
+<script src="resources/js-test-pre.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/string-property-deletion.js"></script>
+<script src="resources/js-test-post.js"></script>
+</body>
+</html>