brighterscript 1.0.0-alpha.27 → 1.0.0-alpha.29
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 +71 -0
- package/README.md +1 -1
- package/dist/AstValidationSegmenter.d.ts +12 -2
- package/dist/AstValidationSegmenter.js +74 -16
- package/dist/AstValidationSegmenter.js.map +1 -1
- package/dist/DependencyGraph.d.ts +4 -0
- package/dist/DependencyGraph.js +19 -0
- package/dist/DependencyGraph.js.map +1 -1
- package/dist/DiagnosticFilterer.d.ts +7 -4
- package/dist/DiagnosticFilterer.js +67 -37
- package/dist/DiagnosticFilterer.js.map +1 -1
- package/dist/DiagnosticMessages.d.ts +1 -1
- package/dist/PluginInterface.js +1 -1
- package/dist/PluginInterface.js.map +1 -1
- package/dist/Program.d.ts +19 -15
- package/dist/Program.js +153 -88
- package/dist/Program.js.map +1 -1
- package/dist/Scope.d.ts +27 -28
- package/dist/Scope.js +174 -361
- package/dist/Scope.js.map +1 -1
- package/dist/Stopwatch.d.ts +4 -0
- package/dist/Stopwatch.js +7 -0
- package/dist/Stopwatch.js.map +1 -1
- package/dist/SymbolTable.d.ts +2 -1
- package/dist/SymbolTable.js +26 -0
- package/dist/SymbolTable.js.map +1 -1
- package/dist/{SymbolTableFlag.js → SymbolTypeFlag.js} +1 -1
- package/dist/SymbolTypeFlag.js.map +1 -0
- package/dist/XmlScope.d.ts +0 -8
- package/dist/XmlScope.js +0 -77
- package/dist/XmlScope.js.map +1 -1
- package/dist/astUtils/CachedLookups.js +4 -8
- package/dist/astUtils/CachedLookups.js.map +1 -1
- package/dist/astUtils/creators.d.ts +1 -0
- package/dist/astUtils/creators.js +3 -2
- package/dist/astUtils/creators.js.map +1 -1
- package/dist/astUtils/creators.spec.js +0 -10
- package/dist/astUtils/creators.spec.js.map +1 -1
- package/dist/astUtils/reflection.d.ts +4 -4
- package/dist/astUtils/reflection.js +8 -7
- package/dist/astUtils/reflection.js.map +1 -1
- package/dist/astUtils/reflection.spec.js +10 -15
- package/dist/astUtils/reflection.spec.js.map +1 -1
- package/dist/astUtils/visitors.d.ts +1 -2
- package/dist/astUtils/visitors.js.map +1 -1
- package/dist/astUtils/visitors.spec.js +1 -5
- package/dist/astUtils/visitors.spec.js.map +1 -1
- package/dist/bscPlugin/BscPlugin.d.ts +3 -1
- package/dist/bscPlugin/BscPlugin.js +10 -0
- package/dist/bscPlugin/BscPlugin.js.map +1 -1
- package/dist/bscPlugin/SignatureHelpUtil.js +4 -3
- package/dist/bscPlugin/SignatureHelpUtil.js.map +1 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +1 -0
- package/dist/bscPlugin/completions/CompletionsProcessor.js +31 -11
- package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +39 -0
- package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/hover/HoverProcessor.js +5 -5
- package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
- package/dist/bscPlugin/hover/HoverProcessor.spec.js +51 -5
- package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/references/ReferencesProvider.d.ts +12 -0
- package/dist/bscPlugin/references/ReferencesProvider.js +56 -0
- package/dist/bscPlugin/references/ReferencesProvider.js.map +1 -0
- package/dist/bscPlugin/references/ReferencesProvider.spec.d.ts +1 -0
- package/dist/bscPlugin/references/ReferencesProvider.spec.js +51 -0
- package/dist/bscPlugin/references/ReferencesProvider.spec.js.map +1 -0
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js +1 -1
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +1 -1
- package/dist/bscPlugin/validation/BrsFileAfterValidatior.d.ts +7 -0
- package/dist/bscPlugin/validation/BrsFileAfterValidatior.js +18 -0
- package/dist/bscPlugin/validation/BrsFileAfterValidatior.js.map +1 -0
- package/dist/bscPlugin/validation/BrsFileValidator.d.ts +1 -0
- package/dist/bscPlugin/validation/BrsFileValidator.js +17 -10
- package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.d.ts +37 -1
- package/dist/bscPlugin/validation/ScopeValidator.js +434 -25
- package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.spec.js +91 -4
- package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -1
- package/dist/files/BrsFile.Class.spec.js +11 -4
- package/dist/files/BrsFile.Class.spec.js.map +1 -1
- package/dist/files/BrsFile.d.ts +23 -5
- package/dist/files/BrsFile.js +189 -51
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +589 -97
- package/dist/files/BrsFile.spec.js.map +1 -1
- package/dist/files/BscFile.d.ts +2 -1
- package/dist/files/BscFile.js.map +1 -1
- package/dist/files/XmlFile.d.ts +2 -2
- package/dist/files/XmlFile.js +2 -2
- package/dist/files/XmlFile.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +43 -4
- package/dist/interfaces.js.map +1 -1
- package/dist/lexer/Lexer.d.ts +9 -3
- package/dist/lexer/Lexer.js +36 -15
- package/dist/lexer/Lexer.js.map +1 -1
- package/dist/lexer/Lexer.spec.js +76 -38
- package/dist/lexer/Lexer.spec.js.map +1 -1
- package/dist/lexer/Token.js +1 -1
- package/dist/lexer/Token.js.map +1 -1
- package/dist/lexer/TokenKind.d.ts +1 -0
- package/dist/lexer/TokenKind.js +4 -1
- package/dist/lexer/TokenKind.js.map +1 -1
- package/dist/parser/AstNode.d.ts +1 -2
- package/dist/parser/AstNode.js +0 -1
- package/dist/parser/AstNode.js.map +1 -1
- package/dist/parser/BrsTranspileState.d.ts +1 -1
- package/dist/parser/Expression.d.ts +77 -47
- package/dist/parser/Expression.js +162 -88
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.d.ts +7 -2
- package/dist/parser/Parser.js +40 -90
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/Parser.spec.js +21 -44
- package/dist/parser/Parser.spec.js.map +1 -1
- package/dist/parser/SGTypes.js +5 -5
- package/dist/parser/SGTypes.js.map +1 -1
- package/dist/parser/Statement.d.ts +92 -84
- package/dist/parser/Statement.js +199 -133
- package/dist/parser/Statement.js.map +1 -1
- package/dist/parser/Statement.spec.js +0 -13
- package/dist/parser/Statement.spec.js.map +1 -1
- package/dist/parser/TranspileState.d.ts +17 -8
- package/dist/parser/TranspileState.js +67 -8
- package/dist/parser/TranspileState.js.map +1 -1
- package/dist/parser/tests/Parser.spec.d.ts +1 -1
- package/dist/parser/tests/Parser.spec.js +1 -2
- package/dist/parser/tests/Parser.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/If.spec.js +1 -1
- package/dist/parser/tests/controlFlow/If.spec.js.map +1 -1
- package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +1 -3
- package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +1 -1
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +44 -0
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/TemplateStringExpression.spec.js +6 -6
- package/dist/parser/tests/expression/TernaryExpression.spec.js +47 -0
- package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
- package/dist/parser/tests/statement/ConstStatement.spec.js +2 -2
- package/dist/parser/tests/statement/InterfaceStatement.spec.js +8 -1
- package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Misc.spec.js +25 -5
- package/dist/parser/tests/statement/Misc.spec.js.map +1 -1
- package/dist/preprocessor/Chunk.js +1 -2
- package/dist/preprocessor/Chunk.js.map +1 -1
- package/dist/preprocessor/PreprocessorParser.js +2 -1
- package/dist/preprocessor/PreprocessorParser.js.map +1 -1
- package/dist/types/AssociativeArrayType.d.ts +3 -0
- package/dist/types/AssociativeArrayType.js +9 -0
- package/dist/types/AssociativeArrayType.js.map +1 -1
- package/dist/types/BscType.d.ts +1 -1
- package/dist/types/BscType.js +1 -0
- package/dist/types/BscType.js.map +1 -1
- package/dist/types/ComponentType.d.ts +1 -1
- package/dist/types/ReferenceType.d.ts +9 -1
- package/dist/types/ReferenceType.js +45 -1
- package/dist/types/ReferenceType.js.map +1 -1
- package/dist/types/ReferenceType.spec.js +15 -0
- package/dist/types/ReferenceType.spec.js.map +1 -1
- package/dist/util.d.ts +23 -9
- package/dist/util.js +115 -21
- package/dist/util.js.map +1 -1
- package/package.json +6 -3
- package/dist/SymbolTableFlag.js.map +0 -1
- /package/dist/{SymbolTableFlag.d.ts → SymbolTypeFlag.d.ts} +0 -0
package/dist/parser/Statement.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ContinueStatement = exports.ConstStatement = exports.EnumMemberStatement = exports.EnumStatement = exports.ThrowStatement = exports.CatchStatement = exports.TryCatchStatement = exports.FieldStatement = exports.MethodStatement = exports.ClassStatement = exports.InterfaceMethodStatement = exports.InterfaceFieldStatement = exports.InterfaceStatement = exports.ImportStatement = exports.NamespaceStatement = exports.LibraryStatement = exports.IndexedSetStatement = exports.DottedSetStatement = exports.WhileStatement = exports.ForEachStatement = exports.ForStatement = exports.StopStatement = exports.EndStatement = exports.ReturnStatement = exports.LabelStatement = exports.GotoStatement = exports.DimStatement = exports.PrintStatement = exports.IncrementStatement = exports.IfStatement = exports.FunctionStatement = exports.ExitWhileStatement = exports.ExitForStatement = exports.
|
|
3
|
+
exports.ContinueStatement = exports.ConstStatement = exports.EnumMemberStatement = exports.EnumStatement = exports.ThrowStatement = exports.CatchStatement = exports.TryCatchStatement = exports.FieldStatement = exports.MethodStatement = exports.ClassStatement = exports.InterfaceMethodStatement = exports.InterfaceFieldStatement = exports.InterfaceStatement = exports.ImportStatement = exports.NamespaceStatement = exports.LibraryStatement = exports.IndexedSetStatement = exports.DottedSetStatement = exports.WhileStatement = exports.ForEachStatement = exports.ForStatement = exports.StopStatement = exports.EndStatement = exports.ReturnStatement = exports.LabelStatement = exports.GotoStatement = exports.DimStatement = exports.PrintStatement = exports.IncrementStatement = exports.IfStatement = exports.FunctionStatement = exports.ExitWhileStatement = exports.ExitForStatement = exports.ExpressionStatement = exports.Block = exports.AssignmentStatement = exports.Body = exports.EmptyStatement = void 0;
|
|
4
4
|
const TokenKind_1 = require("../lexer/TokenKind");
|
|
5
5
|
const Expression_1 = require("./Expression");
|
|
6
6
|
const util_1 = require("../util");
|
|
@@ -22,10 +22,9 @@ const TypedFunctionType_1 = require("../types/TypedFunctionType");
|
|
|
22
22
|
const ArrayType_1 = require("../types/ArrayType");
|
|
23
23
|
class EmptyStatement extends AstNode_2.Statement {
|
|
24
24
|
constructor(options) {
|
|
25
|
-
var _a;
|
|
26
25
|
super();
|
|
27
26
|
this.kind = AstNode_1.AstNodeKind.EmptyStatement;
|
|
28
|
-
this.range =
|
|
27
|
+
this.range = undefined;
|
|
29
28
|
}
|
|
30
29
|
transpile(state) {
|
|
31
30
|
return [];
|
|
@@ -53,6 +52,7 @@ class Body extends AstNode_2.Statement {
|
|
|
53
52
|
return util_1.util.createBoundingRange(...((_a = this.statements) !== null && _a !== void 0 ? _a : []));
|
|
54
53
|
}
|
|
55
54
|
transpile(state) {
|
|
55
|
+
var _a, _b, _c, _d;
|
|
56
56
|
let result = [];
|
|
57
57
|
for (let i = 0; i < this.statements.length; i++) {
|
|
58
58
|
let statement = this.statements[i];
|
|
@@ -62,20 +62,20 @@ class Body extends AstNode_2.Statement {
|
|
|
62
62
|
//this is the first statement. do nothing related to spacing and newlines
|
|
63
63
|
//if comment is on same line as prior sibling
|
|
64
64
|
}
|
|
65
|
-
else if (
|
|
65
|
+
else if (util_1.util.hasLeadingComments(statement) && previousStatement && ((_c = (_b = (_a = util_1.util.getLeadingComments(statement)) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.range) === null || _c === void 0 ? void 0 : _c.start.line) === ((_d = previousStatement.range) === null || _d === void 0 ? void 0 : _d.end.line)) {
|
|
66
66
|
result.push(' ');
|
|
67
67
|
//add double newline if this is a comment, and next is a function
|
|
68
68
|
}
|
|
69
|
-
else if (
|
|
70
|
-
result.push(
|
|
69
|
+
else if (util_1.util.hasLeadingComments(statement) && nextStatement && (0, reflection_1.isFunctionStatement)(nextStatement)) {
|
|
70
|
+
result.push(state.newline, state.newline);
|
|
71
71
|
//add double newline if is function not preceeded by a comment
|
|
72
72
|
}
|
|
73
|
-
else if ((0, reflection_1.isFunctionStatement)(statement) && previousStatement && !
|
|
74
|
-
result.push(
|
|
73
|
+
else if ((0, reflection_1.isFunctionStatement)(statement) && previousStatement && !util_1.util.hasLeadingComments(statement)) {
|
|
74
|
+
result.push(state.newline, state.newline);
|
|
75
75
|
}
|
|
76
76
|
else {
|
|
77
77
|
//separate statements by a single newline
|
|
78
|
-
result.push(
|
|
78
|
+
result.push(state.newline);
|
|
79
79
|
}
|
|
80
80
|
result.push(...statement.transpile(state));
|
|
81
81
|
}
|
|
@@ -129,7 +129,7 @@ class AssignmentStatement extends AstNode_2.Statement {
|
|
|
129
129
|
}
|
|
130
130
|
walk(visitor, options) {
|
|
131
131
|
if (options.walkMode & visitors_1.InternalWalkMode.walkExpressions) {
|
|
132
|
-
|
|
132
|
+
(0, visitors_1.walk)(this, 'typeExpression', visitor, options);
|
|
133
133
|
(0, visitors_1.walk)(this, 'value', visitor, options);
|
|
134
134
|
}
|
|
135
135
|
}
|
|
@@ -141,6 +141,10 @@ class AssignmentStatement extends AstNode_2.Statement {
|
|
|
141
141
|
(_c = options.typeChain) === null || _c === void 0 ? void 0 : _c.push(new interfaces_1.TypeChainEntry({ name: this.tokens.name.text, type: variableType, data: options.data, range: this.tokens.name.range, kind: this.kind }));
|
|
142
142
|
return variableType;
|
|
143
143
|
}
|
|
144
|
+
getLeadingTrivia() {
|
|
145
|
+
var _a;
|
|
146
|
+
return (_a = this.tokens.name.leadingTrivia) !== null && _a !== void 0 ? _a : [];
|
|
147
|
+
}
|
|
144
148
|
}
|
|
145
149
|
exports.AssignmentStatement = AssignmentStatement;
|
|
146
150
|
class Block extends AstNode_2.Statement {
|
|
@@ -158,9 +162,10 @@ class Block extends AstNode_2.Statement {
|
|
|
158
162
|
for (let i = 0; i < this.statements.length; i++) {
|
|
159
163
|
let previousStatement = this.statements[i - 1];
|
|
160
164
|
let statement = this.statements[i];
|
|
165
|
+
//is not a comment
|
|
161
166
|
//if comment is on same line as parent
|
|
162
|
-
if ((0,
|
|
163
|
-
|
|
167
|
+
if (util_1.util.isLeadingCommentOnSameLine(state.lineage[0], statement) ||
|
|
168
|
+
util_1.util.isLeadingCommentOnSameLine(previousStatement, statement)) {
|
|
164
169
|
results.push(' ');
|
|
165
170
|
//is not a comment
|
|
166
171
|
}
|
|
@@ -198,47 +203,11 @@ class ExpressionStatement extends AstNode_2.Statement {
|
|
|
198
203
|
(0, visitors_1.walk)(this, 'expression', visitor, options);
|
|
199
204
|
}
|
|
200
205
|
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
class CommentStatement extends AstNode_2.Statement {
|
|
204
|
-
constructor(options) {
|
|
205
|
-
var _a;
|
|
206
|
-
super();
|
|
207
|
-
this.kind = AstNode_1.AstNodeKind.CommentStatement;
|
|
208
|
-
this.visitMode = visitors_1.InternalWalkMode.visitStatements | visitors_1.InternalWalkMode.visitExpressions;
|
|
209
|
-
this.tokens = {
|
|
210
|
-
comments: options.comments
|
|
211
|
-
};
|
|
212
|
-
if (((_a = this.tokens.comments) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
213
|
-
this.range = util_1.util.createBoundingRange(...this.tokens.comments);
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
get text() {
|
|
217
|
-
return this.tokens.comments.map(x => x.text).join('\n');
|
|
218
|
-
}
|
|
219
|
-
transpile(state) {
|
|
220
|
-
let result = [];
|
|
221
|
-
for (let i = 0; i < this.tokens.comments.length; i++) {
|
|
222
|
-
let comment = this.tokens.comments[i];
|
|
223
|
-
if (i > 0) {
|
|
224
|
-
result.push(state.indent());
|
|
225
|
-
}
|
|
226
|
-
result.push(state.transpileToken(comment));
|
|
227
|
-
//add newline for all except final comment
|
|
228
|
-
if (i < this.tokens.comments.length - 1) {
|
|
229
|
-
result.push('\n');
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
return result;
|
|
233
|
-
}
|
|
234
|
-
getTypedef(state) {
|
|
235
|
-
return this.transpile(state);
|
|
236
|
-
}
|
|
237
|
-
walk(visitor, options) {
|
|
238
|
-
//nothing to walk
|
|
206
|
+
getLeadingTrivia() {
|
|
207
|
+
return this.expression.getLeadingTrivia();
|
|
239
208
|
}
|
|
240
209
|
}
|
|
241
|
-
exports.
|
|
210
|
+
exports.ExpressionStatement = ExpressionStatement;
|
|
242
211
|
class ExitForStatement extends AstNode_2.Statement {
|
|
243
212
|
constructor(options) {
|
|
244
213
|
var _a;
|
|
@@ -250,13 +219,15 @@ class ExitForStatement extends AstNode_2.Statement {
|
|
|
250
219
|
this.range = (_a = this.tokens.exitFor) === null || _a === void 0 ? void 0 : _a.range;
|
|
251
220
|
}
|
|
252
221
|
transpile(state) {
|
|
253
|
-
return [
|
|
254
|
-
this.tokens.exitFor ? state.transpileToken(this.tokens.exitFor) : 'exit for'
|
|
255
|
-
];
|
|
222
|
+
return this.tokens.exitFor ? state.transpileToken(this.tokens.exitFor) : ['exit for'];
|
|
256
223
|
}
|
|
257
224
|
walk(visitor, options) {
|
|
258
225
|
//nothing to walk
|
|
259
226
|
}
|
|
227
|
+
getLeadingTrivia() {
|
|
228
|
+
var _a, _b;
|
|
229
|
+
return (_b = (_a = this.tokens.exitFor) === null || _a === void 0 ? void 0 : _a.leadingTrivia) !== null && _b !== void 0 ? _b : [];
|
|
230
|
+
}
|
|
260
231
|
}
|
|
261
232
|
exports.ExitForStatement = ExitForStatement;
|
|
262
233
|
class ExitWhileStatement extends AstNode_2.Statement {
|
|
@@ -270,13 +241,15 @@ class ExitWhileStatement extends AstNode_2.Statement {
|
|
|
270
241
|
this.range = (_a = this.tokens.exitWhile) === null || _a === void 0 ? void 0 : _a.range;
|
|
271
242
|
}
|
|
272
243
|
transpile(state) {
|
|
273
|
-
return [
|
|
274
|
-
this.tokens.exitWhile ? state.transpileToken(this.tokens.exitWhile) : 'exit while'
|
|
275
|
-
];
|
|
244
|
+
return this.tokens.exitWhile ? state.transpileToken(this.tokens.exitWhile) : ['exit while'];
|
|
276
245
|
}
|
|
277
246
|
walk(visitor, options) {
|
|
278
247
|
//nothing to walk
|
|
279
248
|
}
|
|
249
|
+
getLeadingTrivia() {
|
|
250
|
+
var _a, _b;
|
|
251
|
+
return (_b = (_a = this.tokens.exitWhile) === null || _a === void 0 ? void 0 : _a.leadingTrivia) !== null && _b !== void 0 ? _b : [];
|
|
252
|
+
}
|
|
280
253
|
}
|
|
281
254
|
exports.ExitWhileStatement = ExitWhileStatement;
|
|
282
255
|
class FunctionStatement extends AstNode_2.Statement {
|
|
@@ -316,9 +289,12 @@ class FunctionStatement extends AstNode_2.Statement {
|
|
|
316
289
|
return this.func.transpile(state, nameToken);
|
|
317
290
|
}
|
|
318
291
|
getTypedef(state) {
|
|
319
|
-
var _a;
|
|
292
|
+
var _a, _b;
|
|
320
293
|
let result = [];
|
|
321
|
-
for (let
|
|
294
|
+
for (let comment of (_a = util_1.util.getLeadingComments(this)) !== null && _a !== void 0 ? _a : []) {
|
|
295
|
+
result.push(comment.text, state.newline, state.indent());
|
|
296
|
+
}
|
|
297
|
+
for (let annotation of (_b = this.annotations) !== null && _b !== void 0 ? _b : []) {
|
|
322
298
|
result.push(...annotation.getTypedef(state), state.newline, state.indent());
|
|
323
299
|
}
|
|
324
300
|
result.push(...this.func.getTypedef(state));
|
|
@@ -354,7 +330,7 @@ class IfStatement extends AstNode_2.Statement {
|
|
|
354
330
|
this.range = util_1.util.createBoundingRange(util_1.util.createBoundingRangeFromTokens(this.tokens), this.condition, this.thenBranch, this.elseBranch);
|
|
355
331
|
}
|
|
356
332
|
transpile(state) {
|
|
357
|
-
var _a;
|
|
333
|
+
var _a, _b;
|
|
358
334
|
let results = [];
|
|
359
335
|
//if (already indented by block)
|
|
360
336
|
results.push(state.transpileToken((_a = this.tokens.if) !== null && _a !== void 0 ? _a : (0, creators_1.createToken)(TokenKind_1.TokenKind.If)));
|
|
@@ -373,13 +349,10 @@ class IfStatement extends AstNode_2.Statement {
|
|
|
373
349
|
if (thenNodes.length > 0) {
|
|
374
350
|
results.push(thenNodes);
|
|
375
351
|
}
|
|
376
|
-
results.push('\n');
|
|
377
352
|
//else branch
|
|
378
|
-
if (this.tokens.else) {
|
|
379
|
-
//else
|
|
380
|
-
results.push(state.indent(), state.transpileToken(this.tokens.else));
|
|
381
|
-
}
|
|
382
353
|
if (this.elseBranch) {
|
|
354
|
+
//else
|
|
355
|
+
results.push(...state.transpileEndBlockToken(this.thenBranch, this.tokens.else, 'else'));
|
|
383
356
|
if ((0, reflection_1.isIfStatement)(this.elseBranch)) {
|
|
384
357
|
//chained elseif
|
|
385
358
|
state.lineage.unshift(this.elseBranch);
|
|
@@ -404,17 +377,10 @@ class IfStatement extends AstNode_2.Statement {
|
|
|
404
377
|
if (body.length > 0) {
|
|
405
378
|
results.push(...body);
|
|
406
379
|
}
|
|
407
|
-
results.push('\n');
|
|
408
380
|
}
|
|
409
381
|
}
|
|
410
382
|
//end if
|
|
411
|
-
results.push(state.
|
|
412
|
-
if (this.tokens.endIf) {
|
|
413
|
-
results.push(state.transpileToken(this.tokens.endIf));
|
|
414
|
-
}
|
|
415
|
-
else {
|
|
416
|
-
results.push('end if');
|
|
417
|
-
}
|
|
383
|
+
results.push(...state.transpileEndBlockToken((_b = this.elseBranch) !== null && _b !== void 0 ? _b : this.thenBranch, this.tokens.endIf, 'end if'));
|
|
418
384
|
return results;
|
|
419
385
|
}
|
|
420
386
|
walk(visitor, options) {
|
|
@@ -428,6 +394,10 @@ class IfStatement extends AstNode_2.Statement {
|
|
|
428
394
|
(0, visitors_1.walk)(this, 'elseBranch', visitor, options);
|
|
429
395
|
}
|
|
430
396
|
}
|
|
397
|
+
getLeadingTrivia() {
|
|
398
|
+
var _a, _b;
|
|
399
|
+
return (_b = (_a = this.tokens.if) === null || _a === void 0 ? void 0 : _a.leadingTrivia) !== null && _b !== void 0 ? _b : [];
|
|
400
|
+
}
|
|
431
401
|
}
|
|
432
402
|
exports.IfStatement = IfStatement;
|
|
433
403
|
class IncrementStatement extends AstNode_2.Statement {
|
|
@@ -451,6 +421,10 @@ class IncrementStatement extends AstNode_2.Statement {
|
|
|
451
421
|
(0, visitors_1.walk)(this, 'value', visitor, options);
|
|
452
422
|
}
|
|
453
423
|
}
|
|
424
|
+
getLeadingTrivia() {
|
|
425
|
+
var _a, _b;
|
|
426
|
+
return (_b = (_a = this.value) === null || _a === void 0 ? void 0 : _a.getLeadingTrivia()) !== null && _b !== void 0 ? _b : [];
|
|
427
|
+
}
|
|
454
428
|
}
|
|
455
429
|
exports.IncrementStatement = IncrementStatement;
|
|
456
430
|
/**
|
|
@@ -500,6 +474,10 @@ class PrintStatement extends AstNode_2.Statement {
|
|
|
500
474
|
(0, visitors_1.walkArray)(this.expressions, visitor, options, this, (item) => (0, reflection_1.isExpression)(item));
|
|
501
475
|
}
|
|
502
476
|
}
|
|
477
|
+
getLeadingTrivia() {
|
|
478
|
+
var _a, _b;
|
|
479
|
+
return (_b = (_a = this.tokens.print) === null || _a === void 0 ? void 0 : _a.leadingTrivia) !== null && _b !== void 0 ? _b : [];
|
|
480
|
+
}
|
|
503
481
|
}
|
|
504
482
|
exports.PrintStatement = PrintStatement;
|
|
505
483
|
class DimStatement extends AstNode_2.Statement {
|
|
@@ -533,8 +511,8 @@ class DimStatement extends AstNode_2.Statement {
|
|
|
533
511
|
return result;
|
|
534
512
|
}
|
|
535
513
|
walk(visitor, options) {
|
|
536
|
-
var _a;
|
|
537
|
-
if (((_a = this.dimensions) === null || _a === void 0 ? void 0 : _a.length) > 0 && options.walkMode & visitors_1.InternalWalkMode.walkExpressions) {
|
|
514
|
+
var _a, _b;
|
|
515
|
+
if (((_a = this.dimensions) === null || _a === void 0 ? void 0 : _a.length) !== undefined && ((_b = this.dimensions) === null || _b === void 0 ? void 0 : _b.length) > 0 && options.walkMode & visitors_1.InternalWalkMode.walkExpressions) {
|
|
538
516
|
(0, visitors_1.walkArray)(this.dimensions, visitor, options, this);
|
|
539
517
|
}
|
|
540
518
|
}
|
|
@@ -547,6 +525,10 @@ class DimStatement extends AstNode_2.Statement {
|
|
|
547
525
|
}
|
|
548
526
|
return type;
|
|
549
527
|
}
|
|
528
|
+
getLeadingTrivia() {
|
|
529
|
+
var _a, _b;
|
|
530
|
+
return (_b = (_a = this.tokens.dim) === null || _a === void 0 ? void 0 : _a.leadingTrivia) !== null && _b !== void 0 ? _b : [];
|
|
531
|
+
}
|
|
550
532
|
}
|
|
551
533
|
exports.DimStatement = DimStatement;
|
|
552
534
|
class GotoStatement extends AstNode_2.Statement {
|
|
@@ -569,6 +551,10 @@ class GotoStatement extends AstNode_2.Statement {
|
|
|
569
551
|
walk(visitor, options) {
|
|
570
552
|
//nothing to walk
|
|
571
553
|
}
|
|
554
|
+
getLeadingTrivia() {
|
|
555
|
+
var _a, _b;
|
|
556
|
+
return (_b = (_a = this.tokens.goto) === null || _a === void 0 ? void 0 : _a.leadingTrivia) !== null && _b !== void 0 ? _b : [];
|
|
557
|
+
}
|
|
572
558
|
}
|
|
573
559
|
exports.GotoStatement = GotoStatement;
|
|
574
560
|
class LabelStatement extends AstNode_2.Statement {
|
|
@@ -619,6 +605,10 @@ class ReturnStatement extends AstNode_2.Statement {
|
|
|
619
605
|
(0, visitors_1.walk)(this, 'value', visitor, options);
|
|
620
606
|
}
|
|
621
607
|
}
|
|
608
|
+
getLeadingTrivia() {
|
|
609
|
+
var _a, _b;
|
|
610
|
+
return (_b = (_a = this.tokens.return) === null || _a === void 0 ? void 0 : _a.leadingTrivia) !== null && _b !== void 0 ? _b : [];
|
|
611
|
+
}
|
|
622
612
|
}
|
|
623
613
|
exports.ReturnStatement = ReturnStatement;
|
|
624
614
|
class EndStatement extends AstNode_2.Statement {
|
|
@@ -639,6 +629,10 @@ class EndStatement extends AstNode_2.Statement {
|
|
|
639
629
|
walk(visitor, options) {
|
|
640
630
|
//nothing to walk
|
|
641
631
|
}
|
|
632
|
+
getLeadingTrivia() {
|
|
633
|
+
var _a, _b;
|
|
634
|
+
return (_b = (_a = this.tokens.end) === null || _a === void 0 ? void 0 : _a.leadingTrivia) !== null && _b !== void 0 ? _b : [];
|
|
635
|
+
}
|
|
642
636
|
}
|
|
643
637
|
exports.EndStatement = EndStatement;
|
|
644
638
|
class StopStatement extends AstNode_2.Statement {
|
|
@@ -657,6 +651,10 @@ class StopStatement extends AstNode_2.Statement {
|
|
|
657
651
|
walk(visitor, options) {
|
|
658
652
|
//nothing to walk
|
|
659
653
|
}
|
|
654
|
+
getLeadingTrivia() {
|
|
655
|
+
var _a, _b;
|
|
656
|
+
return (_b = (_a = this.tokens.stop) === null || _a === void 0 ? void 0 : _a.leadingTrivia) !== null && _b !== void 0 ? _b : [];
|
|
657
|
+
}
|
|
660
658
|
}
|
|
661
659
|
exports.StopStatement = StopStatement;
|
|
662
660
|
class ForStatement extends AstNode_2.Statement {
|
|
@@ -693,10 +691,8 @@ class ForStatement extends AstNode_2.Statement {
|
|
|
693
691
|
state.lineage.unshift(this);
|
|
694
692
|
result.push(...this.body.transpile(state));
|
|
695
693
|
state.lineage.shift();
|
|
696
|
-
// add new line before "end for"
|
|
697
|
-
result.push('\n');
|
|
698
694
|
//end for
|
|
699
|
-
result.push(state.
|
|
695
|
+
result.push(...state.transpileEndBlockToken(this.body, this.tokens.endFor, 'end for'));
|
|
700
696
|
return result;
|
|
701
697
|
}
|
|
702
698
|
walk(visitor, options) {
|
|
@@ -711,6 +707,10 @@ class ForStatement extends AstNode_2.Statement {
|
|
|
711
707
|
(0, visitors_1.walk)(this, 'body', visitor, options);
|
|
712
708
|
}
|
|
713
709
|
}
|
|
710
|
+
getLeadingTrivia() {
|
|
711
|
+
var _a, _b;
|
|
712
|
+
return (_b = (_a = this.tokens.for) === null || _a === void 0 ? void 0 : _a.leadingTrivia) !== null && _b !== void 0 ? _b : [];
|
|
713
|
+
}
|
|
714
714
|
}
|
|
715
715
|
exports.ForStatement = ForStatement;
|
|
716
716
|
class ForEachStatement extends AstNode_2.Statement {
|
|
@@ -741,10 +741,8 @@ class ForEachStatement extends AstNode_2.Statement {
|
|
|
741
741
|
state.lineage.unshift(this);
|
|
742
742
|
result.push(...this.body.transpile(state));
|
|
743
743
|
state.lineage.shift();
|
|
744
|
-
// add new line before "end for"
|
|
745
|
-
result.push('\n');
|
|
746
744
|
//end for
|
|
747
|
-
result.push(state.
|
|
745
|
+
result.push(...state.transpileEndBlockToken(this.body, this.tokens.endFor, 'end for'));
|
|
748
746
|
return result;
|
|
749
747
|
}
|
|
750
748
|
walk(visitor, options) {
|
|
@@ -755,6 +753,13 @@ class ForEachStatement extends AstNode_2.Statement {
|
|
|
755
753
|
(0, visitors_1.walk)(this, 'body', visitor, options);
|
|
756
754
|
}
|
|
757
755
|
}
|
|
756
|
+
getType(options) {
|
|
757
|
+
return this.getSymbolTable().getSymbolType(this.tokens.item.text, options);
|
|
758
|
+
}
|
|
759
|
+
getLeadingTrivia() {
|
|
760
|
+
var _a, _b;
|
|
761
|
+
return (_b = (_a = this.tokens.forEach) === null || _a === void 0 ? void 0 : _a.leadingTrivia) !== null && _b !== void 0 ? _b : [];
|
|
762
|
+
}
|
|
758
763
|
}
|
|
759
764
|
exports.ForEachStatement = ForEachStatement;
|
|
760
765
|
class WhileStatement extends AstNode_2.Statement {
|
|
@@ -779,10 +784,8 @@ class WhileStatement extends AstNode_2.Statement {
|
|
|
779
784
|
//body
|
|
780
785
|
result.push(...this.body.transpile(state));
|
|
781
786
|
state.lineage.shift();
|
|
782
|
-
//trailing newline only if we have body statements
|
|
783
|
-
result.push('\n');
|
|
784
787
|
//end while
|
|
785
|
-
result.push(state.
|
|
788
|
+
result.push(...state.transpileEndBlockToken(this.body, this.tokens.endWhile, 'end while'));
|
|
786
789
|
return result;
|
|
787
790
|
}
|
|
788
791
|
walk(visitor, options) {
|
|
@@ -793,6 +796,10 @@ class WhileStatement extends AstNode_2.Statement {
|
|
|
793
796
|
(0, visitors_1.walk)(this, 'body', visitor, options);
|
|
794
797
|
}
|
|
795
798
|
}
|
|
799
|
+
getLeadingTrivia() {
|
|
800
|
+
var _a, _b;
|
|
801
|
+
return (_b = (_a = this.tokens.while) === null || _a === void 0 ? void 0 : _a.leadingTrivia) !== null && _b !== void 0 ? _b : [];
|
|
802
|
+
}
|
|
796
803
|
}
|
|
797
804
|
exports.WhileStatement = WhileStatement;
|
|
798
805
|
class DottedSetStatement extends AstNode_2.Statement {
|
|
@@ -844,6 +851,9 @@ class DottedSetStatement extends AstNode_2.Statement {
|
|
|
844
851
|
}));
|
|
845
852
|
return result;
|
|
846
853
|
}
|
|
854
|
+
getLeadingTrivia() {
|
|
855
|
+
return this.obj.getLeadingTrivia();
|
|
856
|
+
}
|
|
847
857
|
}
|
|
848
858
|
exports.DottedSetStatement = DottedSetStatement;
|
|
849
859
|
class IndexedSetStatement extends AstNode_2.Statement {
|
|
@@ -891,6 +901,9 @@ class IndexedSetStatement extends AstNode_2.Statement {
|
|
|
891
901
|
(0, visitors_1.walk)(this, 'value', visitor, options);
|
|
892
902
|
}
|
|
893
903
|
}
|
|
904
|
+
getLeadingTrivia() {
|
|
905
|
+
return this.obj.getLeadingTrivia();
|
|
906
|
+
}
|
|
894
907
|
}
|
|
895
908
|
exports.IndexedSetStatement = IndexedSetStatement;
|
|
896
909
|
class LibraryStatement extends AstNode_2.Statement {
|
|
@@ -918,6 +931,10 @@ class LibraryStatement extends AstNode_2.Statement {
|
|
|
918
931
|
walk(visitor, options) {
|
|
919
932
|
//nothing to walk
|
|
920
933
|
}
|
|
934
|
+
getLeadingTrivia() {
|
|
935
|
+
var _a, _b;
|
|
936
|
+
return (_b = (_a = this.tokens.library) === null || _a === void 0 ? void 0 : _a.leadingTrivia) !== null && _b !== void 0 ? _b : [];
|
|
937
|
+
}
|
|
921
938
|
}
|
|
922
939
|
exports.LibraryStatement = LibraryStatement;
|
|
923
940
|
class NamespaceStatement extends AstNode_2.Statement {
|
|
@@ -937,9 +954,8 @@ class NamespaceStatement extends AstNode_2.Statement {
|
|
|
937
954
|
return this.cacheRange();
|
|
938
955
|
}
|
|
939
956
|
cacheRange() {
|
|
940
|
-
var _a;
|
|
941
957
|
if (!this._range) {
|
|
942
|
-
this._range =
|
|
958
|
+
this._range = util_1.util.createBoundingRange(this.tokens.namespace, this.nameExpression, this.body, this.tokens.endNamespace);
|
|
943
959
|
}
|
|
944
960
|
return this._range;
|
|
945
961
|
}
|
|
@@ -969,11 +985,12 @@ class NamespaceStatement extends AstNode_2.Statement {
|
|
|
969
985
|
return this.body.transpile(state);
|
|
970
986
|
}
|
|
971
987
|
getTypedef(state) {
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
state.newline
|
|
976
|
-
|
|
988
|
+
var _a;
|
|
989
|
+
let result = [];
|
|
990
|
+
for (let comment of (_a = util_1.util.getLeadingComments(this)) !== null && _a !== void 0 ? _a : []) {
|
|
991
|
+
result.push(comment.text, state.newline, state.indent());
|
|
992
|
+
}
|
|
993
|
+
result.push('namespace ', ...this.getName(Parser_1.ParseMode.BrighterScript), state.newline);
|
|
977
994
|
state.blockDepth++;
|
|
978
995
|
result.push(...this.body.getTypedef(state));
|
|
979
996
|
state.blockDepth--;
|
|
@@ -996,6 +1013,7 @@ class NamespaceStatement extends AstNode_2.Statement {
|
|
|
996
1013
|
exports.NamespaceStatement = NamespaceStatement;
|
|
997
1014
|
class ImportStatement extends AstNode_2.Statement {
|
|
998
1015
|
constructor(options) {
|
|
1016
|
+
var _a;
|
|
999
1017
|
super();
|
|
1000
1018
|
this.kind = AstNode_1.AstNodeKind.ImportStatement;
|
|
1001
1019
|
this.tokens = {
|
|
@@ -1006,8 +1024,10 @@ class ImportStatement extends AstNode_2.Statement {
|
|
|
1006
1024
|
if (this.tokens.path) {
|
|
1007
1025
|
//remove quotes
|
|
1008
1026
|
this.filePath = this.tokens.path.text.replace(/"/g, '');
|
|
1009
|
-
|
|
1010
|
-
|
|
1027
|
+
if ((_a = this.tokens.path) === null || _a === void 0 ? void 0 : _a.range) {
|
|
1028
|
+
//adjust the range to exclude the quotes
|
|
1029
|
+
this.tokens.path.range = util_1.util.createRange(this.tokens.path.range.start.line, this.tokens.path.range.start.character + 1, this.tokens.path.range.end.line, this.tokens.path.range.end.character - 1);
|
|
1030
|
+
}
|
|
1011
1031
|
}
|
|
1012
1032
|
}
|
|
1013
1033
|
transpile(state) {
|
|
@@ -1035,6 +1055,10 @@ class ImportStatement extends AstNode_2.Statement {
|
|
|
1035
1055
|
walk(visitor, options) {
|
|
1036
1056
|
//nothing to walk
|
|
1037
1057
|
}
|
|
1058
|
+
getLeadingTrivia() {
|
|
1059
|
+
var _a, _b;
|
|
1060
|
+
return (_b = (_a = this.tokens.import) === null || _a === void 0 ? void 0 : _a.leadingTrivia) !== null && _b !== void 0 ? _b : [];
|
|
1061
|
+
}
|
|
1038
1062
|
}
|
|
1039
1063
|
exports.ImportStatement = ImportStatement;
|
|
1040
1064
|
class InterfaceStatement extends AstNode_2.Statement {
|
|
@@ -1111,17 +1135,20 @@ class InterfaceStatement extends AstNode_2.Statement {
|
|
|
1111
1135
|
return [];
|
|
1112
1136
|
}
|
|
1113
1137
|
getTypedef(state) {
|
|
1114
|
-
var _a, _b, _c;
|
|
1138
|
+
var _a, _b, _c, _d;
|
|
1115
1139
|
const result = [];
|
|
1116
|
-
for (let
|
|
1140
|
+
for (let comment of (_a = util_1.util.getLeadingComments(this)) !== null && _a !== void 0 ? _a : []) {
|
|
1141
|
+
result.push(comment.text, state.newline, state.indent());
|
|
1142
|
+
}
|
|
1143
|
+
for (let annotation of (_b = this.annotations) !== null && _b !== void 0 ? _b : []) {
|
|
1117
1144
|
result.push(...annotation.getTypedef(state), state.newline, state.indent());
|
|
1118
1145
|
}
|
|
1119
1146
|
result.push(this.tokens.interface.text, ' ', this.tokens.name.text);
|
|
1120
|
-
const parentInterfaceName = (
|
|
1147
|
+
const parentInterfaceName = (_c = this.parentInterfaceName) === null || _c === void 0 ? void 0 : _c.getName();
|
|
1121
1148
|
if (parentInterfaceName) {
|
|
1122
1149
|
result.push(' extends ', parentInterfaceName);
|
|
1123
1150
|
}
|
|
1124
|
-
const body = (
|
|
1151
|
+
const body = (_d = this.body) !== null && _d !== void 0 ? _d : [];
|
|
1125
1152
|
if (body.length > 0) {
|
|
1126
1153
|
state.blockDepth++;
|
|
1127
1154
|
}
|
|
@@ -1202,9 +1229,12 @@ class InterfaceFieldStatement extends AstNode_2.Statement {
|
|
|
1202
1229
|
}
|
|
1203
1230
|
}
|
|
1204
1231
|
getTypedef(state) {
|
|
1205
|
-
var _a;
|
|
1232
|
+
var _a, _b;
|
|
1206
1233
|
const result = [];
|
|
1207
|
-
for (let
|
|
1234
|
+
for (let comment of (_a = util_1.util.getLeadingComments(this)) !== null && _a !== void 0 ? _a : []) {
|
|
1235
|
+
result.push(comment.text, state.newline, state.indent());
|
|
1236
|
+
}
|
|
1237
|
+
for (let annotation of (_b = this.annotations) !== null && _b !== void 0 ? _b : []) {
|
|
1208
1238
|
result.push(...annotation.getTypedef(state), state.newline, state.indent());
|
|
1209
1239
|
}
|
|
1210
1240
|
if (this.isOptional) {
|
|
@@ -1266,16 +1296,19 @@ class InterfaceMethodStatement extends AstNode_2.Statement {
|
|
|
1266
1296
|
}
|
|
1267
1297
|
}
|
|
1268
1298
|
getTypedef(state) {
|
|
1269
|
-
var _a, _b, _c, _d;
|
|
1299
|
+
var _a, _b, _c, _d, _e;
|
|
1270
1300
|
const result = [];
|
|
1271
|
-
for (let
|
|
1301
|
+
for (let comment of (_a = util_1.util.getLeadingComments(this)) !== null && _a !== void 0 ? _a : []) {
|
|
1302
|
+
result.push(comment.text, state.newline, state.indent());
|
|
1303
|
+
}
|
|
1304
|
+
for (let annotation of (_b = this.annotations) !== null && _b !== void 0 ? _b : []) {
|
|
1272
1305
|
result.push(...annotation.getTypedef(state), state.newline, state.indent());
|
|
1273
1306
|
}
|
|
1274
1307
|
if (this.isOptional) {
|
|
1275
1308
|
result.push(this.tokens.optional.text, ' ');
|
|
1276
1309
|
}
|
|
1277
|
-
result.push((
|
|
1278
|
-
const params = (
|
|
1310
|
+
result.push((_d = (_c = this.tokens.functionType) === null || _c === void 0 ? void 0 : _c.text) !== null && _d !== void 0 ? _d : 'function', ' ', this.tokens.name.text, '(');
|
|
1311
|
+
const params = (_e = this.params) !== null && _e !== void 0 ? _e : [];
|
|
1279
1312
|
for (let i = 0; i < params.length; i++) {
|
|
1280
1313
|
if (i > 0) {
|
|
1281
1314
|
result.push(', ');
|
|
@@ -1379,9 +1412,12 @@ class ClassStatement extends AstNode_2.Statement {
|
|
|
1379
1412
|
return result;
|
|
1380
1413
|
}
|
|
1381
1414
|
getTypedef(state) {
|
|
1382
|
-
var _a;
|
|
1415
|
+
var _a, _b;
|
|
1383
1416
|
const result = [];
|
|
1384
|
-
for (let
|
|
1417
|
+
for (let comment of (_a = util_1.util.getLeadingComments(this)) !== null && _a !== void 0 ? _a : []) {
|
|
1418
|
+
result.push(comment.text, state.newline, state.indent());
|
|
1419
|
+
}
|
|
1420
|
+
for (let annotation of (_b = this.annotations) !== null && _b !== void 0 ? _b : []) {
|
|
1385
1421
|
result.push(...annotation.getTypedef(state), state.newline, state.indent());
|
|
1386
1422
|
}
|
|
1387
1423
|
result.push('class ', this.tokens.name.text);
|
|
@@ -1573,7 +1609,7 @@ class ClassStatement extends AstNode_2.Statement {
|
|
|
1573
1609
|
let result = [];
|
|
1574
1610
|
const constructorFunction = this.getConstructorFunction();
|
|
1575
1611
|
const constructorParams = constructorFunction ? constructorFunction.func.parameters : [];
|
|
1576
|
-
result.push(state.sourceNode(this, 'function'), state.sourceNode(this, ' '), state.sourceNode(this.tokens.name, this.getName(Parser_1.ParseMode.BrightScript)), `(`);
|
|
1612
|
+
result.push(state.sourceNode(this.tokens.class, 'function'), state.sourceNode(this.tokens.class, ' '), state.sourceNode(this.tokens.name, this.getName(Parser_1.ParseMode.BrightScript)), `(`);
|
|
1577
1613
|
let i = 0;
|
|
1578
1614
|
for (let param of constructorParams) {
|
|
1579
1615
|
if (i > 0) {
|
|
@@ -1711,9 +1747,12 @@ class MethodStatement extends FunctionStatement {
|
|
|
1711
1747
|
return this.func.transpile(state);
|
|
1712
1748
|
}
|
|
1713
1749
|
getTypedef(state) {
|
|
1714
|
-
var _a;
|
|
1750
|
+
var _a, _b;
|
|
1715
1751
|
const result = [];
|
|
1716
|
-
for (let
|
|
1752
|
+
for (let comment of (_a = util_1.util.getLeadingComments(this)) !== null && _a !== void 0 ? _a : []) {
|
|
1753
|
+
result.push(comment.text, state.newline, state.indent());
|
|
1754
|
+
}
|
|
1755
|
+
for (let annotation of (_b = this.annotations) !== null && _b !== void 0 ? _b : []) {
|
|
1717
1756
|
result.push(...annotation.getTypedef(state), state.newline, state.indent());
|
|
1718
1757
|
}
|
|
1719
1758
|
if (this.accessModifier) {
|
|
@@ -1736,10 +1775,11 @@ class MethodStatement extends FunctionStatement {
|
|
|
1736
1775
|
}
|
|
1737
1776
|
//check whether any calls to super exist
|
|
1738
1777
|
let containsSuperCall = this.func.body.statements.findIndex((x) => {
|
|
1778
|
+
var _a;
|
|
1739
1779
|
//is a call statement
|
|
1740
1780
|
return (0, reflection_1.isExpressionStatement)(x) && (0, reflection_1.isCallExpression)(x.expression) &&
|
|
1741
1781
|
//is a call to super
|
|
1742
|
-
util_1.util.findBeginningVariableExpression(x.expression.callee).tokens.name.text.toLowerCase() === 'super';
|
|
1782
|
+
((_a = util_1.util.findBeginningVariableExpression(x.expression.callee).tokens.name) === null || _a === void 0 ? void 0 : _a.text.toLowerCase()) === 'super';
|
|
1743
1783
|
}) !== -1;
|
|
1744
1784
|
//if a call to super exists, quit here
|
|
1745
1785
|
if (containsSuperCall) {
|
|
@@ -1783,12 +1823,13 @@ class MethodStatement extends FunctionStatement {
|
|
|
1783
1823
|
* Inject field initializers at the top of the `new` function (after any present `super()` call)
|
|
1784
1824
|
*/
|
|
1785
1825
|
injectFieldInitializersForConstructor(state) {
|
|
1826
|
+
var _a;
|
|
1786
1827
|
let startingIndex = state.classStatement.hasParentClass() ? 1 : 0;
|
|
1787
1828
|
let newStatements = [];
|
|
1788
1829
|
//insert the field initializers in order
|
|
1789
1830
|
for (let field of state.classStatement.fields) {
|
|
1790
1831
|
let thisQualifiedName = Object.assign({}, field.tokens.name);
|
|
1791
|
-
thisQualifiedName.text = 'm.' + field.tokens.name.text;
|
|
1832
|
+
thisQualifiedName.text = 'm.' + ((_a = field.tokens.name) === null || _a === void 0 ? void 0 : _a.text);
|
|
1792
1833
|
const fieldAssignment = field.initialValue
|
|
1793
1834
|
? new AssignmentStatement({
|
|
1794
1835
|
equals: field.tokens.equals,
|
|
@@ -1848,21 +1889,24 @@ class FieldStatement extends AstNode_2.Statement {
|
|
|
1848
1889
|
throw new Error('transpile not implemented for ' + Object.getPrototypeOf(this).constructor.name);
|
|
1849
1890
|
}
|
|
1850
1891
|
getTypedef(state) {
|
|
1851
|
-
var _a, _b, _c, _d;
|
|
1892
|
+
var _a, _b, _c, _d, _e;
|
|
1852
1893
|
const result = [];
|
|
1853
1894
|
if (this.tokens.name) {
|
|
1854
|
-
for (let
|
|
1895
|
+
for (let comment of (_a = util_1.util.getLeadingComments(this)) !== null && _a !== void 0 ? _a : []) {
|
|
1896
|
+
result.push(comment.text, state.newline, state.indent());
|
|
1897
|
+
}
|
|
1898
|
+
for (let annotation of (_b = this.annotations) !== null && _b !== void 0 ? _b : []) {
|
|
1855
1899
|
result.push(...annotation.getTypedef(state), state.newline, state.indent());
|
|
1856
1900
|
}
|
|
1857
1901
|
let type = this.getType({ flags: 2 /* SymbolTypeFlag.typetime */ });
|
|
1858
1902
|
if ((0, reflection_1.isInvalidType)(type) || (0, reflection_1.isVoidType)(type)) {
|
|
1859
1903
|
type = new DynamicType_1.DynamicType();
|
|
1860
1904
|
}
|
|
1861
|
-
result.push((
|
|
1905
|
+
result.push((_d = (_c = this.tokens.accessModifier) === null || _c === void 0 ? void 0 : _c.text) !== null && _d !== void 0 ? _d : 'public', ' ');
|
|
1862
1906
|
if (this.isOptional) {
|
|
1863
1907
|
result.push(this.tokens.optional.text, ' ');
|
|
1864
1908
|
}
|
|
1865
|
-
result.push((
|
|
1909
|
+
result.push((_e = this.tokens.name) === null || _e === void 0 ? void 0 : _e.text, ' as ', type.toTypeString());
|
|
1866
1910
|
}
|
|
1867
1911
|
return result;
|
|
1868
1912
|
}
|
|
@@ -1905,6 +1949,10 @@ class TryCatchStatement extends AstNode_2.Statement {
|
|
|
1905
1949
|
(0, visitors_1.walk)(this, 'catchStatement', visitor, options);
|
|
1906
1950
|
}
|
|
1907
1951
|
}
|
|
1952
|
+
getLeadingTrivia() {
|
|
1953
|
+
var _a, _b;
|
|
1954
|
+
return (_b = (_a = this.tokens.try) === null || _a === void 0 ? void 0 : _a.leadingTrivia) !== null && _b !== void 0 ? _b : [];
|
|
1955
|
+
}
|
|
1908
1956
|
}
|
|
1909
1957
|
exports.TryCatchStatement = TryCatchStatement;
|
|
1910
1958
|
class CatchStatement extends AstNode_2.Statement {
|
|
@@ -1932,6 +1980,10 @@ class CatchStatement extends AstNode_2.Statement {
|
|
|
1932
1980
|
(0, visitors_1.walk)(this, 'catchBranch', visitor, options);
|
|
1933
1981
|
}
|
|
1934
1982
|
}
|
|
1983
|
+
getLeadingTrivia() {
|
|
1984
|
+
var _a, _b;
|
|
1985
|
+
return (_b = (_a = this.tokens.catch) === null || _a === void 0 ? void 0 : _a.leadingTrivia) !== null && _b !== void 0 ? _b : [];
|
|
1986
|
+
}
|
|
1935
1987
|
}
|
|
1936
1988
|
exports.CatchStatement = CatchStatement;
|
|
1937
1989
|
class ThrowStatement extends AstNode_2.Statement {
|
|
@@ -1955,7 +2007,7 @@ class ThrowStatement extends AstNode_2.Statement {
|
|
|
1955
2007
|
//no expression found. Rather than emit syntax errors, provide a generic error message
|
|
1956
2008
|
}
|
|
1957
2009
|
else {
|
|
1958
|
-
result.push('"
|
|
2010
|
+
result.push('"User-specified exception"');
|
|
1959
2011
|
}
|
|
1960
2012
|
return result;
|
|
1961
2013
|
}
|
|
@@ -1964,6 +2016,10 @@ class ThrowStatement extends AstNode_2.Statement {
|
|
|
1964
2016
|
(0, visitors_1.walk)(this, 'expression', visitor, options);
|
|
1965
2017
|
}
|
|
1966
2018
|
}
|
|
2019
|
+
getLeadingTrivia() {
|
|
2020
|
+
var _a, _b;
|
|
2021
|
+
return (_b = (_a = this.tokens.throw) === null || _a === void 0 ? void 0 : _a.leadingTrivia) !== null && _b !== void 0 ? _b : [];
|
|
2022
|
+
}
|
|
1967
2023
|
}
|
|
1968
2024
|
exports.ThrowStatement = ThrowStatement;
|
|
1969
2025
|
class EnumStatement extends AstNode_2.Statement {
|
|
@@ -1992,7 +2048,8 @@ class EnumStatement extends AstNode_2.Statement {
|
|
|
1992
2048
|
return result;
|
|
1993
2049
|
}
|
|
1994
2050
|
getLeadingTrivia() {
|
|
1995
|
-
|
|
2051
|
+
var _a;
|
|
2052
|
+
return util_1.util.concatAnnotationLeadingTrivia(this, (_a = this.tokens.enum) === null || _a === void 0 ? void 0 : _a.leadingTrivia);
|
|
1996
2053
|
}
|
|
1997
2054
|
/**
|
|
1998
2055
|
* Get a map of member names and their values.
|
|
@@ -2066,12 +2123,15 @@ class EnumStatement extends AstNode_2.Statement {
|
|
|
2066
2123
|
return [];
|
|
2067
2124
|
}
|
|
2068
2125
|
getTypedef(state) {
|
|
2069
|
-
var _a, _b, _c, _d, _e;
|
|
2126
|
+
var _a, _b, _c, _d, _e, _f;
|
|
2070
2127
|
const result = [];
|
|
2071
|
-
for (let
|
|
2128
|
+
for (let comment of (_a = util_1.util.getLeadingComments(this)) !== null && _a !== void 0 ? _a : []) {
|
|
2129
|
+
result.push(comment.text, state.newline, state.indent());
|
|
2130
|
+
}
|
|
2131
|
+
for (let annotation of (_b = this.annotations) !== null && _b !== void 0 ? _b : []) {
|
|
2072
2132
|
result.push(...annotation.getTypedef(state), state.newline, state.indent());
|
|
2073
2133
|
}
|
|
2074
|
-
result.push((
|
|
2134
|
+
result.push((_d = (_c = this.tokens.enum) === null || _c === void 0 ? void 0 : _c.text) !== null && _d !== void 0 ? _d : 'enum', ' ', this.tokens.name.text);
|
|
2075
2135
|
result.push(state.newline);
|
|
2076
2136
|
state.blockDepth++;
|
|
2077
2137
|
for (const member of this.body) {
|
|
@@ -2080,7 +2140,7 @@ class EnumStatement extends AstNode_2.Statement {
|
|
|
2080
2140
|
}
|
|
2081
2141
|
}
|
|
2082
2142
|
state.blockDepth--;
|
|
2083
|
-
result.push(state.indent(), (
|
|
2143
|
+
result.push(state.indent(), (_f = (_e = this.tokens.endEnum) === null || _e === void 0 ? void 0 : _e.text) !== null && _f !== void 0 ? _f : 'end enum');
|
|
2084
2144
|
return result;
|
|
2085
2145
|
}
|
|
2086
2146
|
walk(visitor, options) {
|
|
@@ -2126,9 +2186,12 @@ class EnumMemberStatement extends AstNode_2.Statement {
|
|
|
2126
2186
|
return [];
|
|
2127
2187
|
}
|
|
2128
2188
|
getTypedef(state) {
|
|
2129
|
-
|
|
2130
|
-
|
|
2131
|
-
]
|
|
2189
|
+
var _a;
|
|
2190
|
+
const result = [];
|
|
2191
|
+
for (let comment of (_a = util_1.util.getLeadingComments(this)) !== null && _a !== void 0 ? _a : []) {
|
|
2192
|
+
result.push(comment.text, state.newline, state.indent());
|
|
2193
|
+
}
|
|
2194
|
+
result.push(this.tokens.name.text);
|
|
2132
2195
|
if (this.tokens.equals) {
|
|
2133
2196
|
result.push(' ', this.tokens.equals.text, ' ');
|
|
2134
2197
|
if (this.value) {
|
|
@@ -2164,7 +2227,8 @@ class ConstStatement extends AstNode_2.Statement {
|
|
|
2164
2227
|
return this.tokens.name.text;
|
|
2165
2228
|
}
|
|
2166
2229
|
getLeadingTrivia() {
|
|
2167
|
-
|
|
2230
|
+
var _a;
|
|
2231
|
+
return util_1.util.concatAnnotationLeadingTrivia(this, (_a = this.tokens.const) === null || _a === void 0 ? void 0 : _a.leadingTrivia);
|
|
2168
2232
|
}
|
|
2169
2233
|
/**
|
|
2170
2234
|
* The name of the statement WITH its leading namespace (if applicable)
|
|
@@ -2192,15 +2256,13 @@ class ConstStatement extends AstNode_2.Statement {
|
|
|
2192
2256
|
return [];
|
|
2193
2257
|
}
|
|
2194
2258
|
getTypedef(state) {
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
...this.value.transpile(state)
|
|
2203
|
-
];
|
|
2259
|
+
var _a;
|
|
2260
|
+
const result = [];
|
|
2261
|
+
for (let comment of (_a = util_1.util.getLeadingComments(this)) !== null && _a !== void 0 ? _a : []) {
|
|
2262
|
+
result.push(comment.text, state.newline, state.indent());
|
|
2263
|
+
}
|
|
2264
|
+
result.push(this.tokens.const ? state.tokenToSourceNode(this.tokens.const) : 'const', ' ', state.tokenToSourceNode(this.tokens.name), ' ', this.tokens.equals ? state.tokenToSourceNode(this.tokens.equals) : '=', ' ', ...this.value.transpile(state));
|
|
2265
|
+
return result;
|
|
2204
2266
|
}
|
|
2205
2267
|
walk(visitor, options) {
|
|
2206
2268
|
if (this.value && options.walkMode & visitors_1.InternalWalkMode.walkExpressions) {
|
|
@@ -2233,6 +2295,10 @@ class ContinueStatement extends AstNode_2.Statement {
|
|
|
2233
2295
|
walk(visitor, options) {
|
|
2234
2296
|
//nothing to walk
|
|
2235
2297
|
}
|
|
2298
|
+
getLeadingTrivia() {
|
|
2299
|
+
var _a, _b;
|
|
2300
|
+
return (_b = (_a = this.tokens.continue) === null || _a === void 0 ? void 0 : _a.leadingTrivia) !== null && _b !== void 0 ? _b : [];
|
|
2301
|
+
}
|
|
2236
2302
|
}
|
|
2237
2303
|
exports.ContinueStatement = ContinueStatement;
|
|
2238
2304
|
//# sourceMappingURL=Statement.js.map
|