typescript-to-lua 1.0.0 → 1.2.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 +34 -0
- package/dist/CompilerOptions.d.ts +4 -3
- package/dist/LuaAST.d.ts +1 -0
- package/dist/LuaAST.js +14 -6
- package/dist/LuaLib.d.ts +4 -3
- package/dist/LuaLib.js +5 -4
- package/dist/LuaPrinter.d.ts +15 -4
- package/dist/LuaPrinter.js +79 -27
- 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/ArrayFlat.lua +1 -1
- package/dist/lualib/ArrayFlatMap.lua +1 -1
- package/dist/lualib/ArrayIsArray.lua +1 -1
- package/dist/lualib/ArrayReduce.lua +7 -1
- package/dist/lualib/ArrayReduceRight.lua +7 -1
- package/dist/lualib/ArraySetLength.lua +1 -1
- package/dist/lualib/ArraySplice.lua +5 -5
- package/dist/lualib/Await.lua +39 -19
- package/dist/lualib/CloneDescriptor.lua +8 -8
- package/dist/lualib/Decorate.lua +1 -1
- package/dist/lualib/DelegatedYield.lua +1 -3
- package/dist/lualib/Delete.lua +6 -6
- package/dist/lualib/Error.lua +47 -44
- package/dist/lualib/Generator.lua +1 -5
- package/dist/lualib/InstanceOf.lua +1 -1
- package/dist/lualib/InstanceOfObject.lua +1 -1
- package/dist/lualib/Map.lua +130 -134
- package/dist/lualib/Number.lua +1 -1
- package/dist/lualib/NumberIsFinite.lua +1 -1
- package/dist/lualib/NumberToString.lua +3 -5
- package/dist/lualib/ObjectDefineProperty.lua +40 -8
- package/dist/lualib/ParseFloat.lua +9 -5
- package/dist/lualib/ParseInt.lua +15 -3
- package/dist/lualib/Promise.lua +36 -26
- package/dist/lualib/Set.lua +119 -123
- package/dist/lualib/SetDescriptor.lua +7 -1
- package/dist/lualib/SourceMapTraceBack.lua +19 -9
- package/dist/lualib/SparseArrayNew.lua +5 -0
- package/dist/lualib/SparseArrayPush.lua +9 -0
- package/dist/lualib/SparseArraySpread.lua +4 -0
- package/dist/lualib/StringAccess.lua +1 -1
- package/dist/lualib/StringCharCodeAt.lua +1 -1
- package/dist/lualib/StringEndsWith.lua +2 -2
- package/dist/lualib/StringPadEnd.lua +2 -2
- package/dist/lualib/StringPadStart.lua +2 -2
- package/dist/lualib/StringReplace.lua +12 -11
- package/dist/lualib/StringReplaceAll.lua +35 -0
- package/dist/lualib/StringSlice.lua +2 -2
- package/dist/lualib/StringSplit.lua +3 -3
- package/dist/lualib/StringStartsWith.lua +1 -1
- package/dist/lualib/StringSubstr.lua +1 -1
- package/dist/lualib/StringSubstring.lua +2 -2
- package/dist/lualib/Symbol.lua +3 -5
- package/dist/lualib/WeakMap.lua +40 -42
- package/dist/lualib/WeakSet.lua +36 -38
- package/dist/lualib/lualib_bundle.lua +705 -586
- package/dist/transformation/builtins/array.js +29 -30
- package/dist/transformation/builtins/console.js +2 -2
- package/dist/transformation/builtins/function.js +9 -10
- package/dist/transformation/builtins/global.js +8 -8
- package/dist/transformation/builtins/index.d.ts +1 -1
- package/dist/transformation/builtins/index.js +69 -36
- package/dist/transformation/builtins/math.js +4 -4
- package/dist/transformation/builtins/number.js +7 -7
- package/dist/transformation/builtins/object.d.ts +2 -1
- package/dist/transformation/builtins/object.js +12 -13
- package/dist/transformation/builtins/promise.js +9 -9
- package/dist/transformation/builtins/string.js +32 -31
- package/dist/transformation/builtins/symbol.js +3 -3
- package/dist/transformation/context/context.d.ts +12 -0
- package/dist/transformation/context/context.js +105 -6
- package/dist/transformation/index.js +1 -1
- package/dist/transformation/utils/annotations.d.ts +1 -3
- package/dist/transformation/utils/annotations.js +0 -2
- package/dist/transformation/utils/assignment-validation.js +8 -7
- package/dist/transformation/utils/diagnostics.d.ts +6 -0
- package/dist/transformation/utils/diagnostics.js +7 -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 +8 -8
- package/dist/transformation/utils/lua-ast.d.ts +0 -1
- package/dist/transformation/utils/lua-ast.js +25 -35
- package/dist/transformation/utils/lualib.js +1 -1
- package/dist/transformation/utils/preceding-statements.d.ts +3 -0
- package/dist/transformation/utils/preceding-statements.js +11 -0
- package/dist/transformation/utils/safe-names.js +5 -5
- package/dist/transformation/utils/scope.d.ts +7 -0
- package/dist/transformation/utils/scope.js +77 -40
- package/dist/transformation/utils/symbols.js +6 -6
- package/dist/transformation/utils/typescript/index.d.ts +1 -0
- package/dist/transformation/utils/typescript/index.js +16 -1
- package/dist/transformation/utils/typescript/nodes.d.ts +2 -0
- package/dist/transformation/utils/typescript/nodes.js +21 -1
- package/dist/transformation/visitors/access.d.ts +3 -0
- package/dist/transformation/visitors/access.js +74 -47
- package/dist/transformation/visitors/async-await.js +5 -4
- package/dist/transformation/visitors/binary-expression/assignments.d.ts +3 -2
- package/dist/transformation/visitors/binary-expression/assignments.js +86 -77
- package/dist/transformation/visitors/binary-expression/bit.js +4 -4
- package/dist/transformation/visitors/binary-expression/compound.d.ts +5 -4
- package/dist/transformation/visitors/binary-expression/compound.js +69 -71
- package/dist/transformation/visitors/binary-expression/destructuring-assignments.d.ts +2 -2
- package/dist/transformation/visitors/binary-expression/destructuring-assignments.js +65 -36
- package/dist/transformation/visitors/binary-expression/index.d.ts +3 -1
- package/dist/transformation/visitors/binary-expression/index.js +84 -40
- package/dist/transformation/visitors/block.js +6 -6
- package/dist/transformation/visitors/break-continue.js +4 -9
- package/dist/transformation/visitors/call.d.ts +3 -2
- package/dist/transformation/visitors/call.js +130 -143
- package/dist/transformation/visitors/class/decorators.js +3 -3
- package/dist/transformation/visitors/class/index.js +43 -39
- 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 +14 -16
- package/dist/transformation/visitors/class/setup.js +11 -11
- package/dist/transformation/visitors/class/utils.js +2 -2
- package/dist/transformation/visitors/conditional.js +34 -20
- package/dist/transformation/visitors/delete.js +8 -4
- package/dist/transformation/visitors/enum.js +8 -8
- package/dist/transformation/visitors/errors.js +30 -30
- package/dist/transformation/visitors/expression-list.d.ts +7 -0
- package/dist/transformation/visitors/expression-list.js +120 -0
- package/dist/transformation/visitors/expression-statement.js +10 -6
- package/dist/transformation/visitors/function.js +30 -32
- package/dist/transformation/visitors/identifier.js +26 -22
- package/dist/transformation/visitors/index.js +2 -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 +3 -3
- 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 +87 -57
- package/dist/transformation/visitors/loops/do-while.js +35 -9
- 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 +28 -8
- package/dist/transformation/visitors/loops/utils.d.ts +1 -0
- package/dist/transformation/visitors/loops/utils.js +21 -10
- package/dist/transformation/visitors/modules/export.js +14 -15
- package/dist/transformation/visitors/modules/import.js +10 -10
- package/dist/transformation/visitors/namespace.js +13 -13
- package/dist/transformation/visitors/optional-chaining.d.ts +16 -0
- package/dist/transformation/visitors/optional-chaining.js +172 -0
- package/dist/transformation/visitors/return.d.ts +1 -0
- package/dist/transformation/visitors/return.js +40 -26
- package/dist/transformation/visitors/sourceFile.js +12 -9
- package/dist/transformation/visitors/spread.js +11 -11
- package/dist/transformation/visitors/switch.js +152 -30
- package/dist/transformation/visitors/template.js +10 -7
- package/dist/transformation/visitors/typeof.js +4 -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 +46 -32
- package/dist/transformation/visitors/void.d.ts +6 -0
- package/dist/transformation/visitors/void.js +20 -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 +26 -14
- package/dist/transpilation/transformers.js +45 -25
- package/dist/transpilation/transpile.js +6 -6
- package/dist/transpilation/transpiler.js +8 -8
- package/dist/transpilation/utils.js +5 -3
- package/dist/tstl.js +8 -8
- package/dist/utils.js +2 -2
- package/package.json +15 -12
- package/dist/lualib/OptionalChainAccess.lua +0 -6
- package/dist/lualib/OptionalFunctionCall.lua +0 -6
- package/dist/lualib/OptionalMethodCall.lua +0 -11
- package/dist/transformation/utils/transform.d.ts +0 -8
- package/dist/transformation/utils/transform.js +0 -14
- 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,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.transformCallExpression = exports.transformContextualCallExpression = exports.transformArguments = exports.
|
|
3
|
+
exports.transformCallExpression = exports.transformContextualCallExpression = exports.transformCallAndArguments = exports.transformArguments = exports.validateArguments = void 0;
|
|
4
4
|
const ts = require("typescript");
|
|
5
5
|
const lua = require("../../LuaAST");
|
|
6
6
|
const builtins_1 = require("../builtins");
|
|
@@ -8,7 +8,6 @@ const annotations_1 = require("../utils/annotations");
|
|
|
8
8
|
const assignment_validation_1 = require("../utils/assignment-validation");
|
|
9
9
|
const function_context_1 = require("../utils/function-context");
|
|
10
10
|
const lua_ast_1 = require("../utils/lua-ast");
|
|
11
|
-
const lualib_1 = require("../utils/lualib");
|
|
12
11
|
const safe_names_1 = require("../utils/safe-names");
|
|
13
12
|
const typescript_1 = require("../utils/typescript");
|
|
14
13
|
const access_1 = require("./access");
|
|
@@ -16,116 +15,97 @@ const multi_1 = require("./language-extensions/multi");
|
|
|
16
15
|
const operators_1 = require("./language-extensions/operators");
|
|
17
16
|
const table_1 = require("./language-extensions/table");
|
|
18
17
|
const diagnostics_1 = require("../utils/diagnostics");
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
for (const [index, expression] of expressions.entries()) {
|
|
33
|
-
if (ts.isSpreadElement(expression)) {
|
|
34
|
-
chunks.push([expression]);
|
|
35
|
-
const next = expressions[index + 1];
|
|
36
|
-
if (next && !ts.isSpreadElement(next)) {
|
|
37
|
-
chunks.push([]);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
let lastChunk = chunks[chunks.length - 1];
|
|
42
|
-
if (!lastChunk) {
|
|
43
|
-
lastChunk = [];
|
|
44
|
-
chunks.push(lastChunk);
|
|
45
|
-
}
|
|
46
|
-
lastChunk.push(expression);
|
|
18
|
+
const expression_list_1 = require("./expression-list");
|
|
19
|
+
const preceding_statements_1 = require("../utils/preceding-statements");
|
|
20
|
+
const optional_chaining_1 = require("./optional-chaining");
|
|
21
|
+
function validateArguments(context, params, signature) {
|
|
22
|
+
if (!signature || signature.parameters.length < params.length) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
for (const [index, param] of params.entries()) {
|
|
26
|
+
const signatureParameter = signature.parameters[index];
|
|
27
|
+
const paramType = context.checker.getTypeAtLocation(param);
|
|
28
|
+
if (signatureParameter.valueDeclaration !== undefined) {
|
|
29
|
+
const signatureType = context.checker.getTypeAtLocation(signatureParameter.valueDeclaration);
|
|
30
|
+
(0, assignment_validation_1.validateAssignment)(context, param, paramType, signatureType, signatureParameter.name);
|
|
47
31
|
}
|
|
48
32
|
}
|
|
49
|
-
return chunks.map(chunk => lua_ast_1.wrapInTable(...chunk.map(expression => context.transformExpression(expression))));
|
|
50
33
|
}
|
|
51
|
-
|
|
52
|
-
const [preSpreadExpressions, postSpreadExpressions] = getExpressionsBeforeAndAfterFirstSpread(expressions);
|
|
53
|
-
const transformedPreSpreadExpressions = preSpreadExpressions.map(a => context.transformExpression(a));
|
|
54
|
-
// Nothing special required
|
|
55
|
-
if (postSpreadExpressions.length === 0) {
|
|
56
|
-
return transformedPreSpreadExpressions;
|
|
57
|
-
}
|
|
58
|
-
// Only one spread element at the end? Will work as expected
|
|
59
|
-
if (postSpreadExpressions.length === 1) {
|
|
60
|
-
return [...transformedPreSpreadExpressions, context.transformExpression(postSpreadExpressions[0])];
|
|
61
|
-
}
|
|
62
|
-
// Use Array.concat and unpack the result of that as the last Expression
|
|
63
|
-
const concatArguments = transformSpreadableExpressionsIntoArrayConcatArguments(context, postSpreadExpressions);
|
|
64
|
-
const lastExpression = lua_ast_1.createUnpackCall(context, lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayConcat, undefined, ...concatArguments));
|
|
65
|
-
return [...transformedPreSpreadExpressions, lastExpression];
|
|
66
|
-
}
|
|
67
|
-
exports.flattenSpreadExpressions = flattenSpreadExpressions;
|
|
34
|
+
exports.validateArguments = validateArguments;
|
|
68
35
|
function transformArguments(context, params, signature, callContext) {
|
|
69
|
-
|
|
70
|
-
|
|
36
|
+
validateArguments(context, params, signature);
|
|
37
|
+
return (0, expression_list_1.transformExpressionList)(context, callContext ? [callContext, ...params] : params);
|
|
38
|
+
}
|
|
39
|
+
exports.transformArguments = transformArguments;
|
|
40
|
+
function transformCallWithArguments(context, callExpression, transformedArguments, argPrecedingStatements, callContext) {
|
|
41
|
+
let call = context.transformExpression(callExpression);
|
|
42
|
+
let transformedContext;
|
|
71
43
|
if (callContext) {
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
if (
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
const paramType = context.checker.getTypeAtLocation(param);
|
|
78
|
-
if (signatureParameter.valueDeclaration !== undefined) {
|
|
79
|
-
const signatureType = context.checker.getTypeAtLocation(signatureParameter.valueDeclaration);
|
|
80
|
-
assignment_validation_1.validateAssignment(context, param, paramType, signatureType, signatureParameter.name);
|
|
81
|
-
}
|
|
44
|
+
transformedContext = context.transformExpression(callContext);
|
|
45
|
+
}
|
|
46
|
+
if (argPrecedingStatements.length > 0) {
|
|
47
|
+
if (transformedContext) {
|
|
48
|
+
transformedContext = (0, expression_list_1.moveToPrecedingTemp)(context, transformedContext, callContext);
|
|
82
49
|
}
|
|
50
|
+
call = (0, expression_list_1.moveToPrecedingTemp)(context, call, callExpression);
|
|
51
|
+
context.addPrecedingStatements(argPrecedingStatements);
|
|
83
52
|
}
|
|
84
|
-
|
|
53
|
+
if (transformedContext) {
|
|
54
|
+
transformedArguments.unshift(transformedContext);
|
|
55
|
+
}
|
|
56
|
+
return [call, transformedArguments];
|
|
85
57
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
58
|
+
function transformCallAndArguments(context, callExpression, params, signature, callContext) {
|
|
59
|
+
const [argPrecedingStatements, transformedArguments] = (0, preceding_statements_1.transformInPrecedingStatementScope)(context, () => transformArguments(context, params, signature, callContext));
|
|
60
|
+
return transformCallWithArguments(context, callExpression, transformedArguments, argPrecedingStatements);
|
|
61
|
+
}
|
|
62
|
+
exports.transformCallAndArguments = transformCallAndArguments;
|
|
63
|
+
function transformElementAccessCall(context, left, transformedArguments, argPrecedingStatements) {
|
|
89
64
|
// Cache left-side if it has effects
|
|
90
|
-
//
|
|
91
|
-
const
|
|
92
|
-
? access_1.transformElementAccessArgument(context, left)
|
|
93
|
-
: lua.createStringLiteral(left.name.text);
|
|
94
|
-
const selfIdentifier = lua.createIdentifier("____self");
|
|
65
|
+
// local ____self = context; return ____self[argument](parameters);
|
|
66
|
+
const selfIdentifier = lua.createIdentifier(context.createTempName("self"));
|
|
95
67
|
const callContext = context.transformExpression(left.expression);
|
|
96
68
|
const selfAssignment = lua.createVariableDeclarationStatement(selfIdentifier, callContext);
|
|
97
|
-
|
|
98
|
-
const
|
|
99
|
-
|
|
69
|
+
context.addPrecedingStatements(selfAssignment);
|
|
70
|
+
const argument = ts.isElementAccessExpression(left)
|
|
71
|
+
? (0, access_1.transformElementAccessArgument)(context, left)
|
|
72
|
+
: lua.createStringLiteral(left.name.text);
|
|
73
|
+
let index = lua.createTableIndexExpression(selfIdentifier, argument);
|
|
74
|
+
if (argPrecedingStatements.length > 0) {
|
|
75
|
+
// Cache index in temp if args had preceding statements
|
|
76
|
+
index = (0, expression_list_1.moveToPrecedingTemp)(context, index);
|
|
77
|
+
context.addPrecedingStatements(argPrecedingStatements);
|
|
78
|
+
}
|
|
79
|
+
return lua.createCallExpression(index, [selfIdentifier, ...transformedArguments]);
|
|
100
80
|
}
|
|
101
81
|
function transformContextualCallExpression(context, node, args, signature) {
|
|
82
|
+
if (ts.isOptionalChain(node)) {
|
|
83
|
+
return (0, optional_chaining_1.transformOptionalChain)(context, node);
|
|
84
|
+
}
|
|
102
85
|
const left = ts.isCallExpression(node) ? node.expression : node.tag;
|
|
103
|
-
|
|
86
|
+
let [argPrecedingStatements, transformedArguments] = (0, preceding_statements_1.transformInPrecedingStatementScope)(context, () => transformArguments(context, args, signature));
|
|
87
|
+
if (ts.isPropertyAccessExpression(left) &&
|
|
88
|
+
ts.isIdentifier(left.name) &&
|
|
89
|
+
(0, safe_names_1.isValidLuaIdentifier)(left.name.text) &&
|
|
90
|
+
argPrecedingStatements.length === 0) {
|
|
104
91
|
// table:name()
|
|
105
92
|
const table = context.transformExpression(left.expression);
|
|
106
|
-
|
|
107
|
-
return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.OptionalMethodCall, node, table, lua.createStringLiteral(left.name.text, left.name), lua.createBooleanLiteral(node.questionDotToken !== undefined), // Require method is present if no ?.() call
|
|
108
|
-
...transformArguments(context, args, signature));
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
return lua.createMethodCallExpression(table, lua.createIdentifier(left.name.text, left.name), transformArguments(context, args, signature), node);
|
|
112
|
-
}
|
|
93
|
+
return lua.createMethodCallExpression(table, lua.createIdentifier(left.name.text, left.name), transformedArguments, node);
|
|
113
94
|
}
|
|
114
95
|
else if (ts.isElementAccessExpression(left) || ts.isPropertyAccessExpression(left)) {
|
|
115
|
-
if (typescript_1.isExpressionWithEvaluationEffect(left.expression)) {
|
|
116
|
-
return
|
|
96
|
+
if ((0, typescript_1.isExpressionWithEvaluationEffect)(left.expression)) {
|
|
97
|
+
return transformElementAccessCall(context, left, transformedArguments, argPrecedingStatements);
|
|
117
98
|
}
|
|
118
99
|
else {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
return lua.createCallExpression(expression, [callContext, ...transformedArguments]);
|
|
100
|
+
let expression;
|
|
101
|
+
[expression, transformedArguments] = transformCallWithArguments(context, left, transformedArguments, argPrecedingStatements, left.expression);
|
|
102
|
+
return lua.createCallExpression(expression, transformedArguments, node);
|
|
123
103
|
}
|
|
124
104
|
}
|
|
125
105
|
else if (ts.isIdentifier(left)) {
|
|
126
106
|
const callContext = context.isStrict ? ts.factory.createNull() : ts.factory.createIdentifier("_G");
|
|
127
|
-
|
|
128
|
-
|
|
107
|
+
let expression;
|
|
108
|
+
[expression, transformedArguments] = transformCallWithArguments(context, left, transformedArguments, argPrecedingStatements, callContext);
|
|
129
109
|
return lua.createCallExpression(expression, transformedArguments, node);
|
|
130
110
|
}
|
|
131
111
|
else {
|
|
@@ -141,76 +121,90 @@ function transformPropertyCall(context, node) {
|
|
|
141
121
|
return lua.createCallExpression(context.transformExpression(node.expression), parameters);
|
|
142
122
|
}
|
|
143
123
|
const signatureDeclaration = signature === null || signature === void 0 ? void 0 : signature.getDeclaration();
|
|
144
|
-
if (!signatureDeclaration || function_context_1.getDeclarationContextType(context, signatureDeclaration) !== function_context_1.ContextType.Void) {
|
|
124
|
+
if (!signatureDeclaration || (0, function_context_1.getDeclarationContextType)(context, signatureDeclaration) !== function_context_1.ContextType.Void) {
|
|
145
125
|
// table:name()
|
|
146
126
|
return transformContextualCallExpression(context, node, node.arguments, signature);
|
|
147
127
|
}
|
|
148
128
|
else {
|
|
149
129
|
// table.name()
|
|
150
|
-
const callPath = context.
|
|
151
|
-
|
|
152
|
-
if (ts.isOptionalChain(node)) {
|
|
153
|
-
return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.OptionalFunctionCall, node, callPath, ...parameters);
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
return lua.createCallExpression(callPath, parameters, node);
|
|
157
|
-
}
|
|
130
|
+
const [callPath, parameters] = transformCallAndArguments(context, node.expression, node.arguments, signature);
|
|
131
|
+
return lua.createCallExpression(callPath, parameters, node);
|
|
158
132
|
}
|
|
159
133
|
}
|
|
160
134
|
function transformElementCall(context, node) {
|
|
161
135
|
const signature = context.checker.getResolvedSignature(node);
|
|
162
136
|
const signatureDeclaration = signature === null || signature === void 0 ? void 0 : signature.getDeclaration();
|
|
163
|
-
if (!signatureDeclaration || function_context_1.getDeclarationContextType(context, signatureDeclaration) !== function_context_1.ContextType.Void) {
|
|
137
|
+
if (!signatureDeclaration || (0, function_context_1.getDeclarationContextType)(context, signatureDeclaration) !== function_context_1.ContextType.Void) {
|
|
164
138
|
// A contextual parameter must be given to this call expression
|
|
165
139
|
return transformContextualCallExpression(context, node, node.arguments, signature);
|
|
166
140
|
}
|
|
167
141
|
else {
|
|
168
142
|
// No context
|
|
169
|
-
const expression = context.
|
|
170
|
-
const parameters = transformArguments(context, node.arguments, signature);
|
|
143
|
+
const [expression, parameters] = transformCallAndArguments(context, node.expression, node.arguments, signature);
|
|
171
144
|
return lua.createCallExpression(expression, parameters);
|
|
172
145
|
}
|
|
173
146
|
}
|
|
174
147
|
const transformCallExpression = (node, context) => {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
148
|
+
if (ts.isOptionalChain(node)) {
|
|
149
|
+
return (0, optional_chaining_1.transformOptionalChain)(context, node);
|
|
150
|
+
}
|
|
151
|
+
const optionalContinuation = ts.isIdentifier(node.expression)
|
|
152
|
+
? (0, optional_chaining_1.getOptionalContinuationData)(node.expression)
|
|
153
|
+
: undefined;
|
|
154
|
+
const wrapResultInTable = (0, multi_1.isMultiReturnCall)(context, node) && (0, multi_1.shouldMultiReturnCallBeWrapped)(context, node);
|
|
155
|
+
const builtinResult = (0, builtins_1.transformBuiltinCallExpression)(context, node, optionalContinuation !== undefined);
|
|
178
156
|
if (builtinResult) {
|
|
179
|
-
|
|
157
|
+
if (optionalContinuation) {
|
|
158
|
+
context.diagnostics.push((0, diagnostics_1.unsupportedBuiltinOptionalCall)(node));
|
|
159
|
+
}
|
|
160
|
+
return wrapResultInTable ? (0, lua_ast_1.wrapInTable)(builtinResult) : builtinResult;
|
|
180
161
|
}
|
|
181
|
-
if (annotations_1.isTupleReturnCall(context, node)) {
|
|
182
|
-
context.diagnostics.push(diagnostics_1.annotationRemoved(node, annotations_1.AnnotationKind.TupleReturn));
|
|
162
|
+
if ((0, annotations_1.isTupleReturnCall)(context, node)) {
|
|
163
|
+
context.diagnostics.push((0, diagnostics_1.annotationRemoved)(node, annotations_1.AnnotationKind.TupleReturn));
|
|
183
164
|
}
|
|
184
|
-
if (operators_1.isOperatorMapping(context, node)) {
|
|
185
|
-
|
|
165
|
+
if ((0, operators_1.isOperatorMapping)(context, node)) {
|
|
166
|
+
if (optionalContinuation) {
|
|
167
|
+
context.diagnostics.push((0, diagnostics_1.unsupportedBuiltinOptionalCall)(node));
|
|
168
|
+
return lua.createNilLiteral();
|
|
169
|
+
}
|
|
170
|
+
return (0, operators_1.transformOperatorMappingExpression)(context, node);
|
|
186
171
|
}
|
|
187
|
-
if (table_1.isTableDeleteCall(context, node)) {
|
|
188
|
-
context.diagnostics.push(diagnostics_1.invalidTableDeleteExpression(node));
|
|
189
|
-
|
|
172
|
+
if ((0, table_1.isTableDeleteCall)(context, node)) {
|
|
173
|
+
context.diagnostics.push((0, diagnostics_1.invalidTableDeleteExpression)(node));
|
|
174
|
+
context.addPrecedingStatements((0, table_1.transformTableDeleteExpression)(context, node));
|
|
175
|
+
return lua.createNilLiteral();
|
|
190
176
|
}
|
|
191
|
-
if (table_1.isTableGetCall(context, node)) {
|
|
192
|
-
|
|
177
|
+
if ((0, table_1.isTableGetCall)(context, node)) {
|
|
178
|
+
if (optionalContinuation) {
|
|
179
|
+
context.diagnostics.push((0, diagnostics_1.unsupportedBuiltinOptionalCall)(node));
|
|
180
|
+
return lua.createNilLiteral();
|
|
181
|
+
}
|
|
182
|
+
return (0, table_1.transformTableGetExpression)(context, node);
|
|
193
183
|
}
|
|
194
|
-
if (table_1.isTableHasCall(context, node)) {
|
|
195
|
-
|
|
184
|
+
if ((0, table_1.isTableHasCall)(context, node)) {
|
|
185
|
+
if (optionalContinuation) {
|
|
186
|
+
context.diagnostics.push((0, diagnostics_1.unsupportedBuiltinOptionalCall)(node));
|
|
187
|
+
return lua.createNilLiteral();
|
|
188
|
+
}
|
|
189
|
+
return (0, table_1.transformTableHasExpression)(context, node);
|
|
196
190
|
}
|
|
197
|
-
if (table_1.isTableSetCall(context, node)) {
|
|
198
|
-
context.diagnostics.push(diagnostics_1.invalidTableSetExpression(node));
|
|
199
|
-
|
|
191
|
+
if ((0, table_1.isTableSetCall)(context, node)) {
|
|
192
|
+
context.diagnostics.push((0, diagnostics_1.invalidTableSetExpression)(node));
|
|
193
|
+
context.addPrecedingStatements((0, table_1.transformTableSetExpression)(context, node));
|
|
194
|
+
return lua.createNilLiteral();
|
|
200
195
|
}
|
|
201
196
|
if (ts.isPropertyAccessExpression(node.expression)) {
|
|
202
197
|
const ownerType = context.checker.getTypeAtLocation(node.expression.expression);
|
|
203
|
-
const annotations = annotations_1.getTypeAnnotations(ownerType);
|
|
198
|
+
const annotations = (0, annotations_1.getTypeAnnotations)(ownerType);
|
|
204
199
|
if (annotations.has(annotations_1.AnnotationKind.LuaTable)) {
|
|
205
|
-
context.diagnostics.push(diagnostics_1.annotationRemoved(node, annotations_1.AnnotationKind.LuaTable));
|
|
200
|
+
context.diagnostics.push((0, diagnostics_1.annotationRemoved)(node, annotations_1.AnnotationKind.LuaTable));
|
|
206
201
|
}
|
|
207
202
|
const result = transformPropertyCall(context, node);
|
|
208
|
-
|
|
209
|
-
return wrapResultInTable ? lua_ast_1.wrapInTable(result) : result;
|
|
203
|
+
return wrapResultInTable ? (0, lua_ast_1.wrapInTable)(result) : result;
|
|
210
204
|
}
|
|
211
205
|
if (ts.isElementAccessExpression(node.expression)) {
|
|
212
206
|
const result = transformElementCall(context, node);
|
|
213
|
-
return
|
|
207
|
+
return wrapResultInTable ? (0, lua_ast_1.wrapInTable)(result) : result;
|
|
214
208
|
}
|
|
215
209
|
const signature = context.checker.getResolvedSignature(node);
|
|
216
210
|
// Handle super calls properly
|
|
@@ -218,31 +212,24 @@ const transformCallExpression = (node, context) => {
|
|
|
218
212
|
const parameters = transformArguments(context, node.arguments, signature, ts.factory.createThis());
|
|
219
213
|
return lua.createCallExpression(lua.createTableIndexExpression(context.transformExpression(ts.factory.createSuper()), lua.createStringLiteral("____constructor")), parameters);
|
|
220
214
|
}
|
|
221
|
-
const callPath = context.transformExpression(node.expression);
|
|
222
215
|
const signatureDeclaration = signature === null || signature === void 0 ? void 0 : signature.getDeclaration();
|
|
223
|
-
let
|
|
224
|
-
|
|
225
|
-
|
|
216
|
+
let callPath;
|
|
217
|
+
let parameters;
|
|
218
|
+
const isContextualCall = !signatureDeclaration || (0, function_context_1.getDeclarationContextType)(context, signatureDeclaration) !== function_context_1.ContextType.Void;
|
|
219
|
+
if (!isContextualCall) {
|
|
220
|
+
[callPath, parameters] = transformCallAndArguments(context, node.expression, node.arguments, signature);
|
|
226
221
|
}
|
|
227
222
|
else {
|
|
228
|
-
|
|
229
|
-
|
|
223
|
+
// if is optionalContinuation, context will be handled by transformOptionalChain.
|
|
224
|
+
const useGlobalContext = !context.isStrict && optionalContinuation === undefined;
|
|
225
|
+
const callContext = useGlobalContext ? ts.factory.createIdentifier("_G") : ts.factory.createNull();
|
|
226
|
+
[callPath, parameters] = transformCallAndArguments(context, node.expression, node.arguments, signature, callContext);
|
|
230
227
|
}
|
|
231
228
|
const callExpression = lua.createCallExpression(callPath, parameters, node);
|
|
232
|
-
|
|
229
|
+
if (optionalContinuation && isContextualCall) {
|
|
230
|
+
optionalContinuation.contextualCall = callExpression;
|
|
231
|
+
}
|
|
232
|
+
return wrapResultInTable ? (0, lua_ast_1.wrapInTable)(callExpression) : callExpression;
|
|
233
233
|
};
|
|
234
234
|
exports.transformCallExpression = transformCallExpression;
|
|
235
|
-
function wrapIfRequired(context, shouldWrapInTable, shouldWrapOptional, call, node) {
|
|
236
|
-
const wrappedOptional = shouldWrapOptional ? wrapOptionalCall(context, call, node) : call;
|
|
237
|
-
return shouldWrapInTable ? lua_ast_1.wrapInTable(wrappedOptional) : wrappedOptional;
|
|
238
|
-
}
|
|
239
|
-
function wrapOptionalCall(context, call, node) {
|
|
240
|
-
if (lua.isMethodCallExpression(call)) {
|
|
241
|
-
return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.OptionalMethodCall, node, call.prefixExpression, lua.createStringLiteral(call.name.text), lua.createBooleanLiteral(node.questionDotToken !== undefined), // Require method is present if no ?.() call
|
|
242
|
-
...call.params);
|
|
243
|
-
}
|
|
244
|
-
else {
|
|
245
|
-
return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.OptionalFunctionCall, node, call.expression, ...call.params);
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
235
|
//# sourceMappingURL=call.js.map
|
|
@@ -9,9 +9,9 @@ const lualib_1 = require("../../utils/lualib");
|
|
|
9
9
|
function transformDecoratorExpression(context, decorator) {
|
|
10
10
|
const expression = decorator.expression;
|
|
11
11
|
const type = context.checker.getTypeAtLocation(expression);
|
|
12
|
-
const callContext = function_context_1.getFunctionContextType(context, type);
|
|
12
|
+
const callContext = (0, function_context_1.getFunctionContextType)(context, type);
|
|
13
13
|
if (callContext === function_context_1.ContextType.Void) {
|
|
14
|
-
context.diagnostics.push(diagnostics_1.decoratorInvalidContext(decorator));
|
|
14
|
+
context.diagnostics.push((0, diagnostics_1.decoratorInvalidContext)(decorator));
|
|
15
15
|
}
|
|
16
16
|
return context.transformExpression(expression);
|
|
17
17
|
}
|
|
@@ -26,7 +26,7 @@ function createDecoratingExpression(context, kind, decorators, targetTableName,
|
|
|
26
26
|
kind === ts.SyntaxKind.SetAccessor;
|
|
27
27
|
trailingExpressions.push(isMethodOrAccessor ? lua.createBooleanLiteral(true) : lua.createNilLiteral());
|
|
28
28
|
}
|
|
29
|
-
return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.Decorate, undefined, ...trailingExpressions);
|
|
29
|
+
return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.Decorate, undefined, ...trailingExpressions);
|
|
30
30
|
}
|
|
31
31
|
exports.createDecoratingExpression = createDecoratingExpression;
|
|
32
32
|
//# sourceMappingURL=decorators.js.map
|
|
@@ -9,7 +9,6 @@ const diagnostics_1 = require("../../utils/diagnostics");
|
|
|
9
9
|
const export_1 = require("../../utils/export");
|
|
10
10
|
const lua_ast_1 = require("../../utils/lua-ast");
|
|
11
11
|
const safe_names_1 = require("../../utils/safe-names");
|
|
12
|
-
const transform_1 = require("../../utils/transform");
|
|
13
12
|
const identifier_1 = require("../identifier");
|
|
14
13
|
const decorators_1 = require("./decorators");
|
|
15
14
|
const accessors_1 = require("./members/accessors");
|
|
@@ -21,8 +20,8 @@ const setup_1 = require("./setup");
|
|
|
21
20
|
const utils_2 = require("./utils");
|
|
22
21
|
const transformClassDeclaration = (declaration, context) => {
|
|
23
22
|
// If declaration is a default export, transform to export variable assignment instead
|
|
24
|
-
if (export_1.hasDefaultExportModifier(declaration)) {
|
|
25
|
-
const left =
|
|
23
|
+
if ((0, export_1.hasDefaultExportModifier)(declaration)) {
|
|
24
|
+
const left = (0, export_1.createDefaultExportExpression)(declaration);
|
|
26
25
|
const right = transformClassAsExpression(declaration, context);
|
|
27
26
|
return [lua.createAssignmentStatement(left, right, declaration)];
|
|
28
27
|
}
|
|
@@ -30,13 +29,12 @@ const transformClassDeclaration = (declaration, context) => {
|
|
|
30
29
|
return statements;
|
|
31
30
|
};
|
|
32
31
|
exports.transformClassDeclaration = transformClassDeclaration;
|
|
33
|
-
const transformThisExpression = node => lua_ast_1.createSelfIdentifier(node);
|
|
32
|
+
const transformThisExpression = node => (0, lua_ast_1.createSelfIdentifier)(node);
|
|
34
33
|
exports.transformThisExpression = transformThisExpression;
|
|
35
34
|
function transformClassAsExpression(expression, context) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}, expression);
|
|
35
|
+
const { statements, name } = transformClassLikeDeclaration(expression, context);
|
|
36
|
+
context.addPrecedingStatements(statements);
|
|
37
|
+
return name;
|
|
40
38
|
}
|
|
41
39
|
exports.transformClassAsExpression = transformClassAsExpression;
|
|
42
40
|
const classSuperInfos = new WeakMap();
|
|
@@ -46,52 +44,51 @@ function transformClassLikeDeclaration(classDeclaration, context, nameOverride)
|
|
|
46
44
|
className = nameOverride;
|
|
47
45
|
}
|
|
48
46
|
else if (classDeclaration.name !== undefined) {
|
|
49
|
-
className = identifier_1.transformIdentifier(context, classDeclaration.name);
|
|
47
|
+
className = (0, identifier_1.transformIdentifier)(context, classDeclaration.name);
|
|
50
48
|
}
|
|
51
49
|
else {
|
|
52
|
-
|
|
53
|
-
className = lua.createAnonymousIdentifier();
|
|
50
|
+
className = lua.createIdentifier(context.createTempName("class"), classDeclaration);
|
|
54
51
|
}
|
|
55
|
-
const annotations = annotations_1.getTypeAnnotations(context.checker.getTypeAtLocation(classDeclaration));
|
|
52
|
+
const annotations = (0, annotations_1.getTypeAnnotations)(context.checker.getTypeAtLocation(classDeclaration));
|
|
56
53
|
if (annotations.has(annotations_1.AnnotationKind.Extension)) {
|
|
57
|
-
context.diagnostics.push(diagnostics_1.annotationRemoved(classDeclaration, annotations_1.AnnotationKind.Extension));
|
|
54
|
+
context.diagnostics.push((0, diagnostics_1.annotationRemoved)(classDeclaration, annotations_1.AnnotationKind.Extension));
|
|
58
55
|
}
|
|
59
56
|
if (annotations.has(annotations_1.AnnotationKind.MetaExtension)) {
|
|
60
|
-
context.diagnostics.push(diagnostics_1.annotationRemoved(classDeclaration, annotations_1.AnnotationKind.MetaExtension));
|
|
57
|
+
context.diagnostics.push((0, diagnostics_1.annotationRemoved)(classDeclaration, annotations_1.AnnotationKind.MetaExtension));
|
|
61
58
|
}
|
|
62
59
|
// Get type that is extended
|
|
63
|
-
const extendedTypeNode = utils_2.getExtendedNode(context, classDeclaration);
|
|
64
|
-
const extendedType = utils_2.getExtendedType(context, classDeclaration);
|
|
65
|
-
const superInfo = utils_1.getOrUpdate(classSuperInfos, context, () => []);
|
|
60
|
+
const extendedTypeNode = (0, utils_2.getExtendedNode)(context, classDeclaration);
|
|
61
|
+
const extendedType = (0, utils_2.getExtendedType)(context, classDeclaration);
|
|
62
|
+
const superInfo = (0, utils_1.getOrUpdate)(classSuperInfos, context, () => []);
|
|
66
63
|
superInfo.push({ className, extendedTypeNode });
|
|
67
64
|
if (extendedType) {
|
|
68
|
-
new_1.checkForLuaLibType(context, extendedType);
|
|
65
|
+
(0, new_1.checkForLuaLibType)(context, extendedType);
|
|
69
66
|
}
|
|
70
67
|
// Get all properties with value
|
|
71
68
|
const properties = classDeclaration.members.filter(ts.isPropertyDeclaration).filter(member => member.initializer);
|
|
72
69
|
// Divide properties into static and non-static
|
|
73
|
-
const instanceFields = properties.filter(prop => !utils_2.isStaticNode(prop));
|
|
70
|
+
const instanceFields = properties.filter(prop => !(0, utils_2.isStaticNode)(prop));
|
|
74
71
|
const result = [];
|
|
75
72
|
let localClassName;
|
|
76
|
-
if (safe_names_1.isUnsafeName(className.text)) {
|
|
77
|
-
localClassName = lua.createIdentifier(safe_names_1.createSafeName(className.text), undefined, className.symbolId, className.text);
|
|
73
|
+
if ((0, safe_names_1.isUnsafeName)(className.text)) {
|
|
74
|
+
localClassName = lua.createIdentifier((0, safe_names_1.createSafeName)(className.text), undefined, className.symbolId, className.text);
|
|
78
75
|
lua.setNodePosition(localClassName, className);
|
|
79
76
|
}
|
|
80
77
|
else {
|
|
81
78
|
localClassName = className;
|
|
82
79
|
}
|
|
83
|
-
result.push(...setup_1.createClassSetup(context, classDeclaration, className, localClassName, extendedType));
|
|
80
|
+
result.push(...(0, setup_1.createClassSetup)(context, classDeclaration, className, localClassName, extendedType));
|
|
84
81
|
// Find first constructor with body
|
|
85
82
|
const constructor = classDeclaration.members.find((n) => ts.isConstructorDeclaration(n) && n.body !== undefined);
|
|
86
83
|
if (constructor) {
|
|
87
84
|
// Add constructor plus initialization of instance fields
|
|
88
|
-
const constructorResult = constructor_1.transformConstructorDeclaration(context, constructor, localClassName, instanceFields, classDeclaration);
|
|
85
|
+
const constructorResult = (0, constructor_1.transformConstructorDeclaration)(context, constructor, localClassName, instanceFields, classDeclaration);
|
|
89
86
|
if (constructorResult)
|
|
90
87
|
result.push(constructorResult);
|
|
91
88
|
}
|
|
92
89
|
else if (!extendedType) {
|
|
93
90
|
// Generate a constructor if none was defined in a base class
|
|
94
|
-
const constructorResult = constructor_1.transformConstructorDeclaration(context, ts.factory.createConstructorDeclaration([], [], [], ts.factory.createBlock([], true)), localClassName, instanceFields, classDeclaration);
|
|
91
|
+
const constructorResult = (0, constructor_1.transformConstructorDeclaration)(context, ts.factory.createConstructorDeclaration([], [], [], ts.factory.createBlock([], true)), localClassName, instanceFields, classDeclaration);
|
|
95
92
|
if (constructorResult)
|
|
96
93
|
result.push(constructorResult);
|
|
97
94
|
}
|
|
@@ -100,11 +97,11 @@ function transformClassLikeDeclaration(classDeclaration, context, nameOverride)
|
|
|
100
97
|
// localClassName.prototype.____constructor = function(self, ...)
|
|
101
98
|
// baseClassName.prototype.____constructor(self, ...)
|
|
102
99
|
// ...
|
|
103
|
-
const constructorBody = fields_1.transformClassInstanceFields(context, instanceFields);
|
|
104
|
-
const superCall = lua.createExpressionStatement(lua.createCallExpression(lua.createTableIndexExpression(context.transformExpression(ts.factory.createSuper()), lua.createStringLiteral("____constructor")), [lua_ast_1.createSelfIdentifier(), lua.createDotsLiteral()]));
|
|
100
|
+
const constructorBody = (0, fields_1.transformClassInstanceFields)(context, instanceFields);
|
|
101
|
+
const superCall = lua.createExpressionStatement(lua.createCallExpression(lua.createTableIndexExpression(context.transformExpression(ts.factory.createSuper()), lua.createStringLiteral("____constructor")), [(0, lua_ast_1.createSelfIdentifier)(), lua.createDotsLiteral()]));
|
|
105
102
|
constructorBody.unshift(superCall);
|
|
106
|
-
const constructorFunction = lua.createFunctionExpression(lua.createBlock(constructorBody), [lua_ast_1.createSelfIdentifier()], lua.createDotsLiteral(), lua.FunctionExpressionFlags.Declaration);
|
|
107
|
-
result.push(lua.createAssignmentStatement(constructor_1.createConstructorName(localClassName), constructorFunction, classDeclaration));
|
|
103
|
+
const constructorFunction = lua.createFunctionExpression(lua.createBlock(constructorBody), [(0, lua_ast_1.createSelfIdentifier)()], lua.createDotsLiteral(), lua.FunctionExpressionFlags.Declaration);
|
|
104
|
+
result.push(lua.createAssignmentStatement((0, constructor_1.createConstructorName)(localClassName), constructorFunction, classDeclaration));
|
|
108
105
|
}
|
|
109
106
|
// Transform accessors
|
|
110
107
|
for (const member of classDeclaration.members) {
|
|
@@ -113,7 +110,7 @@ function transformClassLikeDeclaration(classDeclaration, context, nameOverride)
|
|
|
113
110
|
const accessors = context.resolver.getAllAccessorDeclarations(member);
|
|
114
111
|
if (accessors.firstAccessor !== member)
|
|
115
112
|
continue;
|
|
116
|
-
const accessorsResult = accessors_1.transformAccessorDeclarations(context, accessors, localClassName);
|
|
113
|
+
const accessorsResult = (0, accessors_1.transformAccessorDeclarations)(context, accessors, localClassName);
|
|
117
114
|
if (accessorsResult) {
|
|
118
115
|
result.push(accessorsResult);
|
|
119
116
|
}
|
|
@@ -121,27 +118,27 @@ function transformClassLikeDeclaration(classDeclaration, context, nameOverride)
|
|
|
121
118
|
const decorationStatements = [];
|
|
122
119
|
for (const member of classDeclaration.members) {
|
|
123
120
|
if (ts.isAccessor(member)) {
|
|
124
|
-
const expression = fields_1.createPropertyDecoratingExpression(context, member, localClassName);
|
|
121
|
+
const expression = (0, fields_1.createPropertyDecoratingExpression)(context, member, localClassName);
|
|
125
122
|
if (expression)
|
|
126
123
|
decorationStatements.push(lua.createExpressionStatement(expression));
|
|
127
124
|
}
|
|
128
125
|
else if (ts.isMethodDeclaration(member)) {
|
|
129
|
-
const statement = method_1.transformMethodDeclaration(context, member, localClassName);
|
|
126
|
+
const statement = (0, method_1.transformMethodDeclaration)(context, member, localClassName);
|
|
130
127
|
if (statement)
|
|
131
128
|
result.push(statement);
|
|
132
129
|
if (member.body) {
|
|
133
|
-
const statement = method_1.createMethodDecoratingExpression(context, member, localClassName);
|
|
130
|
+
const statement = (0, method_1.createMethodDecoratingExpression)(context, member, localClassName);
|
|
134
131
|
if (statement)
|
|
135
132
|
decorationStatements.push(statement);
|
|
136
133
|
}
|
|
137
134
|
}
|
|
138
135
|
else if (ts.isPropertyDeclaration(member)) {
|
|
139
|
-
if (utils_2.isStaticNode(member)) {
|
|
140
|
-
const statement = fields_1.transformStaticPropertyDeclaration(context, member, localClassName);
|
|
136
|
+
if ((0, utils_2.isStaticNode)(member)) {
|
|
137
|
+
const statement = (0, fields_1.transformStaticPropertyDeclaration)(context, member, localClassName);
|
|
141
138
|
if (statement)
|
|
142
139
|
decorationStatements.push(statement);
|
|
143
140
|
}
|
|
144
|
-
const expression = fields_1.createPropertyDecoratingExpression(context, member, localClassName);
|
|
141
|
+
const expression = (0, fields_1.createPropertyDecoratingExpression)(context, member, localClassName);
|
|
145
142
|
if (expression)
|
|
146
143
|
decorationStatements.push(lua.createExpressionStatement(expression));
|
|
147
144
|
}
|
|
@@ -149,15 +146,22 @@ function transformClassLikeDeclaration(classDeclaration, context, nameOverride)
|
|
|
149
146
|
result.push(...decorationStatements);
|
|
150
147
|
// Decorate the class
|
|
151
148
|
if (classDeclaration.decorators) {
|
|
152
|
-
const decoratingExpression = decorators_1.createDecoratingExpression(context, classDeclaration.kind, classDeclaration.decorators.map(d => decorators_1.transformDecoratorExpression(context, d)), localClassName);
|
|
149
|
+
const decoratingExpression = (0, decorators_1.createDecoratingExpression)(context, classDeclaration.kind, classDeclaration.decorators.map(d => (0, decorators_1.transformDecoratorExpression)(context, d)), localClassName);
|
|
153
150
|
const decoratingStatement = lua.createAssignmentStatement(localClassName, decoratingExpression);
|
|
154
151
|
result.push(decoratingStatement);
|
|
152
|
+
if ((0, export_1.hasExportModifier)(classDeclaration)) {
|
|
153
|
+
const exportExpression = (0, export_1.hasDefaultExportModifier)(classDeclaration)
|
|
154
|
+
? (0, export_1.createDefaultExportExpression)(classDeclaration)
|
|
155
|
+
: (0, export_1.createExportedIdentifier)(context, className);
|
|
156
|
+
const classAssignment = lua.createAssignmentStatement(exportExpression, localClassName);
|
|
157
|
+
result.push(classAssignment);
|
|
158
|
+
}
|
|
155
159
|
}
|
|
156
160
|
superInfo.pop();
|
|
157
161
|
return { statements: result, name: className };
|
|
158
162
|
}
|
|
159
163
|
const transformSuperExpression = (expression, context) => {
|
|
160
|
-
const superInfos = utils_1.getOrUpdate(classSuperInfos, context, () => []);
|
|
164
|
+
const superInfos = (0, utils_1.getOrUpdate)(classSuperInfos, context, () => []);
|
|
161
165
|
const superInfo = superInfos[superInfos.length - 1];
|
|
162
166
|
if (!superInfo)
|
|
163
167
|
return lua.createAnonymousIdentifier(expression);
|
|
@@ -167,9 +171,9 @@ const transformSuperExpression = (expression, context) => {
|
|
|
167
171
|
let baseClassName;
|
|
168
172
|
if (extendsExpression && ts.isIdentifier(extendsExpression)) {
|
|
169
173
|
const symbol = context.checker.getSymbolAtLocation(extendsExpression);
|
|
170
|
-
if (symbol && !export_1.isSymbolExported(context, symbol)) {
|
|
174
|
+
if (symbol && !(0, export_1.isSymbolExported)(context, symbol)) {
|
|
171
175
|
// Use "baseClassName" if base is a simple identifier
|
|
172
|
-
baseClassName = identifier_1.transformIdentifier(context, extendsExpression);
|
|
176
|
+
baseClassName = (0, identifier_1.transformIdentifier)(context, extendsExpression);
|
|
173
177
|
}
|
|
174
178
|
}
|
|
175
179
|
if (!baseClassName) {
|
|
@@ -9,12 +9,12 @@ const literal_1 = require("../../literal");
|
|
|
9
9
|
const utils_1 = require("../utils");
|
|
10
10
|
const constructor_1 = require("./constructor");
|
|
11
11
|
function transformAccessor(context, node) {
|
|
12
|
-
const [params, dot, restParam] = function_1.transformParameters(context, node.parameters, lua_ast_1.createSelfIdentifier());
|
|
13
|
-
const body = node.body ? function_1.transformFunctionBody(context, node.parameters, node.body, restParam)[0] : [];
|
|
12
|
+
const [params, dot, restParam] = (0, function_1.transformParameters)(context, node.parameters, (0, lua_ast_1.createSelfIdentifier)());
|
|
13
|
+
const body = node.body ? (0, function_1.transformFunctionBody)(context, node.parameters, node.body, restParam)[0] : [];
|
|
14
14
|
return lua.createFunctionExpression(lua.createBlock(body), params, dot, lua.FunctionExpressionFlags.Declaration);
|
|
15
15
|
}
|
|
16
16
|
function transformAccessorDeclarations(context, { firstAccessor, getAccessor, setAccessor }, className) {
|
|
17
|
-
const propertyName = literal_1.transformPropertyName(context, firstAccessor.name);
|
|
17
|
+
const propertyName = (0, literal_1.transformPropertyName)(context, firstAccessor.name);
|
|
18
18
|
const descriptor = lua.createTableExpression([]);
|
|
19
19
|
if (getAccessor) {
|
|
20
20
|
const getterFunction = transformAccessor(context, getAccessor);
|
|
@@ -24,13 +24,13 @@ function transformAccessorDeclarations(context, { firstAccessor, getAccessor, se
|
|
|
24
24
|
const setterFunction = transformAccessor(context, setAccessor);
|
|
25
25
|
descriptor.fields.push(lua.createTableFieldExpression(setterFunction, lua.createStringLiteral("set")));
|
|
26
26
|
}
|
|
27
|
-
const isStatic = utils_1.isStaticNode(firstAccessor);
|
|
28
|
-
const target = isStatic ? lua.cloneIdentifier(className) : constructor_1.createPrototypeName(className);
|
|
27
|
+
const isStatic = (0, utils_1.isStaticNode)(firstAccessor);
|
|
28
|
+
const target = isStatic ? lua.cloneIdentifier(className) : (0, constructor_1.createPrototypeName)(className);
|
|
29
29
|
const feature = isStatic ? lualib_1.LuaLibFeature.ObjectDefineProperty : lualib_1.LuaLibFeature.SetDescriptor;
|
|
30
30
|
const parameters = [target, propertyName, descriptor];
|
|
31
31
|
if (!isStatic)
|
|
32
32
|
parameters.push(lua.createBooleanLiteral(true));
|
|
33
|
-
const call = lualib_1.transformLuaLibFunction(context, feature, undefined, ...parameters);
|
|
33
|
+
const call = (0, lualib_1.transformLuaLibFunction)(context, feature, undefined, ...parameters);
|
|
34
34
|
return lua.createExpressionStatement(call);
|
|
35
35
|
}
|
|
36
36
|
exports.transformAccessorDeclarations = transformAccessorDeclarations;
|