text: // 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-%typedarray%.prototype.slice
  description: >
    Custom @@species constructor throws if it does not return a compatible object
  info: |
    22.2.3.24 %TypedArray%.prototype.slice ( start, end )
  
    ...
    9. Let A be ? TypedArraySpeciesCreate(O, « count »).
    ...
  
    22.2.4.7 TypedArraySpeciesCreate ( exemplar, argumentList )
  
    ...
    3. Let constructor be ? SpeciesConstructor(exemplar, defaultConstructor).
    4. Return ? TypedArrayCreate(constructor, argumentList).
  
    7.3.20 SpeciesConstructor ( O, defaultConstructor )
  
    ...
    5. Let S be ? Get(C, @@species).
    ...
    7. If IsConstructor(S) is true, return S.
    ...
  
    22.2.4.6 TypedArrayCreate ( constructor, argumentList )
  
    1. Let newTypedArray be ? Construct(constructor, argumentList).
    2. Perform ? ValidateTypedArray(newTypedArray).
    ...
  includes: [testBigIntTypedArray.js]
  features: [BigInt, Symbol.species, TypedArray]
  ---*/
  
  testWithBigIntTypedArrayConstructors(function(TA) {
    var sample = new TA(2);
    var ctor = function() {};
  
    sample.constructor = {};
    sample.constructor[Symbol.species] = ctor;
  
    assert.throws(TypeError, function() {
      sample.slice();
    });
  });
  