brighterscript 0.57.2 → 0.59.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 +31 -0
- package/README.md +16 -6
- package/bsconfig.schema.json +11 -0
- package/dist/BsConfig.d.ts +11 -0
- package/dist/DiagnosticMessages.d.ts +7 -2
- package/dist/DiagnosticMessages.js +7 -2
- package/dist/DiagnosticMessages.js.map +1 -1
- package/dist/Program.d.ts +12 -2
- package/dist/Program.js +69 -24
- package/dist/Program.js.map +1 -1
- package/dist/ProgramBuilder.js +1 -1
- package/dist/ProgramBuilder.js.map +1 -1
- package/dist/Scope.d.ts +6 -3
- package/dist/Scope.js +24 -17
- package/dist/Scope.js.map +1 -1
- package/dist/astUtils/AstEditor.d.ts +2 -3
- package/dist/astUtils/AstEditor.js.map +1 -1
- package/dist/astUtils/creators.d.ts +4 -4
- package/dist/astUtils/creators.js +6 -6
- package/dist/astUtils/creators.js.map +1 -1
- package/dist/astUtils/reflection.d.ts +67 -64
- package/dist/astUtils/reflection.js +10 -2
- package/dist/astUtils/reflection.js.map +1 -1
- package/dist/astUtils/reflection.spec.js +8 -3
- package/dist/astUtils/reflection.spec.js.map +1 -1
- package/dist/astUtils/visitors.d.ts +33 -31
- package/dist/astUtils/visitors.js.map +1 -1
- package/dist/astUtils/visitors.spec.js.map +1 -1
- package/dist/bscPlugin/BscPlugin.js +4 -0
- package/dist/bscPlugin/BscPlugin.js.map +1 -1
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +6 -6
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/hover/HoverProcessor.spec.js +40 -34
- package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +2 -2
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +2 -2
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js +4 -5
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/validation/BrsFileValidator.d.ts +2 -0
- package/dist/bscPlugin/validation/BrsFileValidator.js +166 -12
- package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.d.ts +21 -19
- package/dist/bscPlugin/validation/ScopeValidator.js +164 -179
- package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
- package/dist/bscPlugin/validation/XmlFileValidator.d.ts +8 -0
- package/dist/bscPlugin/validation/XmlFileValidator.js +44 -0
- package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -0
- package/dist/files/BrsFile.Class.spec.js +33 -35
- package/dist/files/BrsFile.Class.spec.js.map +1 -1
- package/dist/files/BrsFile.d.ts +11 -5
- package/dist/files/BrsFile.js +15 -47
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +107 -79
- package/dist/files/BrsFile.spec.js.map +1 -1
- package/dist/files/XmlFile.d.ts +9 -4
- package/dist/files/XmlFile.js +6 -30
- package/dist/files/XmlFile.js.map +1 -1
- package/dist/files/XmlFile.spec.js +57 -90
- package/dist/files/XmlFile.spec.js.map +1 -1
- package/dist/files/tests/imports.spec.js +13 -15
- package/dist/files/tests/imports.spec.js.map +1 -1
- package/dist/files/tests/optionalChaning.spec.js +10 -12
- package/dist/files/tests/optionalChaning.spec.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 +2 -3
- package/dist/lexer/Lexer.spec.js +6 -0
- package/dist/lexer/Lexer.spec.js.map +1 -1
- package/dist/lexer/TokenKind.d.ts +1 -0
- package/dist/lexer/TokenKind.js +6 -2
- package/dist/lexer/TokenKind.js.map +1 -1
- package/dist/parser/AstNode.d.ts +65 -0
- package/dist/parser/AstNode.js +93 -0
- package/dist/parser/AstNode.js.map +1 -0
- package/dist/parser/AstNode.spec.d.ts +1 -0
- package/dist/parser/AstNode.spec.js +42 -0
- package/dist/parser/AstNode.spec.js.map +1 -0
- package/dist/parser/Expression.d.ts +6 -43
- package/dist/parser/Expression.js +53 -81
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.d.ts +15 -12
- package/dist/parser/Parser.js +130 -117
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/Parser.spec.d.ts +1 -1
- package/dist/parser/Parser.spec.js.map +1 -1
- package/dist/parser/SGParser.spec.js +2 -3
- package/dist/parser/SGParser.spec.js.map +1 -1
- package/dist/parser/Statement.d.ts +28 -44
- package/dist/parser/Statement.js +118 -104
- package/dist/parser/Statement.js.map +1 -1
- package/dist/parser/Statement.spec.js +16 -10
- package/dist/parser/Statement.spec.js.map +1 -1
- package/dist/parser/tests/expression/ArrayLiterals.spec.js +37 -0
- package/dist/parser/tests/expression/ArrayLiterals.spec.js.map +1 -1
- package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +41 -0
- package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +1 -1
- package/dist/parser/tests/expression/Call.spec.js +109 -1
- package/dist/parser/tests/expression/Call.spec.js.map +1 -1
- package/dist/parser/tests/expression/Indexing.spec.js +49 -4
- package/dist/parser/tests/expression/Indexing.spec.js.map +1 -1
- package/dist/parser/tests/statement/ConstStatement.spec.js +7 -7
- package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Continue.spec.d.ts +1 -0
- package/dist/parser/tests/statement/Continue.spec.js +92 -0
- package/dist/parser/tests/statement/Continue.spec.js.map +1 -0
- package/dist/parser/tests/statement/Enum.spec.js +36 -9
- package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
- package/dist/parser/tests/statement/For.spec.js +3 -4
- package/dist/parser/tests/statement/For.spec.js.map +1 -1
- package/dist/parser/tests/statement/ForEach.spec.js +4 -5
- package/dist/parser/tests/statement/ForEach.spec.js.map +1 -1
- package/dist/parser/tests/statement/InterfaceStatement.spec.js +4 -5
- package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/PrintStatement.spec.js +3 -4
- package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
- package/dist/util.d.ts +11 -5
- package/dist/util.js +57 -6
- package/dist/util.js.map +1 -1
- package/dist/validators/ClassValidator.js +22 -19
- package/dist/validators/ClassValidator.js.map +1 -1
- package/package.json +2 -2
package/dist/parser/Statement.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ConstStatement = exports.EnumMemberStatement = exports.EnumStatement = exports.ThrowStatement = exports.CatchStatement = exports.TryCatchStatement = exports.ClassFieldStatement = exports.FieldStatement = exports.ClassMethodStatement = 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.CommentStatement = exports.ExpressionStatement = exports.Block = exports.AssignmentStatement = exports.Body = exports.EmptyStatement =
|
|
3
|
+
exports.ContinueStatement = exports.ConstStatement = exports.EnumMemberStatement = exports.EnumStatement = exports.ThrowStatement = exports.CatchStatement = exports.TryCatchStatement = exports.ClassFieldStatement = exports.FieldStatement = exports.ClassMethodStatement = 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.CommentStatement = 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");
|
|
@@ -11,26 +11,8 @@ const reflection_1 = require("../astUtils/reflection");
|
|
|
11
11
|
const creators_1 = require("../astUtils/creators");
|
|
12
12
|
const DynamicType_1 = require("../types/DynamicType");
|
|
13
13
|
const SymbolTable_1 = require("../SymbolTable");
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
*/
|
|
17
|
-
class Statement {
|
|
18
|
-
constructor() {
|
|
19
|
-
/**
|
|
20
|
-
* When being considered by the walk visitor, this describes what type of element the current class is.
|
|
21
|
-
*/
|
|
22
|
-
this.visitMode = visitors_1.InternalWalkMode.visitStatements;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Get the closest symbol table for this node. Should be overridden in children that directly contain a symbol table
|
|
26
|
-
*/
|
|
27
|
-
getSymbolTable() {
|
|
28
|
-
var _a;
|
|
29
|
-
return (_a = this.parent) === null || _a === void 0 ? void 0 : _a.getSymbolTable();
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
exports.Statement = Statement;
|
|
33
|
-
class EmptyStatement extends Statement {
|
|
14
|
+
const AstNode_1 = require("./AstNode");
|
|
15
|
+
class EmptyStatement extends AstNode_1.Statement {
|
|
34
16
|
constructor(
|
|
35
17
|
/**
|
|
36
18
|
* Create a negative range to indicate this is an interpolated location
|
|
@@ -50,14 +32,11 @@ exports.EmptyStatement = EmptyStatement;
|
|
|
50
32
|
/**
|
|
51
33
|
* This is a top-level statement. Consider this the root of the AST
|
|
52
34
|
*/
|
|
53
|
-
class Body extends Statement {
|
|
54
|
-
constructor(statements = []
|
|
35
|
+
class Body extends AstNode_1.Statement {
|
|
36
|
+
constructor(statements = []) {
|
|
55
37
|
super();
|
|
56
38
|
this.statements = statements;
|
|
57
|
-
this.symbolTable =
|
|
58
|
-
}
|
|
59
|
-
getSymbolTable() {
|
|
60
|
-
return this.symbolTable;
|
|
39
|
+
this.symbolTable = new SymbolTable_1.SymbolTable();
|
|
61
40
|
}
|
|
62
41
|
get range() {
|
|
63
42
|
var _a, _b, _c, _d;
|
|
@@ -109,7 +88,7 @@ class Body extends Statement {
|
|
|
109
88
|
}
|
|
110
89
|
}
|
|
111
90
|
exports.Body = Body;
|
|
112
|
-
class AssignmentStatement extends Statement {
|
|
91
|
+
class AssignmentStatement extends AstNode_1.Statement {
|
|
113
92
|
constructor(equals, name, value, containingFunction) {
|
|
114
93
|
super();
|
|
115
94
|
this.equals = equals;
|
|
@@ -141,11 +120,12 @@ class AssignmentStatement extends Statement {
|
|
|
141
120
|
}
|
|
142
121
|
}
|
|
143
122
|
exports.AssignmentStatement = AssignmentStatement;
|
|
144
|
-
class Block extends Statement {
|
|
123
|
+
class Block extends AstNode_1.Statement {
|
|
145
124
|
constructor(statements, startingRange) {
|
|
146
125
|
super();
|
|
147
126
|
this.statements = statements;
|
|
148
127
|
this.startingRange = startingRange;
|
|
128
|
+
this.symbolTable = new SymbolTable_1.SymbolTable();
|
|
149
129
|
this.range = util_1.util.createRangeFromPositions(this.startingRange.start, this.statements.length
|
|
150
130
|
? this.statements[this.statements.length - 1].range.end
|
|
151
131
|
: this.startingRange.start);
|
|
@@ -181,7 +161,7 @@ class Block extends Statement {
|
|
|
181
161
|
}
|
|
182
162
|
}
|
|
183
163
|
exports.Block = Block;
|
|
184
|
-
class ExpressionStatement extends Statement {
|
|
164
|
+
class ExpressionStatement extends AstNode_1.Statement {
|
|
185
165
|
constructor(expression) {
|
|
186
166
|
super();
|
|
187
167
|
this.expression = expression;
|
|
@@ -197,7 +177,7 @@ class ExpressionStatement extends Statement {
|
|
|
197
177
|
}
|
|
198
178
|
}
|
|
199
179
|
exports.ExpressionStatement = ExpressionStatement;
|
|
200
|
-
class CommentStatement extends Statement {
|
|
180
|
+
class CommentStatement extends AstNode_1.Statement {
|
|
201
181
|
constructor(comments) {
|
|
202
182
|
var _a;
|
|
203
183
|
super();
|
|
@@ -233,7 +213,7 @@ class CommentStatement extends Statement {
|
|
|
233
213
|
}
|
|
234
214
|
}
|
|
235
215
|
exports.CommentStatement = CommentStatement;
|
|
236
|
-
class ExitForStatement extends Statement {
|
|
216
|
+
class ExitForStatement extends AstNode_1.Statement {
|
|
237
217
|
constructor(tokens) {
|
|
238
218
|
super();
|
|
239
219
|
this.tokens = tokens;
|
|
@@ -249,7 +229,7 @@ class ExitForStatement extends Statement {
|
|
|
249
229
|
}
|
|
250
230
|
}
|
|
251
231
|
exports.ExitForStatement = ExitForStatement;
|
|
252
|
-
class ExitWhileStatement extends Statement {
|
|
232
|
+
class ExitWhileStatement extends AstNode_1.Statement {
|
|
253
233
|
constructor(tokens) {
|
|
254
234
|
super();
|
|
255
235
|
this.tokens = tokens;
|
|
@@ -265,22 +245,23 @@ class ExitWhileStatement extends Statement {
|
|
|
265
245
|
}
|
|
266
246
|
}
|
|
267
247
|
exports.ExitWhileStatement = ExitWhileStatement;
|
|
268
|
-
class FunctionStatement extends Statement {
|
|
269
|
-
constructor(name, func
|
|
248
|
+
class FunctionStatement extends AstNode_1.Statement {
|
|
249
|
+
constructor(name, func) {
|
|
270
250
|
super();
|
|
271
251
|
this.name = name;
|
|
272
252
|
this.func = func;
|
|
273
|
-
this.namespaceName = namespaceName;
|
|
274
253
|
this.range = this.func.range;
|
|
275
254
|
}
|
|
276
255
|
/**
|
|
277
256
|
* Get the name of this expression based on the parse mode
|
|
278
257
|
*/
|
|
279
258
|
getName(parseMode) {
|
|
280
|
-
|
|
259
|
+
var _a;
|
|
260
|
+
const namespace = this.findAncestor(reflection_1.isNamespaceStatement);
|
|
261
|
+
if (namespace) {
|
|
281
262
|
let delimiter = parseMode === Parser_1.ParseMode.BrighterScript ? '.' : '_';
|
|
282
|
-
let namespaceName =
|
|
283
|
-
return namespaceName + delimiter + this.name.text;
|
|
263
|
+
let namespaceName = namespace.getName(parseMode);
|
|
264
|
+
return namespaceName + delimiter + ((_a = this.name) === null || _a === void 0 ? void 0 : _a.text);
|
|
284
265
|
}
|
|
285
266
|
else {
|
|
286
267
|
return this.name.text;
|
|
@@ -307,7 +288,7 @@ class FunctionStatement extends Statement {
|
|
|
307
288
|
}
|
|
308
289
|
}
|
|
309
290
|
exports.FunctionStatement = FunctionStatement;
|
|
310
|
-
class IfStatement extends Statement {
|
|
291
|
+
class IfStatement extends AstNode_1.Statement {
|
|
311
292
|
constructor(tokens, condition, thenBranch, elseBranch, isInline) {
|
|
312
293
|
var _a, _b;
|
|
313
294
|
super();
|
|
@@ -394,7 +375,7 @@ class IfStatement extends Statement {
|
|
|
394
375
|
}
|
|
395
376
|
}
|
|
396
377
|
exports.IfStatement = IfStatement;
|
|
397
|
-
class IncrementStatement extends Statement {
|
|
378
|
+
class IncrementStatement extends AstNode_1.Statement {
|
|
398
379
|
constructor(value, operator) {
|
|
399
380
|
super();
|
|
400
381
|
this.value = value;
|
|
@@ -417,7 +398,7 @@ exports.IncrementStatement = IncrementStatement;
|
|
|
417
398
|
/**
|
|
418
399
|
* Represents a `print` statement within BrightScript.
|
|
419
400
|
*/
|
|
420
|
-
class PrintStatement extends Statement {
|
|
401
|
+
class PrintStatement extends AstNode_1.Statement {
|
|
421
402
|
/**
|
|
422
403
|
* Creates a new internal representation of a BrightScript `print` statement.
|
|
423
404
|
* @param expressions an array of expressions or `PrintSeparator`s to be
|
|
@@ -460,7 +441,7 @@ class PrintStatement extends Statement {
|
|
|
460
441
|
}
|
|
461
442
|
}
|
|
462
443
|
exports.PrintStatement = PrintStatement;
|
|
463
|
-
class DimStatement extends Statement {
|
|
444
|
+
class DimStatement extends AstNode_1.Statement {
|
|
464
445
|
constructor(dimToken, identifier, openingSquare, dimensions, closingSquare) {
|
|
465
446
|
var _a, _b, _c, _d;
|
|
466
447
|
super();
|
|
@@ -495,7 +476,7 @@ class DimStatement extends Statement {
|
|
|
495
476
|
}
|
|
496
477
|
}
|
|
497
478
|
exports.DimStatement = DimStatement;
|
|
498
|
-
class GotoStatement extends Statement {
|
|
479
|
+
class GotoStatement extends AstNode_1.Statement {
|
|
499
480
|
constructor(tokens) {
|
|
500
481
|
super();
|
|
501
482
|
this.tokens = tokens;
|
|
@@ -513,7 +494,7 @@ class GotoStatement extends Statement {
|
|
|
513
494
|
}
|
|
514
495
|
}
|
|
515
496
|
exports.GotoStatement = GotoStatement;
|
|
516
|
-
class LabelStatement extends Statement {
|
|
497
|
+
class LabelStatement extends AstNode_1.Statement {
|
|
517
498
|
constructor(tokens) {
|
|
518
499
|
super();
|
|
519
500
|
this.tokens = tokens;
|
|
@@ -530,7 +511,7 @@ class LabelStatement extends Statement {
|
|
|
530
511
|
}
|
|
531
512
|
}
|
|
532
513
|
exports.LabelStatement = LabelStatement;
|
|
533
|
-
class ReturnStatement extends Statement {
|
|
514
|
+
class ReturnStatement extends AstNode_1.Statement {
|
|
534
515
|
constructor(tokens, value) {
|
|
535
516
|
var _a;
|
|
536
517
|
super();
|
|
@@ -554,7 +535,7 @@ class ReturnStatement extends Statement {
|
|
|
554
535
|
}
|
|
555
536
|
}
|
|
556
537
|
exports.ReturnStatement = ReturnStatement;
|
|
557
|
-
class EndStatement extends Statement {
|
|
538
|
+
class EndStatement extends AstNode_1.Statement {
|
|
558
539
|
constructor(tokens) {
|
|
559
540
|
super();
|
|
560
541
|
this.tokens = tokens;
|
|
@@ -570,7 +551,7 @@ class EndStatement extends Statement {
|
|
|
570
551
|
}
|
|
571
552
|
}
|
|
572
553
|
exports.EndStatement = EndStatement;
|
|
573
|
-
class StopStatement extends Statement {
|
|
554
|
+
class StopStatement extends AstNode_1.Statement {
|
|
574
555
|
constructor(tokens) {
|
|
575
556
|
super();
|
|
576
557
|
this.tokens = tokens;
|
|
@@ -586,7 +567,7 @@ class StopStatement extends Statement {
|
|
|
586
567
|
}
|
|
587
568
|
}
|
|
588
569
|
exports.StopStatement = StopStatement;
|
|
589
|
-
class ForStatement extends Statement {
|
|
570
|
+
class ForStatement extends AstNode_1.Statement {
|
|
590
571
|
constructor(forToken, counterDeclaration, toToken, finalValue, body, endForToken, stepToken, increment) {
|
|
591
572
|
var _a, _b;
|
|
592
573
|
super();
|
|
@@ -639,7 +620,7 @@ class ForStatement extends Statement {
|
|
|
639
620
|
}
|
|
640
621
|
}
|
|
641
622
|
exports.ForStatement = ForStatement;
|
|
642
|
-
class ForEachStatement extends Statement {
|
|
623
|
+
class ForEachStatement extends AstNode_1.Statement {
|
|
643
624
|
constructor(tokens, item, target, body) {
|
|
644
625
|
var _a, _b;
|
|
645
626
|
super();
|
|
@@ -680,7 +661,7 @@ class ForEachStatement extends Statement {
|
|
|
680
661
|
}
|
|
681
662
|
}
|
|
682
663
|
exports.ForEachStatement = ForEachStatement;
|
|
683
|
-
class WhileStatement extends Statement {
|
|
664
|
+
class WhileStatement extends AstNode_1.Statement {
|
|
684
665
|
constructor(tokens, condition, body) {
|
|
685
666
|
var _a, _b;
|
|
686
667
|
super();
|
|
@@ -716,7 +697,7 @@ class WhileStatement extends Statement {
|
|
|
716
697
|
}
|
|
717
698
|
}
|
|
718
699
|
exports.WhileStatement = WhileStatement;
|
|
719
|
-
class DottedSetStatement extends Statement {
|
|
700
|
+
class DottedSetStatement extends AstNode_1.Statement {
|
|
720
701
|
constructor(obj, name, value) {
|
|
721
702
|
super();
|
|
722
703
|
this.obj = obj;
|
|
@@ -751,7 +732,7 @@ class DottedSetStatement extends Statement {
|
|
|
751
732
|
}
|
|
752
733
|
}
|
|
753
734
|
exports.DottedSetStatement = DottedSetStatement;
|
|
754
|
-
class IndexedSetStatement extends Statement {
|
|
735
|
+
class IndexedSetStatement extends AstNode_1.Statement {
|
|
755
736
|
constructor(obj, index, value, openingSquare, closingSquare) {
|
|
756
737
|
super();
|
|
757
738
|
this.obj = obj;
|
|
@@ -793,7 +774,7 @@ class IndexedSetStatement extends Statement {
|
|
|
793
774
|
}
|
|
794
775
|
}
|
|
795
776
|
exports.IndexedSetStatement = IndexedSetStatement;
|
|
796
|
-
class LibraryStatement extends Statement {
|
|
777
|
+
class LibraryStatement extends AstNode_1.Statement {
|
|
797
778
|
constructor(tokens) {
|
|
798
779
|
super();
|
|
799
780
|
this.tokens = tokens;
|
|
@@ -816,21 +797,19 @@ class LibraryStatement extends Statement {
|
|
|
816
797
|
}
|
|
817
798
|
}
|
|
818
799
|
exports.LibraryStatement = LibraryStatement;
|
|
819
|
-
class NamespaceStatement extends Statement {
|
|
800
|
+
class NamespaceStatement extends AstNode_1.Statement {
|
|
820
801
|
constructor(keyword,
|
|
821
802
|
//this should technically only be a VariableExpression or DottedGetExpression, but that can be enforced elsewhere
|
|
822
|
-
nameExpression, body, endKeyword
|
|
803
|
+
nameExpression, body, endKeyword) {
|
|
823
804
|
super();
|
|
824
805
|
this.keyword = keyword;
|
|
825
806
|
this.nameExpression = nameExpression;
|
|
826
807
|
this.body = body;
|
|
827
808
|
this.endKeyword = endKeyword;
|
|
828
|
-
this.
|
|
829
|
-
this.name = this.nameExpression.getName(Parser_1.ParseMode.BrighterScript);
|
|
830
|
-
this.symbolTable = new SymbolTable_1.SymbolTable(parentSymbolTable);
|
|
809
|
+
this.name = this.getName(Parser_1.ParseMode.BrighterScript);
|
|
831
810
|
}
|
|
832
811
|
getSymbolTable() {
|
|
833
|
-
return this.symbolTable;
|
|
812
|
+
return this.body.symbolTable;
|
|
834
813
|
}
|
|
835
814
|
get range() {
|
|
836
815
|
return this.cacheRange();
|
|
@@ -852,7 +831,7 @@ class NamespaceStatement extends Statement {
|
|
|
852
831
|
getTypedef(state) {
|
|
853
832
|
let result = [
|
|
854
833
|
'namespace ',
|
|
855
|
-
...this.
|
|
834
|
+
...this.getName(Parser_1.ParseMode.BrighterScript),
|
|
856
835
|
state.newline
|
|
857
836
|
];
|
|
858
837
|
state.blockDepth++;
|
|
@@ -871,7 +850,7 @@ class NamespaceStatement extends Statement {
|
|
|
871
850
|
}
|
|
872
851
|
}
|
|
873
852
|
exports.NamespaceStatement = NamespaceStatement;
|
|
874
|
-
class ImportStatement extends Statement {
|
|
853
|
+
class ImportStatement extends AstNode_1.Statement {
|
|
875
854
|
constructor(importToken, filePathToken) {
|
|
876
855
|
super();
|
|
877
856
|
this.importToken = importToken;
|
|
@@ -910,12 +889,11 @@ class ImportStatement extends Statement {
|
|
|
910
889
|
}
|
|
911
890
|
}
|
|
912
891
|
exports.ImportStatement = ImportStatement;
|
|
913
|
-
class InterfaceStatement extends Statement {
|
|
914
|
-
constructor(interfaceToken, name, extendsToken, parentInterfaceName, body, endInterfaceToken
|
|
892
|
+
class InterfaceStatement extends AstNode_1.Statement {
|
|
893
|
+
constructor(interfaceToken, name, extendsToken, parentInterfaceName, body, endInterfaceToken) {
|
|
915
894
|
super();
|
|
916
895
|
this.parentInterfaceName = parentInterfaceName;
|
|
917
896
|
this.body = body;
|
|
918
|
-
this.namespaceName = namespaceName;
|
|
919
897
|
this.tokens = {};
|
|
920
898
|
this.tokens.interface = interfaceToken;
|
|
921
899
|
this.tokens.name = name;
|
|
@@ -936,8 +914,9 @@ class InterfaceStatement extends Statement {
|
|
|
936
914
|
var _a;
|
|
937
915
|
const name = (_a = this.tokens.name) === null || _a === void 0 ? void 0 : _a.text;
|
|
938
916
|
if (name) {
|
|
939
|
-
|
|
940
|
-
|
|
917
|
+
const namespace = this.findAncestor(reflection_1.isNamespaceStatement);
|
|
918
|
+
if (namespace) {
|
|
919
|
+
let namespaceName = namespace.getName(Parser_1.ParseMode.BrighterScript);
|
|
941
920
|
return `${namespaceName}.${name}`;
|
|
942
921
|
}
|
|
943
922
|
else {
|
|
@@ -960,9 +939,10 @@ class InterfaceStatement extends Statement {
|
|
|
960
939
|
* Get the name of this expression based on the parse mode
|
|
961
940
|
*/
|
|
962
941
|
getName(parseMode) {
|
|
963
|
-
|
|
942
|
+
const namespace = this.findAncestor(reflection_1.isNamespaceStatement);
|
|
943
|
+
if (namespace) {
|
|
964
944
|
let delimiter = parseMode === Parser_1.ParseMode.BrighterScript ? '.' : '_';
|
|
965
|
-
let namespaceName =
|
|
945
|
+
let namespaceName = namespace.getName(parseMode);
|
|
966
946
|
return namespaceName + delimiter + this.name;
|
|
967
947
|
}
|
|
968
948
|
else {
|
|
@@ -1009,7 +989,7 @@ class InterfaceStatement extends Statement {
|
|
|
1009
989
|
}
|
|
1010
990
|
}
|
|
1011
991
|
exports.InterfaceStatement = InterfaceStatement;
|
|
1012
|
-
class InterfaceFieldStatement extends Statement {
|
|
992
|
+
class InterfaceFieldStatement extends AstNode_1.Statement {
|
|
1013
993
|
constructor(nameToken, asToken, typeToken, type) {
|
|
1014
994
|
super();
|
|
1015
995
|
this.type = type;
|
|
@@ -1045,7 +1025,7 @@ class InterfaceFieldStatement extends Statement {
|
|
|
1045
1025
|
}
|
|
1046
1026
|
}
|
|
1047
1027
|
exports.InterfaceFieldStatement = InterfaceFieldStatement;
|
|
1048
|
-
class InterfaceMethodStatement extends Statement {
|
|
1028
|
+
class InterfaceMethodStatement extends AstNode_1.Statement {
|
|
1049
1029
|
constructor(functionTypeToken, nameToken, leftParen, params, rightParen, asToken, returnTypeToken, returnType) {
|
|
1050
1030
|
super();
|
|
1051
1031
|
this.params = params;
|
|
@@ -1094,12 +1074,12 @@ class InterfaceMethodStatement extends Statement {
|
|
|
1094
1074
|
}
|
|
1095
1075
|
}
|
|
1096
1076
|
exports.InterfaceMethodStatement = InterfaceMethodStatement;
|
|
1097
|
-
class ClassStatement extends Statement {
|
|
1077
|
+
class ClassStatement extends AstNode_1.Statement {
|
|
1098
1078
|
constructor(classKeyword,
|
|
1099
1079
|
/**
|
|
1100
1080
|
* The name of the class (without namespace prefix)
|
|
1101
1081
|
*/
|
|
1102
|
-
name, body, end, extendsKeyword, parentClassName
|
|
1082
|
+
name, body, end, extendsKeyword, parentClassName) {
|
|
1103
1083
|
var _a, _b, _c;
|
|
1104
1084
|
super();
|
|
1105
1085
|
this.classKeyword = classKeyword;
|
|
@@ -1108,7 +1088,6 @@ class ClassStatement extends Statement {
|
|
|
1108
1088
|
this.end = end;
|
|
1109
1089
|
this.extendsKeyword = extendsKeyword;
|
|
1110
1090
|
this.parentClassName = parentClassName;
|
|
1111
|
-
this.namespaceName = namespaceName;
|
|
1112
1091
|
this.memberMap = {};
|
|
1113
1092
|
this.methods = [];
|
|
1114
1093
|
this.fields = [];
|
|
@@ -1129,8 +1108,9 @@ class ClassStatement extends Statement {
|
|
|
1129
1108
|
var _a;
|
|
1130
1109
|
const name = (_a = this.name) === null || _a === void 0 ? void 0 : _a.text;
|
|
1131
1110
|
if (name) {
|
|
1132
|
-
|
|
1133
|
-
|
|
1111
|
+
const namespace = this.findAncestor(reflection_1.isNamespaceStatement);
|
|
1112
|
+
if (namespace) {
|
|
1113
|
+
let namespaceName = namespace.getName(parseMode);
|
|
1134
1114
|
let separator = parseMode === Parser_1.ParseMode.BrighterScript ? '.' : '_';
|
|
1135
1115
|
return namespaceName + separator + name;
|
|
1136
1116
|
}
|
|
@@ -1153,14 +1133,15 @@ class ClassStatement extends Statement {
|
|
|
1153
1133
|
return result;
|
|
1154
1134
|
}
|
|
1155
1135
|
getTypedef(state) {
|
|
1156
|
-
var _a
|
|
1136
|
+
var _a;
|
|
1157
1137
|
const result = [];
|
|
1158
1138
|
for (let annotation of (_a = this.annotations) !== null && _a !== void 0 ? _a : []) {
|
|
1159
1139
|
result.push(...annotation.getTypedef(state), state.newline, state.indent());
|
|
1160
1140
|
}
|
|
1161
1141
|
result.push('class ', this.name.text);
|
|
1162
1142
|
if (this.extendsKeyword && this.parentClassName) {
|
|
1163
|
-
const
|
|
1143
|
+
const namespace = this.findAncestor(reflection_1.isNamespaceStatement);
|
|
1144
|
+
const fqName = util_1.util.getFullyQualifiedClassName(this.parentClassName.getName(Parser_1.ParseMode.BrighterScript), namespace === null || namespace === void 0 ? void 0 : namespace.getName(Parser_1.ParseMode.BrighterScript));
|
|
1164
1145
|
result.push(` extends ${fqName}`);
|
|
1165
1146
|
}
|
|
1166
1147
|
result.push(state.newline);
|
|
@@ -1188,13 +1169,14 @@ class ClassStatement extends Statement {
|
|
|
1188
1169
|
* The base class is index 0, its child is index 1, and so on.
|
|
1189
1170
|
*/
|
|
1190
1171
|
getParentClassIndex(state) {
|
|
1191
|
-
var _a
|
|
1172
|
+
var _a;
|
|
1192
1173
|
let myIndex = 0;
|
|
1193
1174
|
let stmt = this;
|
|
1194
1175
|
while (stmt) {
|
|
1195
1176
|
if (stmt.parentClassName) {
|
|
1177
|
+
const namespace = this.findAncestor(reflection_1.isNamespaceStatement);
|
|
1196
1178
|
//find the parent class
|
|
1197
|
-
stmt = (
|
|
1179
|
+
stmt = (_a = state.file.getClassFileLink(stmt.parentClassName.getName(Parser_1.ParseMode.BrighterScript), namespace === null || namespace === void 0 ? void 0 : namespace.getName(Parser_1.ParseMode.BrighterScript))) === null || _a === void 0 ? void 0 : _a.item;
|
|
1198
1180
|
myIndex++;
|
|
1199
1181
|
}
|
|
1200
1182
|
else {
|
|
@@ -1217,12 +1199,13 @@ class ClassStatement extends Statement {
|
|
|
1217
1199
|
* This will return an empty array if no ancestors were found
|
|
1218
1200
|
*/
|
|
1219
1201
|
getAncestors(state) {
|
|
1220
|
-
var _a
|
|
1202
|
+
var _a;
|
|
1221
1203
|
let ancestors = [];
|
|
1222
1204
|
let stmt = this;
|
|
1223
1205
|
while (stmt) {
|
|
1224
1206
|
if (stmt.parentClassName) {
|
|
1225
|
-
|
|
1207
|
+
const namespace = this.findAncestor(reflection_1.isNamespaceStatement);
|
|
1208
|
+
stmt = (_a = state.file.getClassFileLink(stmt.parentClassName.getName(Parser_1.ParseMode.BrighterScript), namespace === null || namespace === void 0 ? void 0 : namespace.getName(Parser_1.ParseMode.BrighterScript))) === null || _a === void 0 ? void 0 : _a.item;
|
|
1226
1209
|
ancestors.push(stmt);
|
|
1227
1210
|
}
|
|
1228
1211
|
else {
|
|
@@ -1264,7 +1247,6 @@ class ClassStatement extends Statement {
|
|
|
1264
1247
|
* without instantiating the parent constructor at that point in time.
|
|
1265
1248
|
*/
|
|
1266
1249
|
getTranspiledBuilder(state) {
|
|
1267
|
-
var _a;
|
|
1268
1250
|
let result = [];
|
|
1269
1251
|
result.push(`function ${this.getBuilderName(this.getName(Parser_1.ParseMode.BrightScript))}()\n`);
|
|
1270
1252
|
state.blockDepth++;
|
|
@@ -1276,7 +1258,8 @@ class ClassStatement extends Statement {
|
|
|
1276
1258
|
let ancestors = this.getAncestors(state);
|
|
1277
1259
|
//construct parent class or empty object
|
|
1278
1260
|
if (ancestors[0]) {
|
|
1279
|
-
|
|
1261
|
+
const ancestorNamespace = ancestors[0].findAncestor(reflection_1.isNamespaceStatement);
|
|
1262
|
+
let fullyQualifiedClassName = util_1.util.getFullyQualifiedClassName(ancestors[0].getName(Parser_1.ParseMode.BrighterScript), ancestorNamespace === null || ancestorNamespace === void 0 ? void 0 : ancestorNamespace.getName(Parser_1.ParseMode.BrighterScript));
|
|
1280
1263
|
result.push('instance = ', this.getBuilderName(fullyQualifiedClassName), '()');
|
|
1281
1264
|
}
|
|
1282
1265
|
else {
|
|
@@ -1381,7 +1364,7 @@ const accessModifiers = [
|
|
|
1381
1364
|
class MethodStatement extends FunctionStatement {
|
|
1382
1365
|
constructor(modifiers, name, func, override) {
|
|
1383
1366
|
var _a;
|
|
1384
|
-
super(name, func
|
|
1367
|
+
super(name, func);
|
|
1385
1368
|
this.override = override;
|
|
1386
1369
|
this.modifiers = [];
|
|
1387
1370
|
if (modifiers) {
|
|
@@ -1397,6 +1380,12 @@ class MethodStatement extends FunctionStatement {
|
|
|
1397
1380
|
get accessModifier() {
|
|
1398
1381
|
return this.modifiers.find(x => accessModifiers.includes(x.kind));
|
|
1399
1382
|
}
|
|
1383
|
+
/**
|
|
1384
|
+
* Get the name of this method.
|
|
1385
|
+
*/
|
|
1386
|
+
getName(parseMode) {
|
|
1387
|
+
return this.name.text;
|
|
1388
|
+
}
|
|
1400
1389
|
transpile(state) {
|
|
1401
1390
|
if (this.name.text.toLowerCase() === 'new') {
|
|
1402
1391
|
this.ensureSuperConstructorCall(state);
|
|
@@ -1468,7 +1457,7 @@ class MethodStatement extends FunctionStatement {
|
|
|
1468
1457
|
isReserved: false,
|
|
1469
1458
|
range: state.classStatement.name.range,
|
|
1470
1459
|
leadingWhitespace: ''
|
|
1471
|
-
}
|
|
1460
|
+
}), {
|
|
1472
1461
|
kind: TokenKind_1.TokenKind.LeftParen,
|
|
1473
1462
|
text: '(',
|
|
1474
1463
|
isReserved: false,
|
|
@@ -1480,7 +1469,7 @@ class MethodStatement extends FunctionStatement {
|
|
|
1480
1469
|
isReserved: false,
|
|
1481
1470
|
range: state.classStatement.name.range,
|
|
1482
1471
|
leadingWhitespace: ''
|
|
1483
|
-
}, []
|
|
1472
|
+
}, []));
|
|
1484
1473
|
state.editor.arrayUnshift(this.func.body.statements, superCall);
|
|
1485
1474
|
}
|
|
1486
1475
|
/**
|
|
@@ -1516,7 +1505,7 @@ exports.MethodStatement = MethodStatement;
|
|
|
1516
1505
|
class ClassMethodStatement extends MethodStatement {
|
|
1517
1506
|
}
|
|
1518
1507
|
exports.ClassMethodStatement = ClassMethodStatement;
|
|
1519
|
-
class FieldStatement extends Statement {
|
|
1508
|
+
class FieldStatement extends AstNode_1.Statement {
|
|
1520
1509
|
constructor(accessModifier, name, as, type, equal, initialValue) {
|
|
1521
1510
|
var _a, _b, _c, _d;
|
|
1522
1511
|
super();
|
|
@@ -1574,7 +1563,7 @@ exports.FieldStatement = FieldStatement;
|
|
|
1574
1563
|
class ClassFieldStatement extends FieldStatement {
|
|
1575
1564
|
}
|
|
1576
1565
|
exports.ClassFieldStatement = ClassFieldStatement;
|
|
1577
|
-
class TryCatchStatement extends Statement {
|
|
1566
|
+
class TryCatchStatement extends AstNode_1.Statement {
|
|
1578
1567
|
constructor(tokens, tryBranch, catchStatement) {
|
|
1579
1568
|
super();
|
|
1580
1569
|
this.tokens = tokens;
|
|
@@ -1606,7 +1595,7 @@ class TryCatchStatement extends Statement {
|
|
|
1606
1595
|
}
|
|
1607
1596
|
}
|
|
1608
1597
|
exports.TryCatchStatement = TryCatchStatement;
|
|
1609
|
-
class CatchStatement extends Statement {
|
|
1598
|
+
class CatchStatement extends AstNode_1.Statement {
|
|
1610
1599
|
constructor(tokens, exceptionVariable, catchBranch) {
|
|
1611
1600
|
super();
|
|
1612
1601
|
this.tokens = tokens;
|
|
@@ -1633,7 +1622,7 @@ class CatchStatement extends Statement {
|
|
|
1633
1622
|
}
|
|
1634
1623
|
}
|
|
1635
1624
|
exports.CatchStatement = CatchStatement;
|
|
1636
|
-
class ThrowStatement extends Statement {
|
|
1625
|
+
class ThrowStatement extends AstNode_1.Statement {
|
|
1637
1626
|
constructor(throwToken, expression) {
|
|
1638
1627
|
var _a;
|
|
1639
1628
|
super();
|
|
@@ -1663,13 +1652,12 @@ class ThrowStatement extends Statement {
|
|
|
1663
1652
|
}
|
|
1664
1653
|
}
|
|
1665
1654
|
exports.ThrowStatement = ThrowStatement;
|
|
1666
|
-
class EnumStatement extends Statement {
|
|
1667
|
-
constructor(tokens, body
|
|
1655
|
+
class EnumStatement extends AstNode_1.Statement {
|
|
1656
|
+
constructor(tokens, body) {
|
|
1668
1657
|
var _a;
|
|
1669
1658
|
super();
|
|
1670
1659
|
this.tokens = tokens;
|
|
1671
1660
|
this.body = body;
|
|
1672
|
-
this.namespaceName = namespaceName;
|
|
1673
1661
|
this.body = (_a = this.body) !== null && _a !== void 0 ? _a : [];
|
|
1674
1662
|
}
|
|
1675
1663
|
get range() {
|
|
@@ -1690,7 +1678,7 @@ class EnumStatement extends Statement {
|
|
|
1690
1678
|
* All values are stored as their AST LiteralExpression representation (i.e. string enum values include the wrapping quotes)
|
|
1691
1679
|
*/
|
|
1692
1680
|
getMemberValueMap() {
|
|
1693
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
1681
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
1694
1682
|
const result = new Map();
|
|
1695
1683
|
const members = this.getMembers();
|
|
1696
1684
|
let currentIntValue = 0;
|
|
@@ -1709,10 +1697,14 @@ class EnumStatement extends Statement {
|
|
|
1709
1697
|
currentIntValue++;
|
|
1710
1698
|
}
|
|
1711
1699
|
result.set((_c = member.name) === null || _c === void 0 ? void 0 : _c.toLowerCase(), member.value.token.text);
|
|
1700
|
+
//simple unary expressions (like `-1`)
|
|
1701
|
+
}
|
|
1702
|
+
else if ((0, reflection_1.isUnaryExpression)(member.value) && (0, reflection_1.isLiteralExpression)(member.value.right)) {
|
|
1703
|
+
result.set((_d = member.name) === null || _d === void 0 ? void 0 : _d.toLowerCase(), member.value.operator.text + member.value.right.token.text);
|
|
1712
1704
|
//all other values
|
|
1713
1705
|
}
|
|
1714
1706
|
else {
|
|
1715
|
-
result.set((
|
|
1707
|
+
result.set((_e = member.name) === null || _e === void 0 ? void 0 : _e.toLowerCase(), (_h = (_g = (_f = member.value) === null || _f === void 0 ? void 0 : _f.token) === null || _g === void 0 ? void 0 : _g.text) !== null && _h !== void 0 ? _h : 'invalid');
|
|
1716
1708
|
}
|
|
1717
1709
|
}
|
|
1718
1710
|
return result;
|
|
@@ -1734,8 +1726,9 @@ class EnumStatement extends Statement {
|
|
|
1734
1726
|
var _a;
|
|
1735
1727
|
const name = (_a = this.tokens.name) === null || _a === void 0 ? void 0 : _a.text;
|
|
1736
1728
|
if (name) {
|
|
1737
|
-
|
|
1738
|
-
|
|
1729
|
+
const namespace = this.findAncestor(reflection_1.isNamespaceStatement);
|
|
1730
|
+
if (namespace) {
|
|
1731
|
+
let namespaceName = namespace.getName(Parser_1.ParseMode.BrighterScript);
|
|
1739
1732
|
return `${namespaceName}.${name}`;
|
|
1740
1733
|
}
|
|
1741
1734
|
else {
|
|
@@ -1776,7 +1769,7 @@ class EnumStatement extends Statement {
|
|
|
1776
1769
|
}
|
|
1777
1770
|
}
|
|
1778
1771
|
exports.EnumStatement = EnumStatement;
|
|
1779
|
-
class EnumMemberStatement extends Statement {
|
|
1772
|
+
class EnumMemberStatement extends AstNode_1.Statement {
|
|
1780
1773
|
constructor(tokens, value) {
|
|
1781
1774
|
super();
|
|
1782
1775
|
this.tokens = tokens;
|
|
@@ -1814,12 +1807,11 @@ class EnumMemberStatement extends Statement {
|
|
|
1814
1807
|
}
|
|
1815
1808
|
}
|
|
1816
1809
|
exports.EnumMemberStatement = EnumMemberStatement;
|
|
1817
|
-
class ConstStatement extends Statement {
|
|
1818
|
-
constructor(tokens, value
|
|
1810
|
+
class ConstStatement extends AstNode_1.Statement {
|
|
1811
|
+
constructor(tokens, value) {
|
|
1819
1812
|
super();
|
|
1820
1813
|
this.tokens = tokens;
|
|
1821
1814
|
this.value = value;
|
|
1822
|
-
this.namespaceName = namespaceName;
|
|
1823
1815
|
this.range = util_1.util.createBoundingRange(this.tokens.const, this.tokens.name, this.tokens.equals, this.value);
|
|
1824
1816
|
}
|
|
1825
1817
|
get name() {
|
|
@@ -1832,8 +1824,9 @@ class ConstStatement extends Statement {
|
|
|
1832
1824
|
var _a;
|
|
1833
1825
|
const name = (_a = this.tokens.name) === null || _a === void 0 ? void 0 : _a.text;
|
|
1834
1826
|
if (name) {
|
|
1835
|
-
|
|
1836
|
-
|
|
1827
|
+
const namespace = this.findAncestor(reflection_1.isNamespaceStatement);
|
|
1828
|
+
if (namespace) {
|
|
1829
|
+
let namespaceName = namespace.getName(Parser_1.ParseMode.BrighterScript);
|
|
1837
1830
|
return `${namespaceName}.${name}`;
|
|
1838
1831
|
}
|
|
1839
1832
|
else {
|
|
@@ -1867,4 +1860,25 @@ class ConstStatement extends Statement {
|
|
|
1867
1860
|
}
|
|
1868
1861
|
}
|
|
1869
1862
|
exports.ConstStatement = ConstStatement;
|
|
1863
|
+
class ContinueStatement extends AstNode_1.Statement {
|
|
1864
|
+
constructor(tokens) {
|
|
1865
|
+
super();
|
|
1866
|
+
this.tokens = tokens;
|
|
1867
|
+
}
|
|
1868
|
+
get range() {
|
|
1869
|
+
return this.tokens.continue.range;
|
|
1870
|
+
}
|
|
1871
|
+
transpile(state) {
|
|
1872
|
+
var _a, _b, _c, _d, _e;
|
|
1873
|
+
return [
|
|
1874
|
+
state.sourceNode(this.tokens.continue, (_b = (_a = this.tokens.continue) === null || _a === void 0 ? void 0 : _a.text) !== null && _b !== void 0 ? _b : 'continue'),
|
|
1875
|
+
(_d = (_c = this.tokens.loopType) === null || _c === void 0 ? void 0 : _c.leadingWhitespace) !== null && _d !== void 0 ? _d : ' ',
|
|
1876
|
+
state.sourceNode(this.tokens.continue, (_e = this.tokens.loopType) === null || _e === void 0 ? void 0 : _e.text)
|
|
1877
|
+
];
|
|
1878
|
+
}
|
|
1879
|
+
walk(visitor, options) {
|
|
1880
|
+
//nothing to walk
|
|
1881
|
+
}
|
|
1882
|
+
}
|
|
1883
|
+
exports.ContinueStatement = ContinueStatement;
|
|
1870
1884
|
//# sourceMappingURL=Statement.js.map
|