text: // 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.3.1.1
  esid: sec-weakmap-iterable
  description: >
    Throws a TypeError if iterable itens are not Objects.
  info: |
    WeakMap ( [ iterable ] )
  
    ...
    9. Repeat
      ...
      d. Let nextItem be IteratorValue(next).
      e. ReturnIfAbrupt(nextItem).
      f. If Type(nextItem) is not Object,
        i. Let error be Completion{[[type]]: throw, [[value]]: a newly created
        TypeError object, [[target]]:empty}.
        ii. Return IteratorClose(iter, error).
  features: [Symbol]
  ---*/
  
  assert.throws(TypeError, function() {
    new WeakMap([1, 1]);
  });
  
  assert.throws(TypeError, function() {
    new WeakMap(['', 1]);
  });
  
  assert.throws(TypeError, function() {
    new WeakMap([true, 1]);
  });
  
  assert.throws(TypeError, function() {
    new WeakMap([null, 1]);
  });
  
  assert.throws(TypeError, function() {
    new WeakMap([Symbol('a'), 1]);
  });
  
  assert.throws(TypeError, function() {
    new WeakMap([undefined, 1]);
  });
  
  assert.throws(TypeError, function() {
    new WeakMap([
      ['a', 1], 2
    ]);
  });
  