| // Copyright (C) 2020 ExE Boss. All rights reserved. |
| // This code is governed by the BSD license found in the LICENSE file. |
| /*--- |
| esid: sec-createbuiltinfunction |
| description: Promise.all resolve element function property order |
| info: | |
| Set order: "length", "name" |
| ---*/ |
| |
| var resolveElementFunction; |
| var thenable = { |
| then: function(fulfill) { |
| resolveElementFunction = fulfill; |
| } |
| }; |
| |
| function NotPromise(executor) { |
| executor(function() {}, function() {}); |
| } |
| NotPromise.resolve = function(v) { |
| return v; |
| }; |
| Promise.all.call(NotPromise, [thenable]); |
| |
| var propNames = Object.getOwnPropertyNames(resolveElementFunction); |
| var lengthIndex = propNames.indexOf("length"); |
| var nameIndex = propNames.indexOf("name"); |
| |
| assert(lengthIndex >= 0 && nameIndex === lengthIndex + 1, |
| "The `length` property comes before the `name` property on built-in functions"); |