// Copyright 2015 the V8 project authors. All rights reserved.// Use of this source code is governed by a BSD-style license that can be// found in the LICENSE file.// Test the ES2015 @@species feature'use strict';letTypedArray=Uint8Array.__proto__;// The @@species property exists on the right objects and has the right valuesletclassesWithSpecies=[RegExp,Array,TypedArray,ArrayBuffer,Map,Set,Promise];letclassesWithoutSpecies=[Object,Function,String,Number,Symbol,WeakMap,WeakSet];for(letconstructorofclassesWithSpecies){assertEquals(constructor,constructor[Symbol.species]);assertThrows(function(){constructor[Symbol.species]=undefined},TypeError);letdescriptor=Object.getOwnPropertyDescriptor(constructor,Symbol.species);assertTrue(descriptor.configurable);assertFalse(descriptor.enumerable);assertEquals(undefined,descriptor.writable);assertEquals(undefined,descriptor.set);assertEquals('function',typeofdescriptor.get);}// @@species is defined with distinct gettersassertEquals(classesWithSpecies.length,newSet(classesWithSpecies.map(constructor=>Object.getOwnPropertyDescriptor(constructor,Symbol.species).get)).size);for(letconstructorofclassesWithoutSpecies)assertEquals(undefined,constructor[Symbol.species]);