// Copyright (c) 2012 Ecma International.  All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
info: |
    This test is actually testing the [[Delete]] internal method (8.12.8). Since the
    language provides no way to directly exercise [[Delete]], the tests are placed here.
esid: sec-delete-operator-runtime-semantics-evaluation
description: >
    delete operator returns true on deleting arguments
    properties(arguments.callee)
flags: [noStrict]
---*/

(function() {
  function foo(a, b) {
    return delete arguments.callee;
  }
  var d = delete arguments.callee;

  assert.sameValue(d, true, 'd');
  assert.sameValue(arguments.callee, undefined, 'arguments.callee');
})();
