| Index: test/mjsunit/strong/literals.js
 | 
| diff --git a/test/mjsunit/strong/literals.js b/test/mjsunit/strong/literals.js
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..b9368e1f9a34c4544e9f98455d4b483a1fb83a51
 | 
| --- /dev/null
 | 
| +++ b/test/mjsunit/strong/literals.js
 | 
| @@ -0,0 +1,79 @@
 | 
| +// Copyright 2015 the V8 project authors. All rights reserved.
 | 
| +// Use of this source code is governed by a BSD-style license that can be
 | 
| +// found in the LICENSE file.
 | 
| +
 | 
| +// Flags: --strong-mode --allow-natives-syntax
 | 
| +// Flags: --harmony-arrow-functions --harmony-rest-parameters
 | 
| +
 | 
| +
 | 
| +(function WeakObjectLiterals() {
 | 
| +  assertTrue(!%IsStrong({}));
 | 
| +  assertTrue(!%IsStrong({a: 0, b: 0}));
 | 
| +  assertTrue(!%IsStrong({f: function(){}}));
 | 
| +  assertTrue(!%IsStrong(Realm.eval(Realm.current(),
 | 
| +                                   "({f: function(){}})")));
 | 
| +})();
 | 
| +
 | 
| +(function StrongObjectLiterals() {
 | 
| +  'use strong';
 | 
| +  assertTrue(%IsStrong({}));
 | 
| +  assertTrue(%IsStrong({a: 0, b: 0}));
 | 
| +  assertTrue(%IsStrong({__proto__: {}, get a() {}, set b(x) {}}));
 | 
| +  assertTrue(%IsStrong({[Date() + ""]: 0, [Symbol()]: 0}));
 | 
| +  // TODO(rossberg): super does not work yet
 | 
| +  // assertTrue(%IsStrong({m() { super.m() }}));
 | 
| +  // Object literals with constant functions are treated specially,
 | 
| +  // but currently only on the toplevel.
 | 
| +  assertTrue(%IsStrong({f: function(){}}));
 | 
| +  // TODO(rossberg): implement strong object literals with functions
 | 
| +  // assertTrue(%IsStrong(Realm.eval(Realm.current(),
 | 
| +  //                      "'use strong'; ({f: function(){}})")));
 | 
| +})();
 | 
| +
 | 
| +(function WeakArrayLiterals(...args) {
 | 
| +  assertTrue(!%IsStrong(args));
 | 
| +  assertTrue(!%IsStrong([]));
 | 
| +  assertTrue(!%IsStrong([1, 2, 3]));
 | 
| +  Array.prototype = {}
 | 
| +  assertTrue(!%IsStrong([]));
 | 
| +  assertTrue(!%IsStrong([1, 2, 3]));
 | 
| +})();
 | 
| +
 | 
| +(function StrongArrayLiterals(...args) {
 | 
| +  'use strong';
 | 
| +  // TODO(rossberg): implement strong array literals
 | 
| +  // assertTrue(%IsStrong(args));
 | 
| +  // assertTrue(%IsStrong([]));
 | 
| +  // assertTrue(%IsStrong([1, 2, 3]));
 | 
| +  // Array.prototype = {}
 | 
| +  // assertTrue(%IsStrong([]));
 | 
| +  // assertTrue(%IsStrong([1, 2, 3]));
 | 
| +})(0);  // TODO(arv): drop dummy
 | 
| +
 | 
| +(function WeakFunctionLiterals() {
 | 
| +  function f() {}
 | 
| +  assertTrue(!%IsStrong(f));
 | 
| +  assertTrue(!%IsStrong(function(){}));
 | 
| +  assertTrue(!%IsStrong(() => {}));
 | 
| +  assertTrue(!%IsStrong(x => x));
 | 
| +})();
 | 
| +
 | 
| +(function StrongFunctionLiterals(g) {
 | 
| +  'use strong';
 | 
| +  function f() {}
 | 
| +  assertTrue(%IsStrong(f));
 | 
| +  assertTrue(%IsStrong(g));
 | 
| +  assertTrue(%IsStrong(function(){}));
 | 
| +  assertTrue(%IsStrong(() => {}));
 | 
| +  assertTrue(%IsStrong(x => x));
 | 
| +})(function() { 'use strong' });
 | 
| +
 | 
| +(function WeakRegExpLiterals() {
 | 
| +  assertTrue(!%IsStrong(/abc/));
 | 
| +})();
 | 
| +
 | 
| +(function StrongRegExpLiterals() {
 | 
| +  'use strong';
 | 
| +  // TODO(rossberg): implement strong regexp literals
 | 
| +  // assertTrue(%IsStrong(/abc/));
 | 
| +})();
 | 
| 
 |