typescript-to-lua 0.42.0 → 1.1.1
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 +31 -1
- package/dist/CompilerOptions.d.ts +4 -3
- package/dist/LuaAST.js +4 -4
- package/dist/LuaLib.d.ts +7 -0
- package/dist/LuaLib.js +32 -1
- package/dist/LuaPrinter.d.ts +6 -2
- package/dist/LuaPrinter.js +25 -16
- package/dist/cli/diagnostics.js +2 -2
- package/dist/cli/parse.d.ts +1 -1
- package/dist/cli/parse.js +14 -0
- package/dist/cli/report.js +1 -1
- package/dist/cli/tsconfig.js +4 -4
- package/dist/lualib/Await.lua +59 -0
- package/dist/lualib/OptionalMethodCall.lua +3 -1
- 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 +20 -10
- package/dist/lualib/StringReplace.lua +8 -13
- package/dist/lualib/StringReplaceAll.lua +35 -0
- package/dist/lualib/lualib_bundle.lua +503 -62
- 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 +2 -39
- 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.d.ts +3 -2
- package/dist/transformation/utils/export.js +14 -7
- 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 +16 -16
- 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 +29 -29
- 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 +21 -21
- package/dist/transformation/visitors/block.js +6 -6
- package/dist/transformation/visitors/break-continue.js +4 -9
- package/dist/transformation/visitors/call.js +38 -33
- package/dist/transformation/visitors/class/decorators.js +3 -3
- package/dist/transformation/visitors/class/index.js +41 -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 +1 -1
- package/dist/transformation/visitors/language-extensions/multi.js +5 -7
- 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 -14
- 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 -11
- 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 +28 -28
- 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 -15
- 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 +8 -8
- package/dist/transpilation/utils.js +3 -2
- package/dist/tstl.js +8 -8
- package/dist/utils.js +2 -2
- package/package.json +15 -12
- 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
|
@@ -18,33 +18,33 @@ const diagnostics_1 = require("../../utils/diagnostics");
|
|
|
18
18
|
function transformAssignmentLeftHandSideExpression(context, node) {
|
|
19
19
|
const symbol = context.checker.getSymbolAtLocation(node);
|
|
20
20
|
const left = context.transformExpression(node);
|
|
21
|
-
return lua.isIdentifier(left) && symbol && export_1.isSymbolExported(context, symbol)
|
|
22
|
-
? export_1.createExportedIdentifier(context, left)
|
|
23
|
-
: utils_1.cast(left, lua.isAssignmentLeftHandSideExpression);
|
|
21
|
+
return lua.isIdentifier(left) && symbol && (0, export_1.isSymbolExported)(context, symbol)
|
|
22
|
+
? (0, export_1.createExportedIdentifier)(context, left)
|
|
23
|
+
: (0, utils_1.cast)(left, lua.isAssignmentLeftHandSideExpression);
|
|
24
24
|
}
|
|
25
25
|
exports.transformAssignmentLeftHandSideExpression = transformAssignmentLeftHandSideExpression;
|
|
26
26
|
function transformAssignment(context,
|
|
27
27
|
// TODO: Change type to ts.LeftHandSideExpression?
|
|
28
28
|
lhs, right, parent) {
|
|
29
29
|
if (ts.isOptionalChain(lhs)) {
|
|
30
|
-
context.diagnostics.push(diagnostics_1.notAllowedOptionalAssignment(lhs));
|
|
30
|
+
context.diagnostics.push((0, diagnostics_1.notAllowedOptionalAssignment)(lhs));
|
|
31
31
|
return [];
|
|
32
32
|
}
|
|
33
|
-
if (destructuring_assignments_1.isArrayLength(context, lhs)) {
|
|
34
|
-
const arrayLengthAssignment = lua.createExpressionStatement(lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArraySetLength, parent, context.transformExpression(lhs.expression), right));
|
|
33
|
+
if ((0, destructuring_assignments_1.isArrayLength)(context, lhs)) {
|
|
34
|
+
const arrayLengthAssignment = lua.createExpressionStatement((0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArraySetLength, parent, context.transformExpression(lhs.expression), right));
|
|
35
35
|
return [arrayLengthAssignment];
|
|
36
36
|
}
|
|
37
37
|
const symbol = ts.isShorthandPropertyAssignment(lhs.parent)
|
|
38
38
|
? context.checker.getShorthandAssignmentValueSymbol(lhs.parent)
|
|
39
39
|
: context.checker.getSymbolAtLocation(lhs);
|
|
40
|
-
const dependentSymbols = symbol ? export_1.getDependenciesOfSymbol(context, symbol) : [];
|
|
40
|
+
const dependentSymbols = symbol ? (0, export_1.getDependenciesOfSymbol)(context, symbol) : [];
|
|
41
41
|
const left = transformAssignmentLeftHandSideExpression(context, lhs);
|
|
42
42
|
const rootAssignment = lua.createAssignmentStatement(left, right, lhs.parent);
|
|
43
43
|
return [
|
|
44
44
|
rootAssignment,
|
|
45
45
|
...dependentSymbols.map(symbol => {
|
|
46
46
|
const [left] = rootAssignment.left;
|
|
47
|
-
const identifierToAssign = export_1.createExportedIdentifier(context, lua.createIdentifier(symbol.name));
|
|
47
|
+
const identifierToAssign = (0, export_1.createExportedIdentifier)(context, lua.createIdentifier(symbol.name));
|
|
48
48
|
return lua.createAssignmentStatement(identifierToAssign, left);
|
|
49
49
|
}),
|
|
50
50
|
];
|
|
@@ -53,12 +53,12 @@ exports.transformAssignment = transformAssignment;
|
|
|
53
53
|
function transformDestructuredAssignmentExpression(context, expression) {
|
|
54
54
|
const rootIdentifier = lua.createAnonymousIdentifier(expression.left);
|
|
55
55
|
let right = context.transformExpression(expression.right);
|
|
56
|
-
if (multi_1.isMultiReturnCall(context, expression.right)) {
|
|
57
|
-
right = lua_ast_1.wrapInTable(right);
|
|
56
|
+
if ((0, multi_1.isMultiReturnCall)(context, expression.right)) {
|
|
57
|
+
right = (0, lua_ast_1.wrapInTable)(right);
|
|
58
58
|
}
|
|
59
59
|
const statements = [
|
|
60
60
|
lua.createVariableDeclarationStatement(rootIdentifier, right),
|
|
61
|
-
...destructuring_assignments_1.transformDestructuringAssignment(context, expression, rootIdentifier),
|
|
61
|
+
...(0, destructuring_assignments_1.transformDestructuringAssignment)(context, expression, rootIdentifier),
|
|
62
62
|
];
|
|
63
63
|
return { statements, result: rootIdentifier };
|
|
64
64
|
}
|
|
@@ -66,13 +66,13 @@ function transformAssignmentExpression(context, expression) {
|
|
|
66
66
|
// Validate assignment
|
|
67
67
|
const rightType = context.checker.getTypeAtLocation(expression.right);
|
|
68
68
|
const leftType = context.checker.getTypeAtLocation(expression.left);
|
|
69
|
-
assignment_validation_1.validateAssignment(context, expression.right, rightType, leftType);
|
|
70
|
-
if (destructuring_assignments_1.isArrayLength(context, expression.left)) {
|
|
69
|
+
(0, assignment_validation_1.validateAssignment)(context, expression.right, rightType, leftType);
|
|
70
|
+
if ((0, destructuring_assignments_1.isArrayLength)(context, expression.left)) {
|
|
71
71
|
// array.length = x
|
|
72
|
-
return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArraySetLength, expression, context.transformExpression(expression.left.expression), context.transformExpression(expression.right));
|
|
72
|
+
return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArraySetLength, expression, context.transformExpression(expression.left.expression), context.transformExpression(expression.right));
|
|
73
73
|
}
|
|
74
|
-
if (typescript_1.isDestructuringAssignment(expression)) {
|
|
75
|
-
return transform_1.transformToImmediatelyInvokedFunctionExpression(context, () => transformDestructuredAssignmentExpression(context, expression), expression);
|
|
74
|
+
if ((0, typescript_1.isDestructuringAssignment)(expression)) {
|
|
75
|
+
return (0, transform_1.transformToImmediatelyInvokedFunctionExpression)(context, () => transformDestructuredAssignmentExpression(context, expression), expression);
|
|
76
76
|
}
|
|
77
77
|
if (ts.isPropertyAccessExpression(expression.left) || ts.isElementAccessExpression(expression.left)) {
|
|
78
78
|
// Left is property/element access: cache result while maintaining order of evaluation
|
|
@@ -90,7 +90,7 @@ function transformAssignmentExpression(context, expression) {
|
|
|
90
90
|
indexParameter,
|
|
91
91
|
valueParameter,
|
|
92
92
|
]);
|
|
93
|
-
scope_1.pushScope(context, scope_1.ScopeType.Function);
|
|
93
|
+
(0, scope_1.pushScope)(context, scope_1.ScopeType.Function);
|
|
94
94
|
const objExpression = context.transformExpression(expression.left.expression);
|
|
95
95
|
let indexExpression;
|
|
96
96
|
if (ts.isPropertyAccessExpression(expression.left)) {
|
|
@@ -99,14 +99,14 @@ function transformAssignmentExpression(context, expression) {
|
|
|
99
99
|
}
|
|
100
100
|
else {
|
|
101
101
|
// Element access
|
|
102
|
-
indexExpression = access_1.transformElementAccessArgument(context, expression.left);
|
|
102
|
+
indexExpression = (0, access_1.transformElementAccessArgument)(context, expression.left);
|
|
103
103
|
}
|
|
104
104
|
const args = [objExpression, indexExpression, context.transformExpression(expression.right)];
|
|
105
|
-
scope_1.popScope(context);
|
|
105
|
+
(0, scope_1.popScope)(context);
|
|
106
106
|
return lua.createCallExpression(iife, args, expression);
|
|
107
107
|
}
|
|
108
108
|
else {
|
|
109
|
-
return transform_1.transformToImmediatelyInvokedFunctionExpression(context, () => {
|
|
109
|
+
return (0, transform_1.transformToImmediatelyInvokedFunctionExpression)(context, () => {
|
|
110
110
|
// Simple assignment
|
|
111
111
|
// (function() ${left} = ${right}; return ${left} end)()
|
|
112
112
|
const left = context.transformExpression(expression.left);
|
|
@@ -119,7 +119,7 @@ function transformAssignmentExpression(context, expression) {
|
|
|
119
119
|
exports.transformAssignmentExpression = transformAssignmentExpression;
|
|
120
120
|
const canBeTransformedToLuaAssignmentStatement = (context, node) => ts.isArrayLiteralExpression(node.left) &&
|
|
121
121
|
node.left.elements.every(element => {
|
|
122
|
-
if (destructuring_assignments_1.isArrayLength(context, element)) {
|
|
122
|
+
if ((0, destructuring_assignments_1.isArrayLength)(context, element)) {
|
|
123
123
|
return false;
|
|
124
124
|
}
|
|
125
125
|
if (ts.isPropertyAccessExpression(element) || ts.isElementAccessExpression(element)) {
|
|
@@ -128,7 +128,7 @@ const canBeTransformedToLuaAssignmentStatement = (context, node) => ts.isArrayLi
|
|
|
128
128
|
if (ts.isIdentifier(element)) {
|
|
129
129
|
const symbol = context.checker.getSymbolAtLocation(element);
|
|
130
130
|
if (symbol) {
|
|
131
|
-
const aliases = export_1.getDependenciesOfSymbol(context, symbol);
|
|
131
|
+
const aliases = (0, export_1.getDependenciesOfSymbol)(context, symbol);
|
|
132
132
|
return aliases.length === 0;
|
|
133
133
|
}
|
|
134
134
|
}
|
|
@@ -137,28 +137,28 @@ function transformAssignmentStatement(context, expression) {
|
|
|
137
137
|
// Validate assignment
|
|
138
138
|
const rightType = context.checker.getTypeAtLocation(expression.right);
|
|
139
139
|
const leftType = context.checker.getTypeAtLocation(expression.left);
|
|
140
|
-
assignment_validation_1.validateAssignment(context, expression.right, rightType, leftType);
|
|
141
|
-
if (typescript_1.isDestructuringAssignment(expression)) {
|
|
140
|
+
(0, assignment_validation_1.validateAssignment)(context, expression.right, rightType, leftType);
|
|
141
|
+
if ((0, typescript_1.isDestructuringAssignment)(expression)) {
|
|
142
142
|
if (canBeTransformedToLuaAssignmentStatement(context, expression)) {
|
|
143
143
|
const rightType = context.checker.getTypeAtLocation(expression.right);
|
|
144
144
|
let right = context.transformExpression(expression.right);
|
|
145
145
|
if (ts.isArrayLiteralExpression(expression.right)) {
|
|
146
146
|
right = expression.right.elements.map(e => context.transformExpression(e));
|
|
147
147
|
}
|
|
148
|
-
else if (!multi_1.isMultiReturnCall(context, expression.right) && typescript_1.isArrayType(context, rightType)) {
|
|
149
|
-
right = lua_ast_1.createUnpackCall(context, right, expression.right);
|
|
148
|
+
else if (!(0, multi_1.isMultiReturnCall)(context, expression.right) && (0, typescript_1.isArrayType)(context, rightType)) {
|
|
149
|
+
right = (0, lua_ast_1.createUnpackCall)(context, right, expression.right);
|
|
150
150
|
}
|
|
151
151
|
const left = expression.left.elements.map(e => transformAssignmentLeftHandSideExpression(context, e));
|
|
152
152
|
return [lua.createAssignmentStatement(left, right, expression)];
|
|
153
153
|
}
|
|
154
154
|
let right = context.transformExpression(expression.right);
|
|
155
|
-
if (multi_1.isMultiReturnCall(context, expression.right)) {
|
|
156
|
-
right = lua_ast_1.wrapInTable(right);
|
|
155
|
+
if ((0, multi_1.isMultiReturnCall)(context, expression.right)) {
|
|
156
|
+
right = (0, lua_ast_1.wrapInTable)(right);
|
|
157
157
|
}
|
|
158
158
|
const rootIdentifier = lua.createAnonymousIdentifier(expression.left);
|
|
159
159
|
return [
|
|
160
160
|
lua.createVariableDeclarationStatement(rootIdentifier, right),
|
|
161
|
-
...destructuring_assignments_1.transformDestructuringAssignment(context, expression, rootIdentifier),
|
|
161
|
+
...(0, destructuring_assignments_1.transformDestructuringAssignment)(context, expression, rootIdentifier),
|
|
162
162
|
];
|
|
163
163
|
}
|
|
164
164
|
else {
|
|
@@ -31,7 +31,7 @@ function transformBitOperatorToLuaOperator(context, node, operator) {
|
|
|
31
31
|
case ts.SyntaxKind.LessThanLessThanToken:
|
|
32
32
|
return lua.SyntaxKind.BitwiseLeftShiftOperator;
|
|
33
33
|
case ts.SyntaxKind.GreaterThanGreaterThanToken:
|
|
34
|
-
context.diagnostics.push(diagnostics_1.unsupportedRightShiftOperator(node));
|
|
34
|
+
context.diagnostics.push((0, diagnostics_1.unsupportedRightShiftOperator)(node));
|
|
35
35
|
case ts.SyntaxKind.GreaterThanGreaterThanGreaterThanToken:
|
|
36
36
|
return lua.SyntaxKind.BitwiseRightShiftOperator;
|
|
37
37
|
}
|
|
@@ -40,7 +40,7 @@ function transformBinaryBitOperation(context, node, left, right, operator) {
|
|
|
40
40
|
switch (context.luaTarget) {
|
|
41
41
|
case CompilerOptions_1.LuaTarget.Universal:
|
|
42
42
|
case CompilerOptions_1.LuaTarget.Lua51:
|
|
43
|
-
context.diagnostics.push(diagnostics_1.unsupportedForTarget(node, "Bitwise operations", CompilerOptions_1.LuaTarget.Lua51));
|
|
43
|
+
context.diagnostics.push((0, diagnostics_1.unsupportedForTarget)(node, "Bitwise operations", CompilerOptions_1.LuaTarget.Lua51));
|
|
44
44
|
case CompilerOptions_1.LuaTarget.LuaJIT:
|
|
45
45
|
return transformBinaryBitLibOperation(node, left, right, operator, "bit");
|
|
46
46
|
case CompilerOptions_1.LuaTarget.Lua52:
|
|
@@ -58,7 +58,7 @@ function transformUnaryBitLibOperation(node, expression, operator, lib) {
|
|
|
58
58
|
bitFunction = "bnot";
|
|
59
59
|
break;
|
|
60
60
|
default:
|
|
61
|
-
utils_1.assertNever(operator);
|
|
61
|
+
(0, utils_1.assertNever)(operator);
|
|
62
62
|
}
|
|
63
63
|
return lua.createCallExpression(lua.createTableIndexExpression(lua.createIdentifier(lib), lua.createStringLiteral(bitFunction)), [expression], node);
|
|
64
64
|
}
|
|
@@ -66,7 +66,7 @@ function transformUnaryBitOperation(context, node, expression, operator) {
|
|
|
66
66
|
switch (context.luaTarget) {
|
|
67
67
|
case CompilerOptions_1.LuaTarget.Universal:
|
|
68
68
|
case CompilerOptions_1.LuaTarget.Lua51:
|
|
69
|
-
context.diagnostics.push(diagnostics_1.unsupportedForTarget(node, "Bitwise operations", CompilerOptions_1.LuaTarget.Lua51));
|
|
69
|
+
context.diagnostics.push((0, diagnostics_1.unsupportedForTarget)(node, "Bitwise operations", CompilerOptions_1.LuaTarget.Lua51));
|
|
70
70
|
case CompilerOptions_1.LuaTarget.LuaJIT:
|
|
71
71
|
return transformUnaryBitLibOperation(node, expression, operator, "bit");
|
|
72
72
|
case CompilerOptions_1.LuaTarget.Lua52:
|
|
@@ -11,9 +11,9 @@ const assignments_1 = require("./assignments");
|
|
|
11
11
|
// If expression is property/element access with possible effects from being evaluated, returns separated object and index expressions.
|
|
12
12
|
function parseAccessExpressionWithEvaluationEffects(context, node) {
|
|
13
13
|
if (ts.isElementAccessExpression(node) &&
|
|
14
|
-
(typescript_1.isExpressionWithEvaluationEffect(node.expression) || typescript_1.isExpressionWithEvaluationEffect(node.argumentExpression))) {
|
|
14
|
+
((0, typescript_1.isExpressionWithEvaluationEffect)(node.expression) || (0, typescript_1.isExpressionWithEvaluationEffect)(node.argumentExpression))) {
|
|
15
15
|
const type = context.checker.getTypeAtLocation(node.expression);
|
|
16
|
-
if (typescript_1.isArrayType(context, type)) {
|
|
16
|
+
if ((0, typescript_1.isArrayType)(context, type)) {
|
|
17
17
|
// Offset arrays by one
|
|
18
18
|
const oneLit = ts.factory.createNumericLiteral("1");
|
|
19
19
|
const exp = ts.factory.createParenthesizedExpression(node.argumentExpression);
|
|
@@ -24,7 +24,7 @@ function parseAccessExpressionWithEvaluationEffects(context, node) {
|
|
|
24
24
|
return [node.expression, node.argumentExpression];
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
else if (ts.isPropertyAccessExpression(node) && typescript_1.isExpressionWithEvaluationEffect(node.expression)) {
|
|
27
|
+
else if (ts.isPropertyAccessExpression(node) && (0, typescript_1.isExpressionWithEvaluationEffect)(node.expression)) {
|
|
28
28
|
return [node.expression, ts.factory.createStringLiteral(node.name.text)];
|
|
29
29
|
}
|
|
30
30
|
return [];
|
|
@@ -52,7 +52,7 @@ exports.isCompoundAssignmentToken = isCompoundAssignmentToken;
|
|
|
52
52
|
const unwrapCompoundAssignmentToken = (token) => compoundToAssignmentTokens[token];
|
|
53
53
|
exports.unwrapCompoundAssignmentToken = unwrapCompoundAssignmentToken;
|
|
54
54
|
function transformCompoundAssignment(context, expression, lhs, rhs, operator, isPostfix) {
|
|
55
|
-
const left = utils_1.cast(context.transformExpression(lhs), lua.isAssignmentLeftHandSideExpression);
|
|
55
|
+
const left = (0, utils_1.cast)(context.transformExpression(lhs), lua.isAssignmentLeftHandSideExpression);
|
|
56
56
|
const right = context.transformExpression(rhs);
|
|
57
57
|
const [objExpression, indexExpression] = parseAccessExpressionWithEvaluationEffects(context, lhs);
|
|
58
58
|
if (objExpression && indexExpression) {
|
|
@@ -69,13 +69,13 @@ function transformCompoundAssignment(context, expression, lhs, rhs, operator, is
|
|
|
69
69
|
// local ____tmp = ____obj[____index];
|
|
70
70
|
// ____obj[____index] = ____tmp ${replacementOperator} ${right};
|
|
71
71
|
tmpDeclaration = lua.createVariableDeclarationStatement(tmp, accessExpression);
|
|
72
|
-
const operatorExpression = binary_expression_1.transformBinaryOperation(context, tmp, right, operator, expression);
|
|
72
|
+
const operatorExpression = (0, binary_expression_1.transformBinaryOperation)(context, tmp, right, operator, expression);
|
|
73
73
|
assignStatement = lua.createAssignmentStatement(accessExpression, operatorExpression);
|
|
74
74
|
}
|
|
75
75
|
else {
|
|
76
76
|
// local ____tmp = ____obj[____index] ${replacementOperator} ${right};
|
|
77
77
|
// ____obj[____index] = ____tmp;
|
|
78
|
-
const operatorExpression = binary_expression_1.transformBinaryOperation(context, accessExpression, right, operator, expression);
|
|
78
|
+
const operatorExpression = (0, binary_expression_1.transformBinaryOperation)(context, accessExpression, right, operator, expression);
|
|
79
79
|
tmpDeclaration = lua.createVariableDeclarationStatement(tmp, operatorExpression);
|
|
80
80
|
assignStatement = lua.createAssignmentStatement(accessExpression, tmp);
|
|
81
81
|
}
|
|
@@ -89,8 +89,8 @@ function transformCompoundAssignment(context, expression, lhs, rhs, operator, is
|
|
|
89
89
|
// return ____tmp
|
|
90
90
|
const tmpIdentifier = lua.createIdentifier("____tmp");
|
|
91
91
|
const tmpDeclaration = lua.createVariableDeclarationStatement(tmpIdentifier, left);
|
|
92
|
-
const operatorExpression = binary_expression_1.transformBinaryOperation(context, tmpIdentifier, right, operator, expression);
|
|
93
|
-
const assignStatements = assignments_1.transformAssignment(context, lhs, operatorExpression);
|
|
92
|
+
const operatorExpression = (0, binary_expression_1.transformBinaryOperation)(context, tmpIdentifier, right, operator, expression);
|
|
93
|
+
const assignStatements = (0, assignments_1.transformAssignment)(context, lhs, operatorExpression);
|
|
94
94
|
return { statements: [tmpDeclaration, ...assignStatements], result: tmpIdentifier };
|
|
95
95
|
}
|
|
96
96
|
else if (ts.isPropertyAccessExpression(lhs) || ts.isElementAccessExpression(lhs)) {
|
|
@@ -99,9 +99,9 @@ function transformCompoundAssignment(context, expression, lhs, rhs, operator, is
|
|
|
99
99
|
// ${left} = ____tmp;
|
|
100
100
|
// return ____tmp
|
|
101
101
|
const tmpIdentifier = lua.createIdentifier("____tmp");
|
|
102
|
-
const operatorExpression = binary_expression_1.transformBinaryOperation(context, left, right, operator, expression);
|
|
102
|
+
const operatorExpression = (0, binary_expression_1.transformBinaryOperation)(context, left, right, operator, expression);
|
|
103
103
|
const tmpDeclaration = lua.createVariableDeclarationStatement(tmpIdentifier, operatorExpression);
|
|
104
|
-
const assignStatements = assignments_1.transformAssignment(context, lhs, tmpIdentifier);
|
|
104
|
+
const assignStatements = (0, assignments_1.transformAssignment)(context, lhs, tmpIdentifier);
|
|
105
105
|
if (isSetterSkippingCompoundAssignmentOperator(operator)) {
|
|
106
106
|
const statements = [
|
|
107
107
|
tmpDeclaration,
|
|
@@ -114,8 +114,8 @@ function transformCompoundAssignment(context, expression, lhs, rhs, operator, is
|
|
|
114
114
|
else {
|
|
115
115
|
// Simple expressions
|
|
116
116
|
// ${left} = ${right}; return ${right}
|
|
117
|
-
const operatorExpression = binary_expression_1.transformBinaryOperation(context, left, right, operator, expression);
|
|
118
|
-
const statements = assignments_1.transformAssignment(context, lhs, operatorExpression);
|
|
117
|
+
const operatorExpression = (0, binary_expression_1.transformBinaryOperation)(context, left, right, operator, expression);
|
|
118
|
+
const statements = (0, assignments_1.transformAssignment)(context, lhs, operatorExpression);
|
|
119
119
|
return { statements, result: left };
|
|
120
120
|
}
|
|
121
121
|
}
|
|
@@ -123,11 +123,11 @@ exports.transformCompoundAssignment = transformCompoundAssignment;
|
|
|
123
123
|
function transformCompoundAssignmentExpression(context, expression,
|
|
124
124
|
// TODO: Change type to ts.LeftHandSideExpression?
|
|
125
125
|
lhs, rhs, operator, isPostfix) {
|
|
126
|
-
return transform_1.transformToImmediatelyInvokedFunctionExpression(context, () => transformCompoundAssignment(context, expression, lhs, rhs, operator, isPostfix), expression);
|
|
126
|
+
return (0, transform_1.transformToImmediatelyInvokedFunctionExpression)(context, () => transformCompoundAssignment(context, expression, lhs, rhs, operator, isPostfix), expression);
|
|
127
127
|
}
|
|
128
128
|
exports.transformCompoundAssignmentExpression = transformCompoundAssignmentExpression;
|
|
129
129
|
function transformCompoundAssignmentStatement(context, node, lhs, rhs, operator) {
|
|
130
|
-
const left = utils_1.cast(context.transformExpression(lhs), lua.isAssignmentLeftHandSideExpression);
|
|
130
|
+
const left = (0, utils_1.cast)(context.transformExpression(lhs), lua.isAssignmentLeftHandSideExpression);
|
|
131
131
|
const right = context.transformExpression(rhs);
|
|
132
132
|
const [objExpression, indexExpression] = parseAccessExpressionWithEvaluationEffects(context, lhs);
|
|
133
133
|
if (objExpression && indexExpression) {
|
|
@@ -144,7 +144,7 @@ function transformCompoundAssignmentStatement(context, node, lhs, rhs, operator)
|
|
|
144
144
|
...transformSetterSkippingCompoundAssignment(context, accessExpression, operator, rhs, node),
|
|
145
145
|
];
|
|
146
146
|
}
|
|
147
|
-
const operatorExpression = binary_expression_1.transformBinaryOperation(context, accessExpression, right, operator, node);
|
|
147
|
+
const operatorExpression = (0, binary_expression_1.transformBinaryOperation)(context, accessExpression, right, operator, node);
|
|
148
148
|
const assignStatement = lua.createAssignmentStatement(accessExpression, operatorExpression);
|
|
149
149
|
return [objAndIndexDeclaration, assignStatement];
|
|
150
150
|
}
|
|
@@ -155,8 +155,8 @@ function transformCompoundAssignmentStatement(context, node, lhs, rhs, operator)
|
|
|
155
155
|
}
|
|
156
156
|
// Simple statements
|
|
157
157
|
// ${left} = ${left} ${replacementOperator} ${right}
|
|
158
|
-
const operatorExpression = binary_expression_1.transformBinaryOperation(context, left, right, operator, node);
|
|
159
|
-
return assignments_1.transformAssignment(context, lhs, operatorExpression);
|
|
158
|
+
const operatorExpression = (0, binary_expression_1.transformBinaryOperation)(context, left, right, operator, node);
|
|
159
|
+
return (0, assignments_1.transformAssignment)(context, lhs, operatorExpression);
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
162
|
exports.transformCompoundAssignmentStatement = transformCompoundAssignmentStatement;
|
|
@@ -178,7 +178,7 @@ function transformSetterSkippingCompoundAssignment(context, lhs, operator, rhs,
|
|
|
178
178
|
condition = lua.createBinaryExpression(lhs, lua.createNilLiteral(), lua.SyntaxKind.EqualityOperator);
|
|
179
179
|
}
|
|
180
180
|
else {
|
|
181
|
-
utils_1.assertNever(operator);
|
|
181
|
+
(0, utils_1.assertNever)(operator);
|
|
182
182
|
}
|
|
183
183
|
// if condition then lhs = rhs end
|
|
184
184
|
return [
|
|
@@ -13,7 +13,7 @@ function isArrayLength(context, expression) {
|
|
|
13
13
|
return false;
|
|
14
14
|
}
|
|
15
15
|
const type = context.checker.getTypeAtLocation(expression.expression);
|
|
16
|
-
if (!typescript_1.isArrayType(context, type)) {
|
|
16
|
+
if (!(0, typescript_1.isArrayType)(context, type)) {
|
|
17
17
|
return false;
|
|
18
18
|
}
|
|
19
19
|
const name = ts.isPropertyAccessExpression(expression)
|
|
@@ -49,8 +49,8 @@ function transformArrayLiteralAssignmentPattern(context, node, root) {
|
|
|
49
49
|
const assignedVariable = lua.createIdentifier("____bindingAssignmentValue");
|
|
50
50
|
const assignedVariableDeclaration = lua.createVariableDeclarationStatement(assignedVariable, indexedRoot);
|
|
51
51
|
const nilCondition = lua.createBinaryExpression(assignedVariable, lua.createNilLiteral(), lua.SyntaxKind.EqualityOperator);
|
|
52
|
-
const defaultAssignmentStatements = assignments_1.transformAssignment(context, element.left, context.transformExpression(element.right));
|
|
53
|
-
const elseAssignmentStatements = assignments_1.transformAssignment(context, element.left, assignedVariable);
|
|
52
|
+
const defaultAssignmentStatements = (0, assignments_1.transformAssignment)(context, element.left, context.transformExpression(element.right));
|
|
53
|
+
const elseAssignmentStatements = (0, assignments_1.transformAssignment)(context, element.left, assignedVariable);
|
|
54
54
|
const ifBlock = lua.createBlock(defaultAssignmentStatements);
|
|
55
55
|
const elseBlock = lua.createBlock(elseAssignmentStatements);
|
|
56
56
|
const ifStatement = lua.createIfStatement(nilCondition, ifBlock, elseBlock, node);
|
|
@@ -58,14 +58,14 @@ function transformArrayLiteralAssignmentPattern(context, node, root) {
|
|
|
58
58
|
case ts.SyntaxKind.Identifier:
|
|
59
59
|
case ts.SyntaxKind.PropertyAccessExpression:
|
|
60
60
|
case ts.SyntaxKind.ElementAccessExpression:
|
|
61
|
-
return assignments_1.transformAssignment(context, element, indexedRoot);
|
|
61
|
+
return (0, assignments_1.transformAssignment)(context, element, indexedRoot);
|
|
62
62
|
case ts.SyntaxKind.SpreadElement:
|
|
63
63
|
if (index !== node.elements.length - 1) {
|
|
64
64
|
// TypeScript error
|
|
65
65
|
return [];
|
|
66
66
|
}
|
|
67
|
-
const restElements = lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArraySlice, undefined, root, lua.createNumericLiteral(index));
|
|
68
|
-
return assignments_1.transformAssignment(context, element.expression, restElements);
|
|
67
|
+
const restElements = (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArraySlice, undefined, root, lua.createNumericLiteral(index));
|
|
68
|
+
return (0, assignments_1.transformAssignment)(context, element.expression, restElements);
|
|
69
69
|
case ts.SyntaxKind.OmittedExpression:
|
|
70
70
|
return [];
|
|
71
71
|
default:
|
|
@@ -93,23 +93,23 @@ function transformObjectLiteralAssignmentPattern(context, node, root) {
|
|
|
93
93
|
// TypeScript error
|
|
94
94
|
break;
|
|
95
95
|
default:
|
|
96
|
-
utils_1.assertNever(property);
|
|
96
|
+
(0, utils_1.assertNever)(property);
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
return result;
|
|
100
100
|
}
|
|
101
101
|
function transformShorthandPropertyAssignment(context, node, root) {
|
|
102
102
|
const result = [];
|
|
103
|
-
const assignmentVariableName = assignments_1.transformAssignmentLeftHandSideExpression(context, node.name);
|
|
103
|
+
const assignmentVariableName = (0, assignments_1.transformAssignmentLeftHandSideExpression)(context, node.name);
|
|
104
104
|
const extractionIndex = lua.createStringLiteral(node.name.text);
|
|
105
|
-
const variableExtractionAssignmentStatements = assignments_1.transformAssignment(context, node.name, lua.createTableIndexExpression(root, extractionIndex));
|
|
105
|
+
const variableExtractionAssignmentStatements = (0, assignments_1.transformAssignment)(context, node.name, lua.createTableIndexExpression(root, extractionIndex));
|
|
106
106
|
result.push(...variableExtractionAssignmentStatements);
|
|
107
107
|
const defaultInitializer = node.objectAssignmentInitializer
|
|
108
108
|
? context.transformExpression(node.objectAssignmentInitializer)
|
|
109
109
|
: undefined;
|
|
110
110
|
if (defaultInitializer) {
|
|
111
111
|
const nilCondition = lua.createBinaryExpression(assignmentVariableName, lua.createNilLiteral(), lua.SyntaxKind.EqualityOperator);
|
|
112
|
-
const assignmentStatements = assignments_1.transformAssignment(context, node.name, defaultInitializer);
|
|
112
|
+
const assignmentStatements = (0, assignments_1.transformAssignment)(context, node.name, defaultInitializer);
|
|
113
113
|
const ifBlock = lua.createBlock(assignmentStatements);
|
|
114
114
|
result.push(lua.createIfStatement(nilCondition, ifBlock, undefined, node));
|
|
115
115
|
}
|
|
@@ -117,8 +117,8 @@ function transformShorthandPropertyAssignment(context, node, root) {
|
|
|
117
117
|
}
|
|
118
118
|
function transformPropertyAssignment(context, node, root) {
|
|
119
119
|
const result = [];
|
|
120
|
-
if (typescript_1.isAssignmentPattern(node.initializer)) {
|
|
121
|
-
const propertyAccessString = literal_1.transformPropertyName(context, node.name);
|
|
120
|
+
if ((0, typescript_1.isAssignmentPattern)(node.initializer)) {
|
|
121
|
+
const propertyAccessString = (0, literal_1.transformPropertyName)(context, node.name);
|
|
122
122
|
const newRootAccess = lua.createTableIndexExpression(root, propertyAccessString);
|
|
123
123
|
if (ts.isObjectLiteralExpression(node.initializer)) {
|
|
124
124
|
return transformObjectLiteralAssignmentPattern(context, node.initializer, newRootAccess);
|
|
@@ -128,14 +128,14 @@ function transformPropertyAssignment(context, node, root) {
|
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
130
|
const leftExpression = ts.isBinaryExpression(node.initializer) ? node.initializer.left : node.initializer;
|
|
131
|
-
const variableToExtract = literal_1.transformPropertyName(context, node.name);
|
|
131
|
+
const variableToExtract = (0, literal_1.transformPropertyName)(context, node.name);
|
|
132
132
|
const extractingExpression = lua.createTableIndexExpression(root, variableToExtract);
|
|
133
|
-
const destructureAssignmentStatements = assignments_1.transformAssignment(context, leftExpression, extractingExpression);
|
|
133
|
+
const destructureAssignmentStatements = (0, assignments_1.transformAssignment)(context, leftExpression, extractingExpression);
|
|
134
134
|
result.push(...destructureAssignmentStatements);
|
|
135
135
|
if (ts.isBinaryExpression(node.initializer)) {
|
|
136
136
|
const assignmentLeftHandSide = context.transformExpression(node.initializer.left);
|
|
137
137
|
const nilCondition = lua.createBinaryExpression(assignmentLeftHandSide, lua.createNilLiteral(), lua.SyntaxKind.EqualityOperator);
|
|
138
|
-
const ifBlock = lua.createBlock(assignments_1.transformAssignmentStatement(context, node.initializer));
|
|
138
|
+
const ifBlock = lua.createBlock((0, assignments_1.transformAssignmentStatement)(context, node.initializer));
|
|
139
139
|
result.push(lua.createIfStatement(nilCondition, ifBlock, undefined, node));
|
|
140
140
|
}
|
|
141
141
|
return result;
|
|
@@ -152,7 +152,7 @@ function transformSpreadAssignment(context, node, root, properties) {
|
|
|
152
152
|
usedProperties.push(lua.createTableFieldExpression(lua.createBooleanLiteral(true), name));
|
|
153
153
|
}
|
|
154
154
|
}
|
|
155
|
-
const extractingExpression = lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ObjectRest, undefined, root, lua.createTableExpression(usedProperties));
|
|
156
|
-
return assignments_1.transformAssignment(context, node.expression, extractingExpression);
|
|
155
|
+
const extractingExpression = (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ObjectRest, undefined, root, lua.createTableExpression(usedProperties));
|
|
156
|
+
return (0, assignments_1.transformAssignment)(context, node.expression, extractingExpression);
|
|
157
157
|
}
|
|
158
158
|
//# sourceMappingURL=destructuring-assignments.js.map
|
|
@@ -31,11 +31,11 @@ const simpleOperatorsToLua = {
|
|
|
31
31
|
[ts.SyntaxKind.ExclamationEqualsEqualsToken]: lua.SyntaxKind.InequalityOperator,
|
|
32
32
|
};
|
|
33
33
|
function transformBinaryOperation(context, left, right, operator, node) {
|
|
34
|
-
if (bit_1.isBitOperator(operator)) {
|
|
35
|
-
return bit_1.transformBinaryBitOperation(context, node, left, right, operator);
|
|
34
|
+
if ((0, bit_1.isBitOperator)(operator)) {
|
|
35
|
+
return (0, bit_1.transformBinaryBitOperation)(context, node, left, right, operator);
|
|
36
36
|
}
|
|
37
37
|
if (operator === ts.SyntaxKind.QuestionQuestionToken) {
|
|
38
|
-
utils_1.assert(ts.isBinaryExpression(node));
|
|
38
|
+
(0, utils_1.assert)(ts.isBinaryExpression(node));
|
|
39
39
|
return transformNullishCoalescingExpression(context, node, left, right);
|
|
40
40
|
}
|
|
41
41
|
let luaOperator = simpleOperatorsToLua[operator];
|
|
@@ -43,11 +43,11 @@ function transformBinaryOperation(context, left, right, operator, node) {
|
|
|
43
43
|
if (operator === ts.SyntaxKind.PlusToken && ts.isBinaryExpression(node)) {
|
|
44
44
|
const typeLeft = context.checker.getTypeAtLocation(node.left);
|
|
45
45
|
const typeRight = context.checker.getTypeAtLocation(node.right);
|
|
46
|
-
const isLeftString = typescript_1.isStringType(context, typeLeft);
|
|
47
|
-
const isRightString = typescript_1.isStringType(context, typeRight);
|
|
46
|
+
const isLeftString = (0, typescript_1.isStringType)(context, typeLeft);
|
|
47
|
+
const isRightString = (0, typescript_1.isStringType)(context, typeRight);
|
|
48
48
|
if (isLeftString || isRightString) {
|
|
49
|
-
left = isLeftString ? left : lua_ast_1.wrapInToStringForConcat(left);
|
|
50
|
-
right = isRightString ? right : lua_ast_1.wrapInToStringForConcat(right);
|
|
49
|
+
left = isLeftString ? left : (0, lua_ast_1.wrapInToStringForConcat)(left);
|
|
50
|
+
right = isRightString ? right : (0, lua_ast_1.wrapInToStringForConcat)(right);
|
|
51
51
|
luaOperator = lua.SyntaxKind.ConcatOperator;
|
|
52
52
|
}
|
|
53
53
|
}
|
|
@@ -56,17 +56,17 @@ function transformBinaryOperation(context, left, right, operator, node) {
|
|
|
56
56
|
exports.transformBinaryOperation = transformBinaryOperation;
|
|
57
57
|
const transformBinaryExpression = (node, context) => {
|
|
58
58
|
const operator = node.operatorToken.kind;
|
|
59
|
-
const typeOfResult = typeof_1.transformTypeOfBinaryExpression(context, node);
|
|
59
|
+
const typeOfResult = (0, typeof_1.transformTypeOfBinaryExpression)(context, node);
|
|
60
60
|
if (typeOfResult) {
|
|
61
61
|
return typeOfResult;
|
|
62
62
|
}
|
|
63
|
-
if (compound_1.isCompoundAssignmentToken(operator)) {
|
|
64
|
-
const token = compound_1.unwrapCompoundAssignmentToken(operator);
|
|
65
|
-
return compound_1.transformCompoundAssignmentExpression(context, node, node.left, node.right, token, false);
|
|
63
|
+
if ((0, compound_1.isCompoundAssignmentToken)(operator)) {
|
|
64
|
+
const token = (0, compound_1.unwrapCompoundAssignmentToken)(operator);
|
|
65
|
+
return (0, compound_1.transformCompoundAssignmentExpression)(context, node, node.left, node.right, token, false);
|
|
66
66
|
}
|
|
67
67
|
switch (operator) {
|
|
68
68
|
case ts.SyntaxKind.EqualsToken:
|
|
69
|
-
return assignments_1.transformAssignmentExpression(context, node);
|
|
69
|
+
return (0, assignments_1.transformAssignmentExpression)(context, node);
|
|
70
70
|
case ts.SyntaxKind.InKeyword: {
|
|
71
71
|
const lhs = context.transformExpression(node.left);
|
|
72
72
|
const rhs = context.transformExpression(node.right);
|
|
@@ -77,13 +77,13 @@ const transformBinaryExpression = (node, context) => {
|
|
|
77
77
|
const lhs = context.transformExpression(node.left);
|
|
78
78
|
const rhs = context.transformExpression(node.right);
|
|
79
79
|
const rhsType = context.checker.getTypeAtLocation(node.right);
|
|
80
|
-
if (typescript_1.isStandardLibraryType(context, rhsType, "ObjectConstructor")) {
|
|
81
|
-
return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.InstanceOfObject, node, lhs);
|
|
80
|
+
if ((0, typescript_1.isStandardLibraryType)(context, rhsType, "ObjectConstructor")) {
|
|
81
|
+
return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.InstanceOfObject, node, lhs);
|
|
82
82
|
}
|
|
83
|
-
return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.InstanceOf, node, lhs, rhs);
|
|
83
|
+
return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.InstanceOf, node, lhs, rhs);
|
|
84
84
|
}
|
|
85
85
|
case ts.SyntaxKind.CommaToken: {
|
|
86
|
-
return transform_1.transformToImmediatelyInvokedFunctionExpression(context, () => ({
|
|
86
|
+
return (0, transform_1.transformToImmediatelyInvokedFunctionExpression)(context, () => ({
|
|
87
87
|
statements: context.transformStatements(ts.factory.createExpressionStatement(node.left)),
|
|
88
88
|
result: context.transformExpression(node.right),
|
|
89
89
|
}), node);
|
|
@@ -98,13 +98,13 @@ function transformBinaryExpressionStatement(context, node) {
|
|
|
98
98
|
if (!ts.isBinaryExpression(expression))
|
|
99
99
|
return;
|
|
100
100
|
const operator = expression.operatorToken.kind;
|
|
101
|
-
if (compound_1.isCompoundAssignmentToken(operator)) {
|
|
101
|
+
if ((0, compound_1.isCompoundAssignmentToken)(operator)) {
|
|
102
102
|
// +=, -=, etc...
|
|
103
|
-
const token = compound_1.unwrapCompoundAssignmentToken(operator);
|
|
104
|
-
return compound_1.transformCompoundAssignmentStatement(context, expression, expression.left, expression.right, token);
|
|
103
|
+
const token = (0, compound_1.unwrapCompoundAssignmentToken)(operator);
|
|
104
|
+
return (0, compound_1.transformCompoundAssignmentStatement)(context, expression, expression.left, expression.right, token);
|
|
105
105
|
}
|
|
106
106
|
else if (operator === ts.SyntaxKind.EqualsToken) {
|
|
107
|
-
return assignments_1.transformAssignmentStatement(context, expression);
|
|
107
|
+
return (0, assignments_1.transformAssignmentStatement)(context, expression);
|
|
108
108
|
}
|
|
109
109
|
else if (operator === ts.SyntaxKind.CommaToken) {
|
|
110
110
|
const statements = [
|
|
@@ -120,7 +120,7 @@ function transformNullishCoalescingExpression(context, node, transformedLeft, tr
|
|
|
120
120
|
// Check if we can take a shortcut to 'lhs or rhs' if the left-hand side cannot be 'false'.
|
|
121
121
|
const typeCanBeFalse = (type) => (type.flags & (ts.TypeFlags.Any | ts.TypeFlags.Unknown | ts.TypeFlags.Boolean)) !== 0 ||
|
|
122
122
|
(type.flags & ts.TypeFlags.BooleanLiteral & ts.TypeFlags.PossiblyFalsy) !== 0;
|
|
123
|
-
if (typescript_1.typeCanSatisfy(context, lhsType, typeCanBeFalse)) {
|
|
123
|
+
if ((0, typescript_1.typeCanSatisfy)(context, lhsType, typeCanBeFalse)) {
|
|
124
124
|
// lhs can be false, transform to IIFE
|
|
125
125
|
const lhsIdentifier = lua.createIdentifier("____lhs");
|
|
126
126
|
const nilComparison = lua.createBinaryExpression(lua.cloneIdentifier(lhsIdentifier), lua.createNilLiteral(), lua.SyntaxKind.EqualityOperator);
|
|
@@ -9,16 +9,16 @@ function transformBlockOrStatement(context, statement) {
|
|
|
9
9
|
}
|
|
10
10
|
exports.transformBlockOrStatement = transformBlockOrStatement;
|
|
11
11
|
function transformScopeBlock(context, node, scopeType) {
|
|
12
|
-
scope_1.pushScope(context, scopeType);
|
|
13
|
-
const statements = scope_1.performHoisting(context, context.transformStatements(node.statements));
|
|
14
|
-
const scope = scope_1.popScope(context);
|
|
12
|
+
(0, scope_1.pushScope)(context, scopeType);
|
|
13
|
+
const statements = (0, scope_1.performHoisting)(context, context.transformStatements(node.statements));
|
|
14
|
+
const scope = (0, scope_1.popScope)(context);
|
|
15
15
|
return [lua.createBlock(statements, node), scope];
|
|
16
16
|
}
|
|
17
17
|
exports.transformScopeBlock = transformScopeBlock;
|
|
18
18
|
const transformBlock = (node, context) => {
|
|
19
|
-
scope_1.pushScope(context, scope_1.ScopeType.Block);
|
|
20
|
-
const statements = scope_1.performHoisting(context, context.transformStatements(node.statements));
|
|
21
|
-
scope_1.popScope(context);
|
|
19
|
+
(0, scope_1.pushScope)(context, scope_1.ScopeType.Block);
|
|
20
|
+
const statements = (0, scope_1.performHoisting)(context, context.transformStatements(node.statements));
|
|
21
|
+
(0, scope_1.popScope)(context);
|
|
22
22
|
return lua.createDoStatement(statements, node);
|
|
23
23
|
};
|
|
24
24
|
exports.transformBlock = transformBlock;
|
|
@@ -6,21 +6,16 @@ const lua = require("../../LuaAST");
|
|
|
6
6
|
const diagnostics_1 = require("../utils/diagnostics");
|
|
7
7
|
const scope_1 = require("../utils/scope");
|
|
8
8
|
const transformBreakStatement = (breakStatement, context) => {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
return lua.createGotoStatement(`____switch${breakableScope.id}_end`);
|
|
12
|
-
}
|
|
13
|
-
else {
|
|
14
|
-
return lua.createBreakStatement(breakStatement);
|
|
15
|
-
}
|
|
9
|
+
void context;
|
|
10
|
+
return lua.createBreakStatement(breakStatement);
|
|
16
11
|
};
|
|
17
12
|
exports.transformBreakStatement = transformBreakStatement;
|
|
18
13
|
const transformContinueStatement = (statement, context) => {
|
|
19
14
|
var _a;
|
|
20
15
|
if (context.luaTarget === CompilerOptions_1.LuaTarget.Universal || context.luaTarget === CompilerOptions_1.LuaTarget.Lua51) {
|
|
21
|
-
context.diagnostics.push(diagnostics_1.unsupportedForTarget(statement, "Continue statement", CompilerOptions_1.LuaTarget.Lua51));
|
|
16
|
+
context.diagnostics.push((0, diagnostics_1.unsupportedForTarget)(statement, "Continue statement", CompilerOptions_1.LuaTarget.Lua51));
|
|
22
17
|
}
|
|
23
|
-
const scope = scope_1.findScope(context, scope_1.ScopeType.Loop);
|
|
18
|
+
const scope = (0, scope_1.findScope)(context, scope_1.ScopeType.Loop);
|
|
24
19
|
if (scope) {
|
|
25
20
|
scope.loopContinued = true;
|
|
26
21
|
}
|