// Copyright (C) 2015 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
es6id: 9.5.15
description: >
    A Proxy exotic object only accepts a constructor call if target is
    constructor.
info: |
    Proxy ( target, handler )

    7. If IsCallable(target) is true, then
        b. If target has a [[Construct]] internal method, then
            i. Set the [[Construct]] internal method of P as specified in
            9.5.14.
    ...

    12.3.3.1.1 Runtime Semantics: EvaluateNew(constructProduction, arguments)

    8. If IsConstructor (constructor) is false, throw a TypeError exception.
features: [Proxy]
---*/

var p = new Proxy(eval, {});

p(); // the Proxy object is callable

assert.throws(TypeError, function() {
  new p();
});
