| load(libdir + "asserts.js"); |
| |
| function g() { |
| } |
| |
| let a = { |
| g: function() { |
| } |
| }; |
| |
| function check(expr) { |
| assertThrowsInstanceOf(Function(expr), ReferenceError); |
| } |
| function checkDestructuring(expr) { |
| assertThrowsInstanceOf(() => Function(expr), SyntaxError); |
| } |
| |
| check("g(...[]) = 1"); |
| check("a.g(...[]) = 1"); |
| check("eval(...['1']) = 1"); |
| check("g(...[]) ++"); |
| check("a.g(...[]) ++"); |
| check("eval(...['1']) ++"); |
| checkDestructuring("[g(...[])] = []"); |
| checkDestructuring("[a.g(...[])] = []"); |
| checkDestructuring("[eval(...['1'])] = []"); |
| checkDestructuring("({y: g(...[])} = 1)"); |
| checkDestructuring("({y: a.g(...[])} = 1)"); |
| checkDestructuring("({y: eval(...['1'])} = 1)"); |