typescript-to-lua 0.41.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +46 -0
- package/dist/CompilerOptions.d.ts +4 -3
- package/dist/LuaAST.js +4 -4
- package/dist/LuaLib.d.ts +7 -0
- package/dist/LuaLib.js +41 -5
- package/dist/LuaPrinter.d.ts +6 -2
- package/dist/LuaPrinter.js +25 -16
- package/dist/cli/diagnostics.js +2 -2
- package/dist/cli/report.js +1 -1
- package/dist/cli/tsconfig.js +4 -4
- package/dist/lualib/ArrayJoin.lua +2 -4
- package/dist/lualib/Await.lua +59 -0
- package/dist/lualib/Iterator.lua +1 -5
- package/dist/lualib/NumberToString.lua +4 -8
- package/dist/lualib/OptionalMethodCall.lua +3 -1
- package/dist/lualib/ParseInt.lua +1 -3
- package/dist/lualib/Promise.lua +172 -0
- package/dist/lualib/PromiseAll.lua +44 -0
- package/dist/lualib/PromiseAllSettled.lua +48 -0
- package/dist/lualib/PromiseAny.lua +41 -0
- package/dist/lualib/PromiseRace.lua +28 -0
- package/dist/lualib/SourceMapTraceBack.lua +18 -8
- package/dist/lualib/StringConcat.lua +1 -1
- package/dist/lualib/StringPadEnd.lua +7 -11
- package/dist/lualib/StringPadStart.lua +8 -12
- package/dist/lualib/StringReplace.lua +8 -13
- package/dist/lualib/StringReplaceAll.lua +35 -0
- package/dist/lualib/StringSubstring.lua +1 -1
- package/dist/lualib/lualib_bundle.lua +660 -239
- package/dist/transformation/builtins/array.js +29 -29
- package/dist/transformation/builtins/console.js +2 -2
- package/dist/transformation/builtins/function.js +9 -9
- package/dist/transformation/builtins/global.js +8 -8
- package/dist/transformation/builtins/index.js +35 -32
- package/dist/transformation/builtins/math.js +4 -4
- package/dist/transformation/builtins/number.js +7 -7
- package/dist/transformation/builtins/object.js +11 -11
- package/dist/transformation/builtins/promise.d.ts +7 -0
- package/dist/transformation/builtins/promise.js +46 -0
- package/dist/transformation/builtins/string.js +32 -30
- package/dist/transformation/builtins/symbol.js +3 -3
- package/dist/transformation/context/context.js +5 -5
- package/dist/transformation/index.js +1 -1
- package/dist/transformation/utils/annotations.d.ts +1 -4
- package/dist/transformation/utils/annotations.js +1 -32
- package/dist/transformation/utils/assignment-validation.js +8 -7
- package/dist/transformation/utils/diagnostics.d.ts +3 -0
- package/dist/transformation/utils/diagnostics.js +6 -5
- package/dist/transformation/utils/export.js +4 -4
- package/dist/transformation/utils/function-context.js +19 -13
- package/dist/transformation/utils/lua-ast.js +18 -19
- package/dist/transformation/utils/lualib.js +1 -1
- package/dist/transformation/utils/safe-names.js +5 -5
- package/dist/transformation/utils/scope.d.ts +6 -0
- package/dist/transformation/utils/scope.js +70 -40
- package/dist/transformation/utils/symbols.js +6 -6
- package/dist/transformation/utils/transform.js +3 -3
- package/dist/transformation/utils/typescript/nodes.d.ts +2 -0
- package/dist/transformation/utils/typescript/nodes.js +21 -1
- package/dist/transformation/visitors/access.js +25 -19
- package/dist/transformation/visitors/async-await.d.ts +6 -0
- package/dist/transformation/visitors/async-await.js +38 -0
- package/dist/transformation/visitors/binary-expression/assignments.js +32 -31
- package/dist/transformation/visitors/binary-expression/bit.js +4 -4
- package/dist/transformation/visitors/binary-expression/compound.js +18 -18
- package/dist/transformation/visitors/binary-expression/destructuring-assignments.js +17 -17
- package/dist/transformation/visitors/binary-expression/index.js +22 -20
- package/dist/transformation/visitors/block.js +6 -6
- package/dist/transformation/visitors/break-continue.js +4 -9
- package/dist/transformation/visitors/call.js +38 -38
- package/dist/transformation/visitors/class/decorators.js +3 -3
- package/dist/transformation/visitors/class/index.js +34 -34
- package/dist/transformation/visitors/class/members/accessors.js +6 -6
- package/dist/transformation/visitors/class/members/constructor.js +7 -7
- package/dist/transformation/visitors/class/members/fields.js +6 -6
- package/dist/transformation/visitors/class/members/method.js +6 -6
- package/dist/transformation/visitors/class/new.js +13 -13
- package/dist/transformation/visitors/class/setup.js +11 -11
- package/dist/transformation/visitors/class/utils.js +2 -2
- package/dist/transformation/visitors/conditional.js +6 -6
- package/dist/transformation/visitors/delete.js +4 -4
- package/dist/transformation/visitors/enum.js +8 -8
- package/dist/transformation/visitors/errors.js +30 -31
- package/dist/transformation/visitors/expression-statement.js +10 -6
- package/dist/transformation/visitors/function.js +33 -21
- package/dist/transformation/visitors/identifier.js +25 -19
- package/dist/transformation/visitors/index.js +4 -2
- package/dist/transformation/visitors/language-extensions/iterable.js +7 -7
- package/dist/transformation/visitors/language-extensions/multi.d.ts +2 -1
- package/dist/transformation/visitors/language-extensions/multi.js +8 -4
- package/dist/transformation/visitors/language-extensions/operators.js +6 -6
- package/dist/transformation/visitors/language-extensions/range.js +6 -6
- package/dist/transformation/visitors/language-extensions/table.js +5 -5
- package/dist/transformation/visitors/literal.d.ts +1 -2
- package/dist/transformation/visitors/literal.js +19 -42
- package/dist/transformation/visitors/loops/do-while.js +2 -2
- package/dist/transformation/visitors/loops/for-in.js +4 -4
- package/dist/transformation/visitors/loops/for-of.js +13 -13
- package/dist/transformation/visitors/loops/for.js +3 -3
- package/dist/transformation/visitors/loops/utils.js +9 -9
- package/dist/transformation/visitors/modules/export.js +13 -13
- package/dist/transformation/visitors/modules/import.js +10 -10
- package/dist/transformation/visitors/namespace.js +13 -13
- package/dist/transformation/visitors/return.d.ts +1 -0
- package/dist/transformation/visitors/return.js +41 -49
- package/dist/transformation/visitors/sourceFile.js +8 -8
- package/dist/transformation/visitors/spread.js +16 -13
- package/dist/transformation/visitors/switch.js +132 -30
- package/dist/transformation/visitors/template.js +5 -5
- package/dist/transformation/visitors/typeof.js +2 -2
- package/dist/transformation/visitors/typescript.js +1 -1
- package/dist/transformation/visitors/unary-expression.js +9 -9
- package/dist/transformation/visitors/variable-declaration.js +29 -30
- package/dist/transformation/visitors/void.d.ts +6 -0
- package/dist/transformation/visitors/void.js +23 -0
- package/dist/transpilation/bundle.d.ts +3 -0
- package/dist/transpilation/bundle.js +56 -13
- package/dist/transpilation/diagnostics.js +3 -3
- package/dist/transpilation/index.js +2 -2
- package/dist/transpilation/output-collector.js +2 -2
- package/dist/transpilation/plugins.js +1 -1
- package/dist/transpilation/resolve.js +28 -14
- package/dist/transpilation/transformers.d.ts +1 -0
- package/dist/transpilation/transformers.js +61 -25
- package/dist/transpilation/transpile.js +7 -7
- package/dist/transpilation/transpiler.js +13 -11
- package/dist/transpilation/utils.js +3 -2
- package/dist/tstl.js +9 -9
- package/dist/utils.js +2 -2
- package/package.json +16 -13
- package/dist/transformation/visitors/jsx/jsx.d.ts +0 -9
- package/dist/transformation/visitors/jsx/jsx.js +0 -237
- package/dist/transformation/visitors/jsx/xhtml.d.ts +0 -3
- package/dist/transformation/visitors/jsx/xhtml.js +0 -260
|
@@ -1,32 +1,43 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.transformThrowStatement = exports.transformTryStatement = void 0;
|
|
4
|
+
const __1 = require("../..");
|
|
4
5
|
const lua = require("../../LuaAST");
|
|
5
|
-
const
|
|
6
|
+
const diagnostics_1 = require("../utils/diagnostics");
|
|
6
7
|
const lua_ast_1 = require("../utils/lua-ast");
|
|
7
8
|
const scope_1 = require("../utils/scope");
|
|
9
|
+
const typescript_1 = require("../utils/typescript");
|
|
8
10
|
const block_1 = require("./block");
|
|
9
11
|
const identifier_1 = require("./identifier");
|
|
10
12
|
const multi_1 = require("./language-extensions/multi");
|
|
13
|
+
const return_1 = require("./return");
|
|
11
14
|
const transformTryStatement = (statement, context) => {
|
|
12
|
-
const [tryBlock, tryScope] = block_1.transformScopeBlock(context, statement.tryBlock, scope_1.ScopeType.Try);
|
|
15
|
+
const [tryBlock, tryScope] = (0, block_1.transformScopeBlock)(context, statement.tryBlock, scope_1.ScopeType.Try);
|
|
16
|
+
if (context.options.luaTarget === __1.LuaTarget.Lua51 && (0, typescript_1.isInAsyncFunction)(statement)) {
|
|
17
|
+
context.diagnostics.push((0, diagnostics_1.unsupportedForTarget)(statement, "try/catch inside async functions", __1.LuaTarget.Lua51));
|
|
18
|
+
return tryBlock.statements;
|
|
19
|
+
}
|
|
20
|
+
if (context.options.luaTarget === __1.LuaTarget.Lua51 && (0, typescript_1.isInGeneratorFunction)(statement)) {
|
|
21
|
+
context.diagnostics.push((0, diagnostics_1.unsupportedForTarget)(statement, "try/catch inside generator functions", __1.LuaTarget.Lua51));
|
|
22
|
+
return tryBlock.statements;
|
|
23
|
+
}
|
|
13
24
|
const tryResultIdentifier = lua.createIdentifier("____try");
|
|
14
25
|
const returnValueIdentifier = lua.createIdentifier("____returnValue");
|
|
15
26
|
const result = [];
|
|
16
|
-
|
|
27
|
+
const returnedIdentifier = lua.createIdentifier("____hasReturned");
|
|
17
28
|
let returnCondition;
|
|
18
29
|
const pCall = lua.createIdentifier("pcall");
|
|
19
30
|
const tryCall = lua.createCallExpression(pCall, [lua.createFunctionExpression(tryBlock)]);
|
|
20
31
|
if (statement.catchClause && statement.catchClause.block.statements.length > 0) {
|
|
21
32
|
// try with catch
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
33
|
+
const [catchBlock, catchScope] = (0, block_1.transformScopeBlock)(context, statement.catchClause.block, scope_1.ScopeType.Catch);
|
|
34
|
+
const catchParameter = statement.catchClause.variableDeclaration
|
|
35
|
+
? (0, identifier_1.transformIdentifier)(context, statement.catchClause.variableDeclaration.name)
|
|
36
|
+
: undefined;
|
|
37
|
+
const catchParameters = () => (catchParameter ? [lua.cloneIdentifier(catchParameter)] : []);
|
|
38
|
+
const catchIdentifier = lua.createIdentifier("____catch");
|
|
39
|
+
const catchFunction = lua.createFunctionExpression(catchBlock, catchParameters());
|
|
40
|
+
result.push(lua.createVariableDeclarationStatement(catchIdentifier, catchFunction));
|
|
30
41
|
const tryReturnIdentifiers = [tryResultIdentifier]; // ____try
|
|
31
42
|
if (returnedIdentifier) {
|
|
32
43
|
tryReturnIdentifiers.push(returnedIdentifier); // ____returned or catch variable
|
|
@@ -36,18 +47,15 @@ const transformTryStatement = (statement, context) => {
|
|
|
36
47
|
}
|
|
37
48
|
}
|
|
38
49
|
result.push(lua.createVariableDeclarationStatement(tryReturnIdentifiers, tryCall));
|
|
39
|
-
if
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
const catchAssign = lua.createAssignmentStatement([lua.cloneIdentifier(returnedIdentifier), lua.cloneIdentifier(returnValueIdentifier)], catchCall);
|
|
43
|
-
catchBlock = lua.createBlock([catchAssign]);
|
|
44
|
-
}
|
|
50
|
+
// Wrap catch in function if try or catch has return
|
|
51
|
+
const catchCall = lua.createCallExpression(catchIdentifier, [lua.cloneIdentifier(returnedIdentifier)]);
|
|
52
|
+
const catchAssign = lua.createAssignmentStatement([lua.cloneIdentifier(returnedIdentifier), lua.cloneIdentifier(returnValueIdentifier)], catchCall);
|
|
45
53
|
const notTryCondition = lua.createUnaryExpression(tryResultIdentifier, lua.SyntaxKind.NotOperator);
|
|
46
|
-
result.push(lua.createIfStatement(notTryCondition,
|
|
54
|
+
result.push(lua.createIfStatement(notTryCondition, lua.createBlock([catchAssign])));
|
|
47
55
|
}
|
|
48
56
|
else if (tryScope.functionReturned) {
|
|
49
57
|
// try with return, but no catch
|
|
50
|
-
returnedIdentifier = lua.createIdentifier("____returned");
|
|
58
|
+
// returnedIdentifier = lua.createIdentifier("____returned");
|
|
51
59
|
const returnedVariables = [tryResultIdentifier, returnedIdentifier, returnValueIdentifier];
|
|
52
60
|
result.push(lua.createVariableDeclarationStatement(returnedVariables, tryCall));
|
|
53
61
|
// change return condition from '____returned' to '____try and ____returned'
|
|
@@ -61,23 +69,14 @@ const transformTryStatement = (statement, context) => {
|
|
|
61
69
|
result.push(...context.transformStatements(statement.finallyBlock));
|
|
62
70
|
}
|
|
63
71
|
if (returnCondition && returnedIdentifier) {
|
|
64
|
-
// With catch clause:
|
|
65
|
-
// if ____returned then return ____returnValue end
|
|
66
|
-
// No catch clause:
|
|
67
|
-
// if ____try and ____returned then return ____returnValue end
|
|
68
72
|
const returnValues = [];
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
// Nested try/catch needs to prefix a 'true' return value
|
|
72
|
-
returnValues.push(lua.createBooleanLiteral(true));
|
|
73
|
-
}
|
|
74
|
-
if (annotations_1.isInTupleReturnFunction(context, statement) || multi_1.isInMultiReturnFunction(context, statement)) {
|
|
75
|
-
returnValues.push(lua_ast_1.createUnpackCall(context, lua.cloneIdentifier(returnValueIdentifier)));
|
|
73
|
+
if ((0, multi_1.isInMultiReturnFunction)(context, statement)) {
|
|
74
|
+
returnValues.push((0, lua_ast_1.createUnpackCall)(context, lua.cloneIdentifier(returnValueIdentifier)));
|
|
76
75
|
}
|
|
77
76
|
else {
|
|
78
77
|
returnValues.push(lua.cloneIdentifier(returnValueIdentifier));
|
|
79
78
|
}
|
|
80
|
-
const returnStatement =
|
|
79
|
+
const returnStatement = (0, return_1.createReturnStatement)(context, returnValues, statement);
|
|
81
80
|
const ifReturnedStatement = lua.createIfStatement(returnCondition, lua.createBlock([returnStatement]));
|
|
82
81
|
result.push(ifReturnedStatement);
|
|
83
82
|
}
|
|
@@ -6,19 +6,23 @@ const lua = require("../../LuaAST");
|
|
|
6
6
|
const binary_expression_1 = require("./binary-expression");
|
|
7
7
|
const table_1 = require("./language-extensions/table");
|
|
8
8
|
const unary_expression_1 = require("./unary-expression");
|
|
9
|
+
const void_1 = require("./void");
|
|
9
10
|
const transformExpressionStatement = (node, context) => {
|
|
10
11
|
const expression = node.expression;
|
|
11
|
-
if (ts.isCallExpression(expression) && table_1.isTableDeleteCall(context, expression)) {
|
|
12
|
-
return table_1.transformTableDeleteExpression(context, expression);
|
|
12
|
+
if (ts.isCallExpression(expression) && (0, table_1.isTableDeleteCall)(context, expression)) {
|
|
13
|
+
return (0, table_1.transformTableDeleteExpression)(context, expression);
|
|
13
14
|
}
|
|
14
|
-
if (ts.isCallExpression(expression) && table_1.isTableSetCall(context, expression)) {
|
|
15
|
-
return table_1.transformTableSetExpression(context, expression);
|
|
15
|
+
if (ts.isCallExpression(expression) && (0, table_1.isTableSetCall)(context, expression)) {
|
|
16
|
+
return (0, table_1.transformTableSetExpression)(context, expression);
|
|
16
17
|
}
|
|
17
|
-
|
|
18
|
+
if (ts.isVoidExpression(expression)) {
|
|
19
|
+
return (0, void_1.transformVoidExpressionStatement)(expression, context);
|
|
20
|
+
}
|
|
21
|
+
const unaryExpressionResult = (0, unary_expression_1.transformUnaryExpressionStatement)(context, node);
|
|
18
22
|
if (unaryExpressionResult) {
|
|
19
23
|
return unaryExpressionResult;
|
|
20
24
|
}
|
|
21
|
-
const binaryExpressionResult = binary_expression_1.transformBinaryExpressionStatement(context, node);
|
|
25
|
+
const binaryExpressionResult = (0, binary_expression_1.transformBinaryExpressionStatement)(context, node);
|
|
22
26
|
if (binaryExpressionResult) {
|
|
23
27
|
return binaryExpressionResult;
|
|
24
28
|
}
|
|
@@ -4,11 +4,14 @@ exports.transformYieldExpression = exports.transformFunctionDeclaration = export
|
|
|
4
4
|
const ts = require("typescript");
|
|
5
5
|
const lua = require("../../LuaAST");
|
|
6
6
|
const utils_1 = require("../../utils");
|
|
7
|
+
const annotations_1 = require("../utils/annotations");
|
|
8
|
+
const diagnostics_1 = require("../utils/diagnostics");
|
|
7
9
|
const export_1 = require("../utils/export");
|
|
8
10
|
const function_context_1 = require("../utils/function-context");
|
|
9
11
|
const lua_ast_1 = require("../utils/lua-ast");
|
|
10
12
|
const lualib_1 = require("../utils/lualib");
|
|
11
13
|
const scope_1 = require("../utils/scope");
|
|
14
|
+
const async_await_1 = require("./async-await");
|
|
12
15
|
const identifier_1 = require("./identifier");
|
|
13
16
|
const return_1 = require("./return");
|
|
14
17
|
const variable_declaration_1 = require("./variable-declaration");
|
|
@@ -31,10 +34,10 @@ function isRestParameterReferenced(identifier, scope) {
|
|
|
31
34
|
}
|
|
32
35
|
function transformFunctionBodyContent(context, body) {
|
|
33
36
|
if (!ts.isBlock(body)) {
|
|
34
|
-
const returnStatement = return_1.transformExpressionBodyToReturnStatement(context, body);
|
|
37
|
+
const returnStatement = (0, return_1.transformExpressionBodyToReturnStatement)(context, body);
|
|
35
38
|
return [returnStatement];
|
|
36
39
|
}
|
|
37
|
-
const bodyStatements = scope_1.performHoisting(context, context.transformStatements(body.statements));
|
|
40
|
+
const bodyStatements = (0, scope_1.performHoisting)(context, context.transformStatements(body.statements));
|
|
38
41
|
return bodyStatements;
|
|
39
42
|
}
|
|
40
43
|
exports.transformFunctionBodyContent = transformFunctionBodyContent;
|
|
@@ -51,16 +54,16 @@ function transformFunctionBodyHeader(context, bodyScope, parameters, spreadIdent
|
|
|
51
54
|
headerStatements.push(transformParameterDefaultValueDeclaration(context, identifier, declaration.initializer));
|
|
52
55
|
}
|
|
53
56
|
// Binding pattern
|
|
54
|
-
bindingPatternDeclarations.push(...variable_declaration_1.transformBindingPattern(context, declaration.name, identifier));
|
|
57
|
+
bindingPatternDeclarations.push(...(0, variable_declaration_1.transformBindingPattern)(context, declaration.name, identifier));
|
|
55
58
|
}
|
|
56
59
|
else if (declaration.initializer !== undefined) {
|
|
57
60
|
// Default parameter
|
|
58
|
-
headerStatements.push(transformParameterDefaultValueDeclaration(context, identifier_1.transformIdentifier(context, declaration.name), declaration.initializer));
|
|
61
|
+
headerStatements.push(transformParameterDefaultValueDeclaration(context, (0, identifier_1.transformIdentifier)(context, declaration.name), declaration.initializer));
|
|
59
62
|
}
|
|
60
63
|
}
|
|
61
64
|
// Push spread operator here
|
|
62
65
|
if (spreadIdentifier && isRestParameterReferenced(spreadIdentifier, bodyScope)) {
|
|
63
|
-
const spreadTable = lua_ast_1.wrapInTable(lua.createDotsLiteral());
|
|
66
|
+
const spreadTable = (0, lua_ast_1.wrapInTable)(lua.createDotsLiteral());
|
|
64
67
|
headerStatements.push(lua.createVariableDeclarationStatement(spreadIdentifier, spreadTable));
|
|
65
68
|
}
|
|
66
69
|
// Binding pattern statements need to be after spread table is declared
|
|
@@ -69,11 +72,14 @@ function transformFunctionBodyHeader(context, bodyScope, parameters, spreadIdent
|
|
|
69
72
|
}
|
|
70
73
|
exports.transformFunctionBodyHeader = transformFunctionBodyHeader;
|
|
71
74
|
function transformFunctionBody(context, parameters, body, spreadIdentifier, node) {
|
|
72
|
-
const scope = scope_1.pushScope(context, scope_1.ScopeType.Function);
|
|
75
|
+
const scope = (0, scope_1.pushScope)(context, scope_1.ScopeType.Function);
|
|
73
76
|
scope.node = node;
|
|
74
|
-
|
|
77
|
+
let bodyStatements = transformFunctionBodyContent(context, body);
|
|
78
|
+
if (node && (0, async_await_1.isAsyncFunction)(node)) {
|
|
79
|
+
bodyStatements = (0, async_await_1.wrapInAsyncAwaiter)(context, bodyStatements);
|
|
80
|
+
}
|
|
75
81
|
const headerStatements = transformFunctionBodyHeader(context, scope, parameters, spreadIdentifier);
|
|
76
|
-
scope_1.popScope(context);
|
|
82
|
+
(0, scope_1.popScope)(context);
|
|
77
83
|
return [[...headerStatements, ...bodyStatements], scope];
|
|
78
84
|
}
|
|
79
85
|
exports.transformFunctionBody = transformFunctionBody;
|
|
@@ -95,7 +101,7 @@ function transformParameters(context, parameters, functionContext) {
|
|
|
95
101
|
// See transformFunctionBody for how these values are destructured
|
|
96
102
|
const paramName = ts.isObjectBindingPattern(param.name) || ts.isArrayBindingPattern(param.name)
|
|
97
103
|
? lua.createIdentifier(`____bindingPattern${identifierIndex++}`)
|
|
98
|
-
: identifier_1.transformIdentifier(context, param.name);
|
|
104
|
+
: (0, identifier_1.transformIdentifier)(context, param.name);
|
|
99
105
|
// This parameter is a spread parameter (...param)
|
|
100
106
|
if (!param.dotDotDotToken) {
|
|
101
107
|
paramNames.push(paramName);
|
|
@@ -110,10 +116,10 @@ function transformParameters(context, parameters, functionContext) {
|
|
|
110
116
|
}
|
|
111
117
|
exports.transformParameters = transformParameters;
|
|
112
118
|
function transformFunctionToExpression(context, node) {
|
|
113
|
-
utils_1.assert(node.body);
|
|
119
|
+
(0, utils_1.assert)(node.body);
|
|
114
120
|
const type = context.checker.getTypeAtLocation(node);
|
|
115
121
|
let functionContext;
|
|
116
|
-
if (function_context_1.getFunctionContextType(context, type) !== function_context_1.ContextType.Void) {
|
|
122
|
+
if ((0, function_context_1.getFunctionContextType)(context, type) !== function_context_1.ContextType.Void) {
|
|
117
123
|
if (ts.isArrowFunction(node)) {
|
|
118
124
|
// dummy context for arrow functions with parameters
|
|
119
125
|
if (node.parameters.length > 0) {
|
|
@@ -122,7 +128,7 @@ function transformFunctionToExpression(context, node) {
|
|
|
122
128
|
}
|
|
123
129
|
else {
|
|
124
130
|
// self context
|
|
125
|
-
functionContext = lua_ast_1.createSelfIdentifier();
|
|
131
|
+
functionContext = (0, lua_ast_1.createSelfIdentifier)();
|
|
126
132
|
}
|
|
127
133
|
}
|
|
128
134
|
let flags = lua.FunctionExpressionFlags.None;
|
|
@@ -136,7 +142,7 @@ function transformFunctionToExpression(context, node) {
|
|
|
136
142
|
const functionExpression = lua.createFunctionExpression(lua.createBlock(transformedBody), paramNames, dotsLiteral, flags, node);
|
|
137
143
|
return [
|
|
138
144
|
node.asteriskToken
|
|
139
|
-
? lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.Generator, undefined, functionExpression)
|
|
145
|
+
? (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.Generator, undefined, functionExpression)
|
|
140
146
|
: functionExpression,
|
|
141
147
|
functionScope,
|
|
142
148
|
];
|
|
@@ -147,6 +153,9 @@ function transformFunctionLikeDeclaration(node, context) {
|
|
|
147
153
|
// This code can be reached only from object methods, which is TypeScript error
|
|
148
154
|
return lua.createNilLiteral();
|
|
149
155
|
}
|
|
156
|
+
if ((0, annotations_1.getNodeAnnotations)(node).has(annotations_1.AnnotationKind.TupleReturn)) {
|
|
157
|
+
context.diagnostics.push((0, diagnostics_1.annotationRemoved)(node, annotations_1.AnnotationKind.TupleReturn));
|
|
158
|
+
}
|
|
150
159
|
const [functionExpression, functionScope] = transformFunctionToExpression(context, node);
|
|
151
160
|
// Handle named function expressions which reference themselves
|
|
152
161
|
if (ts.isFunctionExpression(node) && node.name && functionScope.referencedSymbols) {
|
|
@@ -156,12 +165,12 @@ function transformFunctionLikeDeclaration(node, context) {
|
|
|
156
165
|
const isReferenced = [...functionScope.referencedSymbols].some(([, nodes]) => nodes.some(n => { var _a; return ((_a = context.checker.getSymbolAtLocation(n)) === null || _a === void 0 ? void 0 : _a.valueDeclaration) === symbol.valueDeclaration; }));
|
|
157
166
|
// Only wrap if the name is actually referenced inside the function
|
|
158
167
|
if (isReferenced) {
|
|
159
|
-
const nameIdentifier = identifier_1.transformIdentifier(context, node.name);
|
|
168
|
+
const nameIdentifier = (0, identifier_1.transformIdentifier)(context, node.name);
|
|
160
169
|
// We cannot use transformToImmediatelyInvokedFunctionExpression() here because we need to transpile
|
|
161
170
|
// the function first to determine if it's self-referencing. Fortunately, this does not cause issues
|
|
162
171
|
// with var-arg optimization because the IIFE is just wrapping another function which will already push
|
|
163
172
|
// another scope.
|
|
164
|
-
return lua_ast_1.createImmediatelyInvokedFunctionExpression([lua.createVariableDeclarationStatement(nameIdentifier, functionExpression)], lua.cloneIdentifier(nameIdentifier));
|
|
173
|
+
return (0, lua_ast_1.createImmediatelyInvokedFunctionExpression)([lua.createVariableDeclarationStatement(nameIdentifier, functionExpression)], lua.cloneIdentifier(nameIdentifier));
|
|
165
174
|
}
|
|
166
175
|
}
|
|
167
176
|
}
|
|
@@ -170,32 +179,35 @@ function transformFunctionLikeDeclaration(node, context) {
|
|
|
170
179
|
exports.transformFunctionLikeDeclaration = transformFunctionLikeDeclaration;
|
|
171
180
|
const transformFunctionDeclaration = (node, context) => {
|
|
172
181
|
var _a;
|
|
182
|
+
if ((0, annotations_1.getNodeAnnotations)(node).has(annotations_1.AnnotationKind.TupleReturn)) {
|
|
183
|
+
context.diagnostics.push((0, diagnostics_1.annotationRemoved)(node, annotations_1.AnnotationKind.TupleReturn));
|
|
184
|
+
}
|
|
173
185
|
// Don't transform functions without body (overload declarations)
|
|
174
186
|
if (node.body === undefined) {
|
|
175
187
|
return undefined;
|
|
176
188
|
}
|
|
177
|
-
if (export_1.hasDefaultExportModifier(node)) {
|
|
178
|
-
return lua.createAssignmentStatement(lua.createTableIndexExpression(lua_ast_1.createExportsIdentifier(), export_1.createDefaultExportStringLiteral(node)), transformFunctionLikeDeclaration(node, context));
|
|
189
|
+
if ((0, export_1.hasDefaultExportModifier)(node)) {
|
|
190
|
+
return lua.createAssignmentStatement(lua.createTableIndexExpression((0, lua_ast_1.createExportsIdentifier)(), (0, export_1.createDefaultExportStringLiteral)(node)), transformFunctionLikeDeclaration(node, context));
|
|
179
191
|
}
|
|
180
192
|
const [functionExpression, functionScope] = transformFunctionToExpression(context, node);
|
|
181
193
|
// Name being undefined without default export is a TypeScript error
|
|
182
|
-
const name = node.name ? identifier_1.transformIdentifier(context, node.name) : lua.createAnonymousIdentifier();
|
|
194
|
+
const name = node.name ? (0, identifier_1.transformIdentifier)(context, node.name) : lua.createAnonymousIdentifier();
|
|
183
195
|
// Remember symbols referenced in this function for hoisting later
|
|
184
196
|
if (name.symbolId !== undefined) {
|
|
185
|
-
const scope = scope_1.peekScope(context);
|
|
197
|
+
const scope = (0, scope_1.peekScope)(context);
|
|
186
198
|
if (!scope.functionDefinitions) {
|
|
187
199
|
scope.functionDefinitions = new Map();
|
|
188
200
|
}
|
|
189
201
|
const functionInfo = { referencedSymbols: (_a = functionScope.referencedSymbols) !== null && _a !== void 0 ? _a : new Map() };
|
|
190
202
|
scope.functionDefinitions.set(name.symbolId, functionInfo);
|
|
191
203
|
}
|
|
192
|
-
return lua_ast_1.createLocalOrExportedOrGlobalDeclaration(context, name, functionExpression, node);
|
|
204
|
+
return (0, lua_ast_1.createLocalOrExportedOrGlobalDeclaration)(context, name, functionExpression, node);
|
|
193
205
|
};
|
|
194
206
|
exports.transformFunctionDeclaration = transformFunctionDeclaration;
|
|
195
207
|
const transformYieldExpression = (expression, context) => {
|
|
196
208
|
const parameters = expression.expression ? [context.transformExpression(expression.expression)] : [];
|
|
197
209
|
return expression.asteriskToken
|
|
198
|
-
? lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.DelegatedYield, expression, ...parameters)
|
|
210
|
+
? (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.DelegatedYield, expression, ...parameters)
|
|
199
211
|
: lua.createCallExpression(lua.createTableIndexExpression(lua.createIdentifier("coroutine"), lua.createStringLiteral("yield")), parameters, expression);
|
|
200
212
|
};
|
|
201
213
|
exports.transformYieldExpression = transformYieldExpression;
|
|
@@ -4,9 +4,11 @@ exports.transformIdentifierExpression = exports.transformIdentifier = void 0;
|
|
|
4
4
|
const ts = require("typescript");
|
|
5
5
|
const lua = require("../../LuaAST");
|
|
6
6
|
const builtins_1 = require("../builtins");
|
|
7
|
+
const promise_1 = require("../builtins/promise");
|
|
7
8
|
const annotations_1 = require("../utils/annotations");
|
|
8
9
|
const diagnostics_1 = require("../utils/diagnostics");
|
|
9
10
|
const export_1 = require("../utils/export");
|
|
11
|
+
const lualib_1 = require("../utils/lualib");
|
|
10
12
|
const safe_names_1 = require("../utils/safe-names");
|
|
11
13
|
const symbols_1 = require("../utils/symbols");
|
|
12
14
|
const multi_1 = require("./language-extensions/multi");
|
|
@@ -15,48 +17,52 @@ const range_1 = require("./language-extensions/range");
|
|
|
15
17
|
const table_1 = require("./language-extensions/table");
|
|
16
18
|
const vararg_1 = require("./language-extensions/vararg");
|
|
17
19
|
function transformIdentifier(context, identifier) {
|
|
18
|
-
if (multi_1.isMultiFunctionNode(context, identifier)) {
|
|
19
|
-
context.diagnostics.push(diagnostics_1.invalidMultiFunctionUse(identifier));
|
|
20
|
+
if ((0, multi_1.isMultiFunctionNode)(context, identifier)) {
|
|
21
|
+
context.diagnostics.push((0, diagnostics_1.invalidMultiFunctionUse)(identifier));
|
|
20
22
|
return lua.createAnonymousIdentifier(identifier);
|
|
21
23
|
}
|
|
22
|
-
if (operators_1.isOperatorMapping(context, identifier)) {
|
|
23
|
-
context.diagnostics.push(diagnostics_1.invalidOperatorMappingUse(identifier));
|
|
24
|
+
if ((0, operators_1.isOperatorMapping)(context, identifier)) {
|
|
25
|
+
context.diagnostics.push((0, diagnostics_1.invalidOperatorMappingUse)(identifier));
|
|
24
26
|
}
|
|
25
|
-
if (table_1.isTableExtensionIdentifier(context, identifier)) {
|
|
26
|
-
context.diagnostics.push(diagnostics_1.invalidTableExtensionUse(identifier));
|
|
27
|
+
if ((0, table_1.isTableExtensionIdentifier)(context, identifier)) {
|
|
28
|
+
context.diagnostics.push((0, diagnostics_1.invalidTableExtensionUse)(identifier));
|
|
27
29
|
}
|
|
28
|
-
if (range_1.isRangeFunctionNode(context, identifier)) {
|
|
29
|
-
context.diagnostics.push(diagnostics_1.invalidRangeUse(identifier));
|
|
30
|
+
if ((0, range_1.isRangeFunctionNode)(context, identifier)) {
|
|
31
|
+
context.diagnostics.push((0, diagnostics_1.invalidRangeUse)(identifier));
|
|
30
32
|
return lua.createAnonymousIdentifier(identifier);
|
|
31
33
|
}
|
|
32
|
-
if (vararg_1.isVarargConstantNode(context, identifier)) {
|
|
33
|
-
context.diagnostics.push(diagnostics_1.invalidVarargUse(identifier));
|
|
34
|
+
if ((0, vararg_1.isVarargConstantNode)(context, identifier)) {
|
|
35
|
+
context.diagnostics.push((0, diagnostics_1.invalidVarargUse)(identifier));
|
|
34
36
|
return lua.createAnonymousIdentifier(identifier);
|
|
35
37
|
}
|
|
36
|
-
if (annotations_1.isForRangeType(context, identifier)) {
|
|
37
|
-
context.diagnostics.push(diagnostics_1.annotationRemoved(identifier, annotations_1.AnnotationKind.ForRange));
|
|
38
|
+
if ((0, annotations_1.isForRangeType)(context, identifier)) {
|
|
39
|
+
context.diagnostics.push((0, diagnostics_1.annotationRemoved)(identifier, annotations_1.AnnotationKind.ForRange));
|
|
38
40
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
+
if ((0, promise_1.isPromiseClass)(context, identifier)) {
|
|
42
|
+
(0, lualib_1.importLuaLibFeature)(context, lualib_1.LuaLibFeature.Promise);
|
|
43
|
+
return (0, promise_1.createPromiseIdentifier)(identifier);
|
|
44
|
+
}
|
|
45
|
+
const text = (0, safe_names_1.hasUnsafeIdentifierName)(context, identifier) ? (0, safe_names_1.createSafeName)(identifier.text) : identifier.text;
|
|
46
|
+
const symbolId = (0, symbols_1.getIdentifierSymbolId)(context, identifier);
|
|
41
47
|
return lua.createIdentifier(text, identifier, symbolId, identifier.text);
|
|
42
48
|
}
|
|
43
49
|
exports.transformIdentifier = transformIdentifier;
|
|
44
50
|
const transformIdentifierExpression = (node, context) => {
|
|
45
51
|
const symbol = context.checker.getSymbolAtLocation(node);
|
|
46
52
|
if (symbol) {
|
|
47
|
-
const exportScope = export_1.getSymbolExportScope(context, symbol);
|
|
53
|
+
const exportScope = (0, export_1.getSymbolExportScope)(context, symbol);
|
|
48
54
|
if (exportScope) {
|
|
49
55
|
const name = symbol.name;
|
|
50
|
-
const text = safe_names_1.hasUnsafeIdentifierName(context, node) ? safe_names_1.createSafeName(name) : name;
|
|
51
|
-
const symbolId = symbols_1.getIdentifierSymbolId(context, node);
|
|
56
|
+
const text = (0, safe_names_1.hasUnsafeIdentifierName)(context, node) ? (0, safe_names_1.createSafeName)(name) : name;
|
|
57
|
+
const symbolId = (0, symbols_1.getIdentifierSymbolId)(context, node);
|
|
52
58
|
const identifier = lua.createIdentifier(text, node, symbolId, name);
|
|
53
|
-
return export_1.createExportedIdentifier(context, identifier, exportScope);
|
|
59
|
+
return (0, export_1.createExportedIdentifier)(context, identifier, exportScope);
|
|
54
60
|
}
|
|
55
61
|
}
|
|
56
62
|
if (node.originalKeywordKind === ts.SyntaxKind.UndefinedKeyword) {
|
|
57
63
|
return lua.createNilLiteral();
|
|
58
64
|
}
|
|
59
|
-
const builtinResult = builtins_1.transformBuiltinIdentifierExpression(context, node);
|
|
65
|
+
const builtinResult = (0, builtins_1.transformBuiltinIdentifierExpression)(context, node);
|
|
60
66
|
if (builtinResult) {
|
|
61
67
|
return builtinResult;
|
|
62
68
|
}
|
|
@@ -33,14 +33,15 @@ const typeof_1 = require("./typeof");
|
|
|
33
33
|
const typescript_1 = require("./typescript");
|
|
34
34
|
const unary_expression_1 = require("./unary-expression");
|
|
35
35
|
const variable_declaration_1 = require("./variable-declaration");
|
|
36
|
-
const
|
|
36
|
+
const async_await_1 = require("./async-await");
|
|
37
|
+
const void_1 = require("./void");
|
|
37
38
|
const transformEmptyStatement = () => undefined;
|
|
38
39
|
const transformParenthesizedExpression = (node, context) => context.transformExpression(node.expression);
|
|
39
40
|
exports.standardVisitors = {
|
|
40
41
|
...literal_1.literalVisitors,
|
|
41
42
|
...typescript_1.typescriptVisitors,
|
|
42
|
-
...jsx_1.jsxVisitors,
|
|
43
43
|
[ts.SyntaxKind.ArrowFunction]: function_1.transformFunctionLikeDeclaration,
|
|
44
|
+
[ts.SyntaxKind.AwaitExpression]: async_await_1.transformAwaitExpression,
|
|
44
45
|
[ts.SyntaxKind.BinaryExpression]: binary_expression_1.transformBinaryExpression,
|
|
45
46
|
[ts.SyntaxKind.Block]: block_1.transformBlock,
|
|
46
47
|
[ts.SyntaxKind.BreakStatement]: break_continue_1.transformBreakStatement,
|
|
@@ -88,5 +89,6 @@ exports.standardVisitors = {
|
|
|
88
89
|
[ts.SyntaxKind.VariableStatement]: variable_declaration_1.transformVariableStatement,
|
|
89
90
|
[ts.SyntaxKind.WhileStatement]: do_while_1.transformWhileStatement,
|
|
90
91
|
[ts.SyntaxKind.YieldExpression]: function_1.transformYieldExpression,
|
|
92
|
+
[ts.SyntaxKind.VoidExpression]: void_1.transformVoidExpression,
|
|
91
93
|
};
|
|
92
94
|
//# sourceMappingURL=index.js.map
|
|
@@ -30,12 +30,12 @@ function transformForOfMultiIterableStatement(context, statement, block) {
|
|
|
30
30
|
if (ts.isVariableDeclarationList(statement.initializer)) {
|
|
31
31
|
// Variables declared in for loop
|
|
32
32
|
// for ${initializer} in ${iterable} do
|
|
33
|
-
const binding = utils_1.getVariableDeclarationBinding(context, statement.initializer);
|
|
33
|
+
const binding = (0, utils_1.getVariableDeclarationBinding)(context, statement.initializer);
|
|
34
34
|
if (ts.isArrayBindingPattern(binding)) {
|
|
35
|
-
identifiers = binding.elements.map(e => variable_declaration_1.transformArrayBindingElement(context, e));
|
|
35
|
+
identifiers = binding.elements.map(e => (0, variable_declaration_1.transformArrayBindingElement)(context, e));
|
|
36
36
|
}
|
|
37
37
|
else {
|
|
38
|
-
context.diagnostics.push(diagnostics_1.invalidMultiIterableWithoutDestructuring(binding));
|
|
38
|
+
context.diagnostics.push((0, diagnostics_1.invalidMultiIterableWithoutDestructuring)(binding));
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
else if (ts.isArrayLiteralExpression(statement.initializer)) {
|
|
@@ -44,11 +44,11 @@ function transformForOfMultiIterableStatement(context, statement, block) {
|
|
|
44
44
|
// ${initializer} = ____value0
|
|
45
45
|
identifiers = statement.initializer.elements.map((_, i) => lua.createIdentifier(`____value${i}`));
|
|
46
46
|
if (identifiers.length > 0) {
|
|
47
|
-
block.statements.unshift(lua.createAssignmentStatement(statement.initializer.elements.map(e => utils_2.cast(context.transformExpression(e), lua.isAssignmentLeftHandSideExpression)), identifiers));
|
|
47
|
+
block.statements.unshift(lua.createAssignmentStatement(statement.initializer.elements.map(e => (0, utils_2.cast)(context.transformExpression(e), lua.isAssignmentLeftHandSideExpression)), identifiers));
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
else {
|
|
51
|
-
context.diagnostics.push(diagnostics_1.invalidMultiIterableWithoutDestructuring(statement.initializer));
|
|
51
|
+
context.diagnostics.push((0, diagnostics_1.invalidMultiIterableWithoutDestructuring)(statement.initializer));
|
|
52
52
|
}
|
|
53
53
|
if (identifiers.length === 0) {
|
|
54
54
|
identifiers.push(lua.createAnonymousIdentifier());
|
|
@@ -58,11 +58,11 @@ function transformForOfMultiIterableStatement(context, statement, block) {
|
|
|
58
58
|
function transformForOfIterableStatement(context, statement, block) {
|
|
59
59
|
var _a;
|
|
60
60
|
const type = context.checker.getTypeAtLocation(statement.expression);
|
|
61
|
-
if (((_a = type.aliasTypeArguments) === null || _a === void 0 ? void 0 : _a.length) === 2 && multi_1.isMultiReturnType(type.aliasTypeArguments[0])) {
|
|
61
|
+
if (((_a = type.aliasTypeArguments) === null || _a === void 0 ? void 0 : _a.length) === 2 && (0, multi_1.isMultiReturnType)(type.aliasTypeArguments[0])) {
|
|
62
62
|
return transformForOfMultiIterableStatement(context, statement, block);
|
|
63
63
|
}
|
|
64
64
|
const luaIterator = context.transformExpression(statement.expression);
|
|
65
|
-
const identifier = utils_1.transformForInitializer(context, statement.initializer, block);
|
|
65
|
+
const identifier = (0, utils_1.transformForInitializer)(context, statement.initializer, block);
|
|
66
66
|
return lua.createForInStatement(block, [identifier], [luaIterator], statement);
|
|
67
67
|
}
|
|
68
68
|
exports.transformForOfIterableStatement = transformForOfIterableStatement;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import * as ts from "typescript";
|
|
2
2
|
import { TransformationContext } from "../../context";
|
|
3
3
|
export declare function isMultiReturnType(type: ts.Type): boolean;
|
|
4
|
+
export declare function canBeMultiReturnType(type: ts.Type): boolean;
|
|
4
5
|
export declare function isMultiFunctionCall(context: TransformationContext, expression: ts.CallExpression): boolean;
|
|
5
6
|
export declare function returnsMultiType(context: TransformationContext, node: ts.CallExpression): boolean;
|
|
6
7
|
export declare function isMultiReturnCall(context: TransformationContext, expression: ts.Expression): boolean;
|
|
7
8
|
export declare function isMultiFunctionNode(context: TransformationContext, node: ts.Node): boolean;
|
|
8
9
|
export declare function isInMultiReturnFunction(context: TransformationContext, node: ts.Node): boolean;
|
|
9
10
|
export declare function shouldMultiReturnCallBeWrapped(context: TransformationContext, node: ts.CallExpression): boolean;
|
|
10
|
-
export declare function findMultiAssignmentViolations(context: TransformationContext, node: ts.
|
|
11
|
+
export declare function findMultiAssignmentViolations(context: TransformationContext, node: ts.ObjectLiteralExpression): ts.Node[];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.findMultiAssignmentViolations = exports.shouldMultiReturnCallBeWrapped = exports.isInMultiReturnFunction = exports.isMultiFunctionNode = exports.isMultiReturnCall = exports.returnsMultiType = exports.isMultiFunctionCall = exports.isMultiReturnType = void 0;
|
|
3
|
+
exports.findMultiAssignmentViolations = exports.shouldMultiReturnCallBeWrapped = exports.isInMultiReturnFunction = exports.isMultiFunctionNode = exports.isMultiReturnCall = exports.returnsMultiType = exports.isMultiFunctionCall = exports.canBeMultiReturnType = exports.isMultiReturnType = void 0;
|
|
4
4
|
const ts = require("typescript");
|
|
5
5
|
const extensions = require("../../utils/language-extensions");
|
|
6
6
|
const typescript_1 = require("../../utils/typescript");
|
|
@@ -10,6 +10,10 @@ function isMultiReturnType(type) {
|
|
|
10
10
|
return extensions.isExtensionType(type, extensions.ExtensionKind.MultiType);
|
|
11
11
|
}
|
|
12
12
|
exports.isMultiReturnType = isMultiReturnType;
|
|
13
|
+
function canBeMultiReturnType(type) {
|
|
14
|
+
return isMultiReturnType(type) || (type.isUnion() && type.types.some(canBeMultiReturnType));
|
|
15
|
+
}
|
|
16
|
+
exports.canBeMultiReturnType = canBeMultiReturnType;
|
|
13
17
|
function isMultiFunctionCall(context, expression) {
|
|
14
18
|
return isMultiFunctionNode(context, expression.expression);
|
|
15
19
|
}
|
|
@@ -30,7 +34,7 @@ function isMultiFunctionNode(context, node) {
|
|
|
30
34
|
}
|
|
31
35
|
exports.isMultiFunctionNode = isMultiFunctionNode;
|
|
32
36
|
function isInMultiReturnFunction(context, node) {
|
|
33
|
-
const declaration = typescript_1.findFirstNodeAbove(node, ts.isFunctionLike);
|
|
37
|
+
const declaration = (0, typescript_1.findFirstNodeAbove)(node, ts.isFunctionLike);
|
|
34
38
|
if (!declaration) {
|
|
35
39
|
return false;
|
|
36
40
|
}
|
|
@@ -71,7 +75,7 @@ function shouldMultiReturnCallBeWrapped(context, node) {
|
|
|
71
75
|
return false;
|
|
72
76
|
}
|
|
73
77
|
// LuaIterable in for...of
|
|
74
|
-
if (ts.isForOfStatement(node.parent) && iterable_1.isIterableExpression(context, node)) {
|
|
78
|
+
if (ts.isForOfStatement(node.parent) && (0, iterable_1.isIterableExpression)(context, node)) {
|
|
75
79
|
return false;
|
|
76
80
|
}
|
|
77
81
|
return true;
|
|
@@ -85,7 +89,7 @@ function findMultiAssignmentViolations(context, node) {
|
|
|
85
89
|
const valueSymbol = context.checker.getShorthandAssignmentValueSymbol(element);
|
|
86
90
|
if (valueSymbol) {
|
|
87
91
|
if (extensions.isExtensionValue(context, valueSymbol, extensions.ExtensionKind.MultiFunction)) {
|
|
88
|
-
context.diagnostics.push(diagnostics_1.invalidMultiFunctionUse(element));
|
|
92
|
+
context.diagnostics.push((0, diagnostics_1.invalidMultiFunctionUse)(element));
|
|
89
93
|
result.push(element);
|
|
90
94
|
}
|
|
91
95
|
}
|
|
@@ -64,7 +64,7 @@ const bitwiseOperatorMapExtensions = new Set([
|
|
|
64
64
|
extensions.ExtensionKind.BitwiseNotOperatorMethodType,
|
|
65
65
|
]);
|
|
66
66
|
function getOperatorMapExtensionKindForCall(context, node) {
|
|
67
|
-
const type = typescript_1.getFunctionTypeForCall(context, node);
|
|
67
|
+
const type = (0, typescript_1.getFunctionTypeForCall)(context, node);
|
|
68
68
|
return type && operatorMapExtensions.find(extensionKind => extensions.isExtensionType(type, extensionKind));
|
|
69
69
|
}
|
|
70
70
|
function isOperatorMapping(context, node) {
|
|
@@ -79,7 +79,7 @@ function isOperatorMapping(context, node) {
|
|
|
79
79
|
exports.isOperatorMapping = isOperatorMapping;
|
|
80
80
|
function transformOperatorMappingExpression(context, node) {
|
|
81
81
|
const extensionKind = getOperatorMapExtensionKindForCall(context, node);
|
|
82
|
-
utils_1.assert(extensionKind);
|
|
82
|
+
(0, utils_1.assert)(extensionKind);
|
|
83
83
|
const isBefore53 = context.luaTarget === CompilerOptions_1.LuaTarget.Lua51 ||
|
|
84
84
|
context.luaTarget === CompilerOptions_1.LuaTarget.Lua52 ||
|
|
85
85
|
context.luaTarget === CompilerOptions_1.LuaTarget.LuaJIT ||
|
|
@@ -87,11 +87,11 @@ function transformOperatorMappingExpression(context, node) {
|
|
|
87
87
|
if (isBefore53) {
|
|
88
88
|
const luaTarget = context.luaTarget === CompilerOptions_1.LuaTarget.Universal ? CompilerOptions_1.LuaTarget.Lua51 : context.luaTarget;
|
|
89
89
|
if (bitwiseOperatorMapExtensions.has(extensionKind)) {
|
|
90
|
-
context.diagnostics.push(diagnostics_1.unsupportedForTarget(node, "Native bitwise operations", luaTarget));
|
|
90
|
+
context.diagnostics.push((0, diagnostics_1.unsupportedForTarget)(node, "Native bitwise operations", luaTarget));
|
|
91
91
|
}
|
|
92
92
|
else if (extensionKind === extensions.ExtensionKind.FloorDivisionOperatorType ||
|
|
93
93
|
extensionKind === extensions.ExtensionKind.FloorDivisionOperatorMethodType) {
|
|
94
|
-
context.diagnostics.push(diagnostics_1.unsupportedForTarget(node, "Floor division operator", luaTarget));
|
|
94
|
+
context.diagnostics.push((0, diagnostics_1.unsupportedForTarget)(node, "Floor division operator", luaTarget));
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
const args = node.arguments.slice();
|
|
@@ -101,7 +101,7 @@ function transformOperatorMappingExpression(context, node) {
|
|
|
101
101
|
args.unshift(node.expression.expression);
|
|
102
102
|
}
|
|
103
103
|
const luaOperator = binaryOperatorMappings.get(extensionKind);
|
|
104
|
-
utils_1.assert(luaOperator);
|
|
104
|
+
(0, utils_1.assert)(luaOperator);
|
|
105
105
|
return lua.createBinaryExpression(context.transformExpression(args[0]), context.transformExpression(args[1]), luaOperator);
|
|
106
106
|
}
|
|
107
107
|
else {
|
|
@@ -114,7 +114,7 @@ function transformOperatorMappingExpression(context, node) {
|
|
|
114
114
|
arg = args[0];
|
|
115
115
|
}
|
|
116
116
|
const luaOperator = unaryOperatorMappings.get(extensionKind);
|
|
117
|
-
utils_1.assert(luaOperator);
|
|
117
|
+
(0, utils_1.assert)(luaOperator);
|
|
118
118
|
return lua.createUnaryExpression(context.transformExpression(arg), luaOperator);
|
|
119
119
|
}
|
|
120
120
|
}
|
|
@@ -20,21 +20,21 @@ function isRangeFunctionNode(context, node) {
|
|
|
20
20
|
exports.isRangeFunctionNode = isRangeFunctionNode;
|
|
21
21
|
function getControlVariable(context, statement) {
|
|
22
22
|
if (!ts.isVariableDeclarationList(statement.initializer)) {
|
|
23
|
-
context.diagnostics.push(diagnostics_1.invalidRangeControlVariable(statement.initializer));
|
|
23
|
+
context.diagnostics.push((0, diagnostics_1.invalidRangeControlVariable)(statement.initializer));
|
|
24
24
|
return;
|
|
25
25
|
}
|
|
26
|
-
const binding = utils_1.getVariableDeclarationBinding(context, statement.initializer);
|
|
26
|
+
const binding = (0, utils_1.getVariableDeclarationBinding)(context, statement.initializer);
|
|
27
27
|
if (!ts.isIdentifier(binding)) {
|
|
28
|
-
context.diagnostics.push(diagnostics_1.invalidRangeControlVariable(statement.initializer));
|
|
28
|
+
context.diagnostics.push((0, diagnostics_1.invalidRangeControlVariable)(statement.initializer));
|
|
29
29
|
return;
|
|
30
30
|
}
|
|
31
|
-
return identifier_1.transformIdentifier(context, binding);
|
|
31
|
+
return (0, identifier_1.transformIdentifier)(context, binding);
|
|
32
32
|
}
|
|
33
33
|
function transformRangeStatement(context, statement, block) {
|
|
34
34
|
var _a;
|
|
35
|
-
utils_2.assert(ts.isCallExpression(statement.expression));
|
|
35
|
+
(0, utils_2.assert)(ts.isCallExpression(statement.expression));
|
|
36
36
|
const controlVariable = (_a = getControlVariable(context, statement)) !== null && _a !== void 0 ? _a : lua.createAnonymousIdentifier(statement.initializer);
|
|
37
|
-
const [start = lua.createNumericLiteral(0), limit = lua.createNumericLiteral(0), step] = call_1.transformArguments(context, statement.expression.arguments, context.checker.getResolvedSignature(statement.expression));
|
|
37
|
+
const [start = lua.createNumericLiteral(0), limit = lua.createNumericLiteral(0), step] = (0, call_1.transformArguments)(context, statement.expression.arguments, context.checker.getResolvedSignature(statement.expression));
|
|
38
38
|
return lua.createForStatement(block, controlVariable, start, limit, step, statement);
|
|
39
39
|
}
|
|
40
40
|
exports.transformRangeStatement = transformRangeStatement;
|