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

Unified Diff: test/cctest/test-parsing.cc

Issue 332443002: Add support for computed property names in object literals (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Added tests Created 6 years, 6 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
Index: test/cctest/test-parsing.cc
diff --git a/test/cctest/test-parsing.cc b/test/cctest/test-parsing.cc
index 533c6249ca9abee8dd498ffaf216a2c823554744..371435dac2f22c5a047344074f49dd3a6cdbb099 100644
--- a/test/cctest/test-parsing.cc
+++ b/test/cctest/test-parsing.cc
@@ -2302,6 +2302,64 @@ TEST(NoErrorsObjectLiteralChecking) {
}
+TEST(ObjectLiteralComputedNames) {
+ const char* context_data[][2] = {
+ {"var myobj = {", "};"},
+ {"\"use strict\"; var myobj = {", "};"},
+ { NULL, NULL }
+ };
+
+ const char* good_data[] = {
+ "['foo']: 42",
+ "['foo']: 42, foo: 10",
+ "foo: 10, ['foo']: 42",
+ "foo: 10, ['foo']: 42, bar: 35",
+ "foo: 10, bar: 35, ['foo']: 42",
+ "bar: 35, foo: 10, ['foo']: 42",
+ "bar: 35, ['foo']: 42, foo: 10",
+ "['bar']: 35, ['foo']: 42, foo: 10",
+ "['bar']: 35, foo: 10, ['foo']: 42",
+ "foo: 10, [1 ? 'foo' : 'bar']: 42",
+ "foo: 10, [0 ? 'foo' : 'bar']: 42",
+ "[sym]: 'ohai'",
+ "[1 ? sym : 'foo']: 'ohai'",
+ "[0 ? sym : 'foo']: 'ohai'",
+ "['foo']: 10, get foo() { return 42 }",
+ "get foo() { return 42 }, ['foo']: 10",
+ "0: 42, [0]: 10",
+ "[0]: 42, 0: 10",
+ NULL
+ };
+
+ const char* bad_data[] = {
+ "['foo",
+ "'foo']",
+ "['foo': 32]",
+ "['foo': 32]: 100",
+
+ "['foo']",
+ "3, ['foo']",
+ "['foo'], 3",
+ "bar: baz, ['foo']",
+ "['foo'], bar: baz",
+
+ // These are correct but currently unsupported.
+ "get ['foo']() {}",
+ "set ['foo']() {}",
+ "foo: 32, get ['foo']() {}, set ['foo'](x) {}",
+ NULL
+ };
+
+ bool saved_flag = i::FLAG_harmony_object_literals;
+ i::FLAG_harmony_object_literals = true;
+
+ RunParserSyncTest(context_data, good_data, kSuccess);
+ RunParserSyncTest(context_data, bad_data, kError);
+
+ i::FLAG_harmony_object_literals = saved_flag;
+}
+
+
TEST(TooManyArguments) {
const char* context_data[][2] = {
{"foo(", "0)"},

Powered by Google App Engine
This is Rietveld 408576698