Implement array.entries() (#1031) · TypeScriptToLua/TypeScriptToLua@ffde390 · GitHub
Skip to content

Commit ffde390

Browse files
authored
Implement array.entries() (#1031)
* Implement array.entries * Added extra test for indirect use of array.entries() * Added destructuring test for array.entries * Fix prettier
1 parent bd17ed7 commit ffde390

4 files changed

Lines changed: 46 additions & 0 deletions

File tree

‎src/LuaLib.ts‎

Lines changed: 1 addition & 0 deletions

‎src/lualib/ArrayEntries.ts‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// https://262.ecma-international.org/10.0/#sec-array.prototype.entries
2+
function __TS__ArrayEntries<T>(this: void, array: T[]): IterableIterator<[number, T]> {
3+
let key = 0;
4+
return {
5+
[Symbol.iterator](): IterableIterator<[number, T]> {
6+
return this;
7+
},
8+
next(): IteratorResult<[number, T]> {
9+
const result = { done: array[key] === undefined, value: [key, array[key]] as [number, T] };
10+
key++;
11+
return result;
12+
},
13+
};
14+
}

‎src/transformation/builtins/array.ts‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ export function transformArrayPrototypeCall(
3636
switch (expressionName) {
3737
case "concat":
3838
return transformLuaLibFunction(context, LuaLibFeature.ArrayConcat, node, caller, ...params);
39+
case "entries":
40+
return transformLuaLibFunction(context, LuaLibFeature.ArrayEntries, node, caller);
3941
case "push":
4042
return transformLuaLibFunction(context, LuaLibFeature.ArrayPush, node, caller, ...params);
4143
case "reverse":

‎test/unit/builtins/array.spec.ts‎

Lines changed: 29 additions & 0 deletions

0 commit comments

Comments
 (0)