2015-03-04 16:30:59 +01:00
|
|
|
// Copyright (c) 2014 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.
|
|
|
|
/*---
|
2017-06-27 23:12:06 +02:00
|
|
|
esid: sec-array.from
|
2015-03-04 16:30:59 +01:00
|
|
|
es6id: 22.1.2.1
|
|
|
|
description: >
|
2015-08-05 20:15:53 +02:00
|
|
|
If this is a constructor, and items doesn't have an @@iterator,
|
|
|
|
returns a new instance of this
|
2018-01-05 18:26:51 +01:00
|
|
|
info: |
|
2015-08-05 20:15:53 +02:00
|
|
|
22.1.2.1 Array.from ( items [ , mapfn [ , thisArg ] ] )
|
|
|
|
|
|
|
|
4. Let usingIterator be GetMethod(items, @@iterator).
|
|
|
|
...
|
|
|
|
6. If usingIterator is not undefined, then
|
|
|
|
...
|
|
|
|
12. If IsConstructor(C) is true, then
|
|
|
|
a. Let A be Construct(C, «len»).
|
|
|
|
13. Else,
|
|
|
|
a. Let A be ArrayCreate(len).
|
|
|
|
...
|
|
|
|
19. Return A.
|
2015-03-04 16:30:59 +01:00
|
|
|
---*/
|
2015-08-05 20:15:53 +02:00
|
|
|
|
|
|
|
var result;
|
|
|
|
|
|
|
|
function MyCollection() {
|
|
|
|
this.args = arguments;
|
2015-03-04 16:30:59 +01:00
|
|
|
}
|
|
|
|
|
2018-02-15 23:40:02 +01:00
|
|
|
result = Array.from.call(MyCollection, {
|
|
|
|
length: 42
|
|
|
|
});
|
2015-08-05 20:15:53 +02:00
|
|
|
|
|
|
|
assert.sameValue(result.args.length, 1);
|
|
|
|
assert.sameValue(result.args[0], 42);
|
|
|
|
assert(result instanceof MyCollection);
|