From d9732d83233b8256a21e2fc102f84cb22c0f914c Mon Sep 17 00:00:00 2001
From: littledan <microdan@gmail.com>
Date: Wed, 28 Dec 2016 19:55:25 +0100
Subject: [PATCH] Test for new TypedArray iterator detach logic (#784)

Tests new logic in https://github.com/tc39/ecma262/pull/724
---
 .../next/detach-typedarray-in-progress.js     | 25 +++++++++++++++++++
 1 file changed, 25 insertions(+)
 create mode 100644 test/built-ins/ArrayIteratorPrototype/next/detach-typedarray-in-progress.js

diff --git a/test/built-ins/ArrayIteratorPrototype/next/detach-typedarray-in-progress.js b/test/built-ins/ArrayIteratorPrototype/next/detach-typedarray-in-progress.js
new file mode 100644
index 0000000000..2f04de39f5
--- /dev/null
+++ b/test/built-ins/ArrayIteratorPrototype/next/detach-typedarray-in-progress.js
@@ -0,0 +1,25 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-%arrayiteratorprototype%.next
+description: If the underlying TypedArray is detached during iteration, throw
+info: >
+  %ArrayIteratorPrototype%.next( )
+
+  ...
+  8. If _a_ has a [[TypedArrayName]] internal slot, then
+    a. If IsDetachedBuffer(_a_.[[ViewedArrayBuffer]]) is *true*, throw a *TypeError* exception.
+includes: [testTypedArray.js, detachArrayBuffer.js]
+---*/
+
+testWithTypedArrayConstructors(TA => {
+  var typedArray = new TA(5);
+  var i = 0;
+  assert.throws(TypeError, () => {
+    for (let key of typedArray.keys()) {
+      $.detachArrayBuffer(typedArray.buffer);
+      i++;
+    }
+  });
+  assert.sameValue(i, 1);
+});
-- 
GitLab