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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 2284 matching lines...) Expand 10 before | Expand all | Expand 10 after
2295 "super: 6", 2295 "super: 6",
2296 "eval: 7", 2296 "eval: 7",
2297 "arguments: 8", 2297 "arguments: 8",
2298 NULL 2298 NULL
2299 }; 2299 };
2300 2300
2301 RunParserSyncTest(context_data, statement_data, kSuccess); 2301 RunParserSyncTest(context_data, statement_data, kSuccess);
2302 } 2302 }
2303 2303
2304 2304
2305 TEST(ObjectLiteralComputedNames) {
2306 const char* context_data[][2] = {
2307 {"var myobj = {", "};"},
2308 {"\"use strict\"; var myobj = {", "};"},
2309 { NULL, NULL }
2310 };
2311
2312 const char* good_data[] = {
2313 "['foo']: 42",
2314 "['foo']: 42, foo: 10",
2315 "foo: 10, ['foo']: 42",
2316 "foo: 10, ['foo']: 42, bar: 35",
2317 "foo: 10, bar: 35, ['foo']: 42",
2318 "bar: 35, foo: 10, ['foo']: 42",
2319 "bar: 35, ['foo']: 42, foo: 10",
2320 "['bar']: 35, ['foo']: 42, foo: 10",
2321 "['bar']: 35, foo: 10, ['foo']: 42",
2322 "foo: 10, [1 ? 'foo' : 'bar']: 42",
2323 "foo: 10, [0 ? 'foo' : 'bar']: 42",
2324 "[sym]: 'ohai'",
2325 "[1 ? sym : 'foo']: 'ohai'",
2326 "[0 ? sym : 'foo']: 'ohai'",
2327 "['foo']: 10, get foo() { return 42 }",
2328 "get foo() { return 42 }, ['foo']: 10",
2329 "0: 42, [0]: 10",
2330 "[0]: 42, 0: 10",
2331 NULL
2332 };
2333
2334 const char* bad_data[] = {
2335 "['foo",
2336 "'foo']",
2337 "['foo': 32]",
2338 "['foo': 32]: 100",
2339
2340 "['foo']",
2341 "3, ['foo']",
2342 "['foo'], 3",
2343 "bar: baz, ['foo']",
2344 "['foo'], bar: baz",
2345
2346 // These are correct but currently unsupported.
2347 "get ['foo']() {}",
2348 "set ['foo']() {}",
2349 "foo: 32, get ['foo']() {}, set ['foo'](x) {}",
2350 NULL
2351 };
2352
2353 bool saved_flag = i::FLAG_harmony_object_literals;
2354 i::FLAG_harmony_object_literals = true;
2355
2356 RunParserSyncTest(context_data, good_data, kSuccess);
2357 RunParserSyncTest(context_data, bad_data, kError);
2358
2359 i::FLAG_harmony_object_literals = saved_flag;
2360 }
2361
2362
2305 TEST(TooManyArguments) { 2363 TEST(TooManyArguments) {
2306 const char* context_data[][2] = { 2364 const char* context_data[][2] = {
2307 {"foo(", "0)"}, 2365 {"foo(", "0)"},
2308 { NULL, NULL } 2366 { NULL, NULL }
2309 }; 2367 };
2310 2368
2311 using v8::internal::Code; 2369 using v8::internal::Code;
2312 char statement[Code::kMaxArguments * 2 + 1]; 2370 char statement[Code::kMaxArguments * 2 + 1];
2313 for (int i = 0; i < Code::kMaxArguments; ++i) { 2371 for (int i = 0; i < Code::kMaxArguments; ++i) {
2314 statement[2 * i] = '0'; 2372 statement[2 * i] = '0';
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
2540 v8::Local<v8::String> source = 2598 v8::Local<v8::String> source =
2541 v8::String::NewFromTwoByte(isolate, two_byte_source); 2599 v8::String::NewFromTwoByte(isolate, two_byte_source);
2542 v8::Local<v8::Value> result = CompileRun(source); 2600 v8::Local<v8::Value> result = CompileRun(source);
2543 CHECK(result->IsString()); 2601 CHECK(result->IsString());
2544 v8::Local<v8::String> expected_name = 2602 v8::Local<v8::String> expected_name =
2545 v8::String::NewFromTwoByte(isolate, two_byte_name); 2603 v8::String::NewFromTwoByte(isolate, two_byte_name);
2546 CHECK(result->Equals(expected_name)); 2604 CHECK(result->Equals(expected_name));
2547 i::DeleteArray(two_byte_source); 2605 i::DeleteArray(two_byte_source);
2548 i::DeleteArray(two_byte_name); 2606 i::DeleteArray(two_byte_name);
2549 } 2607 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698