// 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-@@iterator description: Iteration order over exported names info: > Iteration should include all non-ambiguous export names ordered as if an Array of those String values had been sorted using `Array.prototype.sort` using SortCompare as *comparefunction*. 15.2.1.18 Runtime Semantics: GetModuleNamespace [...] 3. If namespace is undefined, then a. Let exportedNames be ? module.GetExportedNames(« »). b. Let unambiguousNames be a new empty List. c. For each name that is an element of exportedNames, i. Let resolution be ? module.ResolveExport(name, « », « »). ii. If resolution is null, throw a SyntaxError exception. iii. If resolution is not "ambiguous", append name to unambiguousNames. d. Let namespace be ModuleNamespaceCreate(module, unambiguousNames). 4. Return namespace. 9.4.6.12 ModuleNamespaceCreate (module, exports) [...] 7. Set M's [[Exports]] internal slot to exports. [...] 26.3.2 [ @@iterator ] ( ) [...] 3. Let exports be the value of N's [[Exports]] internal slot. 4. Return ! CreateListIterator(exports). flags: [module] features: [Symbol.iterator] ---*/ var x; export { x as π }; // u03c0 export { x as az }; export { x as __ }; export { x as za }; export { x as Z }; export { x as \u03bc }; export { x as z }; export { x as zz }; export { x as a }; export { x as A }; export { x as aa }; export { x as λ }; // u03bb export { x as _ }; export { x as $$ }; export { x as $ }; export default null; import * as ns from './values-order.js'; var iter = ns[Symbol.iterator](); var result; result = iter.next(); assert.sameValue(result.done, false, 'not initially done'); assert.sameValue(result.value, '$'); result = iter.next(); assert.sameValue(result.done, false, 'not done following "$"'); assert.sameValue(result.value, '$$'); result = iter.next(); assert.sameValue(result.done, false, 'not done following "$$"'); assert.sameValue(result.value, 'A'); result = iter.next(); assert.sameValue(result.done, false, 'not done following "A"'); assert.sameValue(result.value, 'Z'); result = iter.next(); assert.sameValue(result.done, false, 'not done following "Z"'); assert.sameValue(result.value, '_'); result = iter.next(); assert.sameValue(result.done, false, 'not done following "_"'); assert.sameValue(result.value, '__'); result = iter.next(); assert.sameValue(result.done, false, 'not done following "__"'); assert.sameValue(result.value, 'a'); result = iter.next(); assert.sameValue(result.done, false, 'not done following "a"'); assert.sameValue(result.value, 'aa'); result = iter.next(); assert.sameValue(result.done, false, 'not done following "aa"'); assert.sameValue(result.value, 'az'); result = iter.next(); assert.sameValue(result.done, false, 'not done following "az"'); assert.sameValue(result.value, 'default'); result = iter.next(); assert.sameValue(result.done, false, 'not done following "default"'); assert.sameValue(result.value, 'z'); result = iter.next(); assert.sameValue(result.done, false, 'not done following "z"'); assert.sameValue(result.value, 'za'); result = iter.next(); assert.sameValue(result.done, false, 'not done following "za"'); assert.sameValue(result.value, 'zz'); result = iter.next(); assert.sameValue(result.done, false, 'not done following "zz"'); assert.sameValue(result.value, '\u03bb'); result = iter.next(); assert.sameValue(result.done, false, 'not done following "\u03bb"'); assert.sameValue(result.value, '\u03bc'); result = iter.next(); assert.sameValue(result.done, false, 'not done following "\u03bc"'); assert.sameValue(result.value, '\u03c0'); result = iter.next(); assert.sameValue(result.done, true, 'done following "\u03c0"'); assert.sameValue(result.value, undefined); result = iter.next(); assert.sameValue(result.done, true, 'done following exhaustion'); assert.sameValue(result.value, undefined);