// Copyright (C) 2015 André Bargull. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
info: Operator --x evaluates its reference expression once.
description: >
    The operand expression is evaluated exactly once. Operand expression is
    MemberExpression: base[prop]. base is the undefined value.
---*/

function DummyError() { }

assert.throws(DummyError, function() {
  var base = undefined;
  var prop = function() {
    throw new DummyError();
  };

  --base[prop()];
});

assert.throws(TypeError, function() {
  var base = undefined;
  var prop = {
    toString: function() {
      $ERROR("property key evaluated");
    }
  };

  --base[prop];
});
