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

Side by Side Diff: test/mjsunit/strong/literals.js

Issue 1134333005: [strong] Object literals create strong objects (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 7 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
OLDNEW
(Empty)
1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // Flags: --strong-mode --allow-natives-syntax
6 // Flags: --harmony-arrow-functions --harmony-rest-parameters
7
8
9 (function WeakObjectLiterals() {
10 assertTrue(!%IsStrong({}));
11 assertTrue(!%IsStrong({a: 0, b: 0}));
12 assertTrue(!%IsStrong({f: function(){}}));
13 assertTrue(!%IsStrong(Realm.eval(Realm.current(),
14 "({f: function(){}})")));
15 })();
16
17 (function StrongObjectLiterals() {
18 'use strong';
19 assertTrue(%IsStrong({}));
20 assertTrue(%IsStrong({a: 0, b: 0}));
arv (Not doing code reviews) 2015/05/13 16:39:37 Please add tests with accessors, methods, __proto_
Dmitry Lomov (no reviews) 2015/05/18 09:15:56 Also regexps, if I understand the patch correctly.
rossberg 2015/05/18 09:32:37 Done. Turns out that super does not work currently
rossberg 2015/05/18 09:32:37 Those don't work yet, see the existing tests below
Dmitry Lomov (no reviews) 2015/05/18 10:56:30 I see, missed that.
21 // Object literals with constant functions are treated specially,
22 // but currently only on the toplevel.
23 assertTrue(%IsStrong({f: function(){}}));
24 // TODO(rossberg): implement strong object literals with functions
25 // assertTrue(%IsStrong(Realm.eval(Realm.current(),
26 // "'use strong'; ({f: function(){}})")));
27 })();
28
29 (function WeakArrayLiterals(...args) {
30 assertTrue(!%IsStrong(args));
31 assertTrue(!%IsStrong([]));
32 assertTrue(!%IsStrong([1, 2, 3]));
33 })();
34
35 (function StrongArrayLiterals(...args) {
36 'use strong';
37 // TODO(rossberg): implement strong array literals
38 // assertTrue(%IsStrong(args));
39 // assertTrue(%IsStrong([]));
40 // assertTrue(%IsStrong([1, 2, 3]));
41 })(0); // TODO(arv): drop dummy
42
43 (function WeakFunctionLiterals() {
44 function f() {}
45 assertTrue(!%IsStrong(f));
46 assertTrue(!%IsStrong(function(){}));
47 assertTrue(!%IsStrong(() => {}));
48 assertTrue(!%IsStrong(x => x));
49 })();
50
51 (function StrongFunctionLiterals(g) {
52 'use strong';
53 function f() {}
54 assertTrue(%IsStrong(f));
55 assertTrue(%IsStrong(g));
56 assertTrue(%IsStrong(function(){}));
57 assertTrue(%IsStrong(() => {}));
58 assertTrue(%IsStrong(x => x));
59 })(function() { 'use strong' });
60
61 (function WeakRegExpLiterals() {
62 assertTrue(!%IsStrong(/abc/));
63 })();
64
65 (function StrongRegExpLiterals() {
66 'use strong';
67 // TODO(rossberg): implement strong regexp literals
68 // assertTrue(%IsStrong(/abc/));
69 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698