| // Copyright (C) 2015 André Bargull. All rights reserved. |
| // This code is governed by the BSD license found in the LICENSE file. |
| |
| /*--- |
| info: Compound Assignment Operator evaluates its operands from left to right. |
| description: > |
| The left-hand side expression is evaluated before the right-hand side. |
| Left-hand side expression is MemberExpression: base[prop]. base is the |
| undefined value. |
| Check operator is "x >>>= y". |
| ---*/ |
| |
| function DummyError() { } |
| |
| assert.throws(DummyError, function() { |
| var base = undefined; |
| var prop = function() { |
| throw new DummyError(); |
| }; |
| var expr = function() { |
| $ERROR("right-hand side expression evaluated"); |
| }; |
| |
| base[prop()] >>>= expr(); |
| }); |
| |
| assert.throws(TypeError, function() { |
| var base = undefined; |
| var prop = { |
| toString: function() { |
| $ERROR("property key evaluated"); |
| } |
| }; |
| var expr = function() { |
| $ERROR("right-hand side expression evaluated"); |
| }; |
| |
| base[prop] >>>= expr(); |
| }); |