| OLD | NEW |
| (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})); | |
| 21 assertTrue(%IsStrong({__proto__: {}, get a() {}, set b(x) {}})); | |
| 22 assertTrue(%IsStrong({[Date() + ""]: 0, [Symbol()]: 0})); | |
| 23 // TODO(rossberg): super does not work yet | |
| 24 // assertTrue(%IsStrong({m() { super.m() }})); | |
| 25 // Object literals with constant functions are treated specially, | |
| 26 // but currently only on the toplevel. | |
| 27 assertTrue(%IsStrong({f: function(){}})); | |
| 28 // TODO(rossberg): implement strong object literals with functions | |
| 29 // assertTrue(%IsStrong(Realm.eval(Realm.current(), | |
| 30 // "'use strong'; ({f: function(){}})"))); | |
| 31 })(); | |
| 32 | |
| 33 (function WeakArrayLiterals(...args) { | |
| 34 assertTrue(!%IsStrong(args)); | |
| 35 assertTrue(!%IsStrong([])); | |
| 36 assertTrue(!%IsStrong([1, 2, 3])); | |
| 37 Array.prototype = {} | |
| 38 assertTrue(!%IsStrong([])); | |
| 39 assertTrue(!%IsStrong([1, 2, 3])); | |
| 40 })(); | |
| 41 | |
| 42 (function StrongArrayLiterals(...args) { | |
| 43 'use strong'; | |
| 44 // TODO(rossberg): implement strong array literals | |
| 45 // assertTrue(%IsStrong(args)); | |
| 46 // assertTrue(%IsStrong([])); | |
| 47 // assertTrue(%IsStrong([1, 2, 3])); | |
| 48 // Array.prototype = {} | |
| 49 // assertTrue(%IsStrong([])); | |
| 50 // assertTrue(%IsStrong([1, 2, 3])); | |
| 51 })(0); // TODO(arv): drop dummy | |
| 52 | |
| 53 (function WeakFunctionLiterals() { | |
| 54 function f() {} | |
| 55 assertTrue(!%IsStrong(f)); | |
| 56 assertTrue(!%IsStrong(function(){})); | |
| 57 assertTrue(!%IsStrong(() => {})); | |
| 58 assertTrue(!%IsStrong(x => x)); | |
| 59 })(); | |
| 60 | |
| 61 (function StrongFunctionLiterals(g) { | |
| 62 'use strong'; | |
| 63 function f() {} | |
| 64 assertTrue(%IsStrong(f)); | |
| 65 assertTrue(%IsStrong(g)); | |
| 66 assertTrue(%IsStrong(function(){})); | |
| 67 assertTrue(%IsStrong(() => {})); | |
| 68 assertTrue(%IsStrong(x => x)); | |
| 69 })(function() { 'use strong' }); | |
| 70 | |
| 71 (function WeakRegExpLiterals() { | |
| 72 assertTrue(!%IsStrong(/abc/)); | |
| 73 })(); | |
| 74 | |
| 75 (function StrongRegExpLiterals() { | |
| 76 'use strong'; | |
| 77 // TODO(rossberg): implement strong regexp literals | |
| 78 // assertTrue(%IsStrong(/abc/)); | |
| 79 })(); | |
| OLD | NEW |