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)"}, |