// Copyright (C) 2020 Leo Balter. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
esid: sec-new-operator
description: >
  The constructExpr is referenced before arguments in the same EvaluateNew evaluation.
  Function wrap-up to use the same function level binding ref.
info: |
  NewExpression : new NewExpression
    1. Return ? EvaluateNew(NewExpression, empty).
  MemberExpression : new MemberExpression Arguments
    1. Return ? EvaluateNew(MemberExpression, Arguments).

  Runtime Semantics: EvaluateNew

  3. Let ref be the result of evaluating constructExpr.
  4. Let constructor be ? GetValue(ref).
  5. If arguments is empty, let argList be a new empty List.
  6. Else,
    a. Let argList be ? ArgumentListEvaluation of arguments.
  7. If IsConstructor(constructor) is false, throw a TypeError exception.
  8. Return ? Construct(constructor, argList). 
---*/

function fn() {
  var x = function() {
    this.foo = 42;
  };

  var result = new x(x = 1);

  assert.sameValue(x, 1);
  assert.sameValue(result.foo, 42);
}

fn();
