// Copyright (C) 2015 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
es6id: 23.1.3.5
description: >
  Throws a TypeError if `this` is a WeakMap object.
info: |
  Map.prototype.forEach ( callbackfn [ , thisArg ] )

  ...
  3. If M does not have a [[MapData]] internal slot, throw a TypeError
  exception.
  ...
features: [WeakMap]
---*/

assert.throws(TypeError, function() {
  Map.prototype.forEach.call(new WeakMap(), function() {});
});

assert.throws(TypeError, function() {
  var m = new Map();
  m.forEach.call(new WeakMap(), function() {});
});
