// 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.10
description: >
    [[Delete]] (P)

    8. If trap is undefined, then Return target.[[Delete]](P).
flags: [noStrict]
features: [Proxy]
---*/

var target = {
  attr: 1
};
var p = new Proxy(target, {});

assert.sameValue(delete p.attr, true);
assert.sameValue(delete p.notThere, true);
assert.sameValue(
  Object.getOwnPropertyDescriptor(target, "attr"),
  undefined
);

Object.defineProperty(target, "attr", {
  configurable: false,
  enumerable: true,
  value: 1
});

assert.sameValue(delete p.attr, false);
