brighterscript 0.61.3 → 0.63.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 +20 -0
- package/README.md +15 -1
- package/bsconfig.schema.json +10 -0
- package/dist/BsConfig.d.ts +4 -0
- package/dist/DiagnosticMessages.d.ts +6 -1
- package/dist/DiagnosticMessages.js +5 -0
- package/dist/DiagnosticMessages.js.map +1 -1
- package/dist/DiagnosticSeverityAdjuster.d.ts +7 -0
- package/dist/DiagnosticSeverityAdjuster.js +38 -0
- package/dist/DiagnosticSeverityAdjuster.js.map +1 -0
- package/dist/Program.d.ts +1 -4
- package/dist/Program.js +7 -18
- package/dist/Program.js.map +1 -1
- package/dist/bscPlugin/BscPlugin.js +2 -0
- package/dist/bscPlugin/BscPlugin.js.map +1 -1
- package/dist/bscPlugin/validation/BrsFileValidator.d.ts +4 -0
- package/dist/bscPlugin/validation/BrsFileValidator.js +43 -0
- package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ProgramValidator.d.ts +10 -0
- package/dist/bscPlugin/validation/ProgramValidator.js +32 -0
- package/dist/bscPlugin/validation/ProgramValidator.js.map +1 -0
- package/dist/files/tests/optionalChaning.spec.js +62 -0
- package/dist/files/tests/optionalChaning.spec.js.map +1 -1
- package/dist/parser/Expression.js +23 -26
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.js +7 -7
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/Statement.d.ts +6 -5
- package/dist/parser/Statement.js +38 -65
- package/dist/parser/Statement.js.map +1 -1
- package/dist/parser/tests/expression/TemplateStringExpression.spec.js +12 -12
- package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
- package/dist/parser/tests/statement/Function.spec.js +9 -0
- package/dist/parser/tests/statement/Function.spec.js.map +1 -1
- package/dist/util.js +5 -4
- package/dist/util.js.map +1 -1
- package/package.json +2 -2
|
@@ -53,6 +53,12 @@ class BrsFileValidator {
|
|
|
53
53
|
//register this variable
|
|
54
54
|
(_a = node.parent.getSymbolTable()) === null || _a === void 0 ? void 0 : _a.addSymbol(node.name.text, node.name.range, DynamicType_1.DynamicType.instance);
|
|
55
55
|
},
|
|
56
|
+
DottedSetStatement: (node) => {
|
|
57
|
+
this.validateNoOptionalChainingInVarSet(node, [node.obj]);
|
|
58
|
+
},
|
|
59
|
+
IndexedSetStatement: (node) => {
|
|
60
|
+
this.validateNoOptionalChainingInVarSet(node, [node.obj]);
|
|
61
|
+
},
|
|
56
62
|
ForEachStatement: (node) => {
|
|
57
63
|
var _a;
|
|
58
64
|
//register the for loop variable
|
|
@@ -275,6 +281,43 @@ class BrsFileValidator {
|
|
|
275
281
|
this.event.file.addDiagnostic(Object.assign({ range: statement.range }, DiagnosticMessages_1.DiagnosticMessages.illegalContinueStatement()));
|
|
276
282
|
}
|
|
277
283
|
}
|
|
284
|
+
/**
|
|
285
|
+
* Validate that there are no optional chaining operators on the left-hand-side of an assignment, indexed set, or dotted get
|
|
286
|
+
*/
|
|
287
|
+
validateNoOptionalChainingInVarSet(parent, children) {
|
|
288
|
+
var _a, _b, _c, _d;
|
|
289
|
+
const nodes = [...children, parent];
|
|
290
|
+
//flag optional chaining anywhere in the left of this statement
|
|
291
|
+
while (nodes.length > 0) {
|
|
292
|
+
const node = nodes.shift();
|
|
293
|
+
if (
|
|
294
|
+
// a?.b = true or a.b?.c = true
|
|
295
|
+
(((0, reflection_1.isDottedSetStatement)(node) || (0, reflection_1.isDottedGetExpression)(node)) && ((_a = node.dot) === null || _a === void 0 ? void 0 : _a.kind) === TokenKind_1.TokenKind.QuestionDot) ||
|
|
296
|
+
// a.b?[2] = true
|
|
297
|
+
((0, reflection_1.isIndexedGetExpression)(node) && (((_b = node === null || node === void 0 ? void 0 : node.questionDotToken) === null || _b === void 0 ? void 0 : _b.kind) === TokenKind_1.TokenKind.QuestionDot || ((_c = node.openingSquare) === null || _c === void 0 ? void 0 : _c.kind) === TokenKind_1.TokenKind.QuestionLeftSquare)) ||
|
|
298
|
+
// a?[1] = true
|
|
299
|
+
((0, reflection_1.isIndexedSetStatement)(node) && ((_d = node.openingSquare) === null || _d === void 0 ? void 0 : _d.kind) === TokenKind_1.TokenKind.QuestionLeftSquare)) {
|
|
300
|
+
//try to highlight the entire left-hand-side expression if possible
|
|
301
|
+
let range;
|
|
302
|
+
if ((0, reflection_1.isDottedSetStatement)(parent)) {
|
|
303
|
+
range = util_1.default.createBoundingRange(parent.obj, parent.dot, parent.name);
|
|
304
|
+
}
|
|
305
|
+
else if ((0, reflection_1.isIndexedSetStatement)(parent)) {
|
|
306
|
+
range = util_1.default.createBoundingRange(parent.obj, parent.openingSquare, parent.index, parent.closingSquare);
|
|
307
|
+
}
|
|
308
|
+
else {
|
|
309
|
+
range = node.range;
|
|
310
|
+
}
|
|
311
|
+
this.event.file.addDiagnostic(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.noOptionalChainingInLeftHandSideOfAssignment()), { range: range }));
|
|
312
|
+
}
|
|
313
|
+
if (node === parent) {
|
|
314
|
+
break;
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
nodes.push(node.parent);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
278
321
|
}
|
|
279
322
|
exports.BrsFileValidator = BrsFileValidator;
|
|
280
323
|
//# sourceMappingURL=BrsFileValidator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrsFileValidator.js","sourceRoot":"","sources":["../../../src/bscPlugin/validation/BrsFileValidator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BrsFileValidator.js","sourceRoot":"","sources":["../../../src/bscPlugin/validation/BrsFileValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ProgramValidator = void 0;
|
|
4
|
+
const reflection_1 = require("../../astUtils/reflection");
|
|
5
|
+
const DiagnosticMessages_1 = require("../../DiagnosticMessages");
|
|
6
|
+
const util_1 = require("../../util");
|
|
7
|
+
class ProgramValidator {
|
|
8
|
+
constructor(program) {
|
|
9
|
+
this.program = program;
|
|
10
|
+
}
|
|
11
|
+
process() {
|
|
12
|
+
this.flagScopelessBrsFiles();
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Flag any files that are included in 0 scopes.
|
|
16
|
+
*/
|
|
17
|
+
flagScopelessBrsFiles() {
|
|
18
|
+
for (const key in this.program.files) {
|
|
19
|
+
const file = this.program.files[key];
|
|
20
|
+
if (
|
|
21
|
+
//if this isn't a brs file, skip
|
|
22
|
+
!(0, reflection_1.isBrsFile)(file) ||
|
|
23
|
+
//if the file is included in at least one scope, skip
|
|
24
|
+
this.program.getFirstScopeForFile(file)) {
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
this.program.addDiagnostics([Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.fileNotReferencedByAnyOtherFile()), { file: file, range: util_1.default.createRange(0, 0, 0, Number.MAX_VALUE) })]);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.ProgramValidator = ProgramValidator;
|
|
32
|
+
//# sourceMappingURL=ProgramValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProgramValidator.js","sourceRoot":"","sources":["../../../src/bscPlugin/validation/ProgramValidator.ts"],"names":[],"mappings":";;;AAAA,0DAAsD;AACtD,iEAA8D;AAE9D,qCAA8B;AAE9B,MAAa,gBAAgB;IACzB,YAAoB,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;IAAI,CAAC;IAElC,OAAO;QACV,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACK,qBAAqB;QACzB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAErC;YACI,gCAAgC;YAChC,CAAC,IAAA,sBAAS,EAAC,IAAI,CAAC;gBAChB,qDAAqD;gBACrD,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,EACzC;gBACE,SAAS;aACZ;YAED,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,iCACrB,uCAAkB,CAAC,+BAA+B,EAAE,KACvD,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,cAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,IACpD,CAAC,CAAC;SACP;IACL,CAAC;CACJ;AA9BD,4CA8BC"}
|
|
@@ -5,6 +5,8 @@ const fsExtra = require("fs-extra");
|
|
|
5
5
|
const Program_1 = require("../../Program");
|
|
6
6
|
const testHelpers_spec_1 = require("../../testHelpers.spec");
|
|
7
7
|
const testHelpers_spec_2 = require("../../testHelpers.spec");
|
|
8
|
+
const DiagnosticMessages_1 = require("../../DiagnosticMessages");
|
|
9
|
+
const util_1 = require("../../util");
|
|
8
10
|
let sinon = sinonImport.createSandbox();
|
|
9
11
|
describe('optional chaining', () => {
|
|
10
12
|
let program;
|
|
@@ -86,5 +88,65 @@ describe('optional chaining', () => {
|
|
|
86
88
|
end sub
|
|
87
89
|
`);
|
|
88
90
|
});
|
|
91
|
+
it('includes final operator in chain', () => {
|
|
92
|
+
testTranspile(`
|
|
93
|
+
sub main()
|
|
94
|
+
if m.cardFolderStack <> invalid then
|
|
95
|
+
m?.cardFolderStack?.visible?.ither = false
|
|
96
|
+
end if
|
|
97
|
+
end sub
|
|
98
|
+
`, undefined, undefined, undefined, false);
|
|
99
|
+
});
|
|
100
|
+
describe('disallows optional chaining on left-hand-side of assignments', () => {
|
|
101
|
+
it('catches simple dotted set', () => {
|
|
102
|
+
program.setFile('source/main.bs', `
|
|
103
|
+
sub main()
|
|
104
|
+
m?.a = true
|
|
105
|
+
end sub
|
|
106
|
+
`);
|
|
107
|
+
program.validate();
|
|
108
|
+
(0, testHelpers_spec_1.expectDiagnostics)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.noOptionalChainingInLeftHandSideOfAssignment()), { range: util_1.default.createRange(2, 20, 2, 24) })]);
|
|
109
|
+
});
|
|
110
|
+
it('catches complex dotted set', () => {
|
|
111
|
+
program.setFile('source/main.bs', `
|
|
112
|
+
sub main()
|
|
113
|
+
m?.a.b?.c = true
|
|
114
|
+
end sub
|
|
115
|
+
`);
|
|
116
|
+
program.validate();
|
|
117
|
+
(0, testHelpers_spec_1.expectDiagnostics)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.noOptionalChainingInLeftHandSideOfAssignment()), { range: util_1.default.createRange(2, 20, 2, 29) })]);
|
|
118
|
+
});
|
|
119
|
+
it('catches simple indexed set', () => {
|
|
120
|
+
program.setFile('source/main.bs', `
|
|
121
|
+
sub main()
|
|
122
|
+
arr = []
|
|
123
|
+
arr?[1] = true
|
|
124
|
+
end sub
|
|
125
|
+
`);
|
|
126
|
+
program.validate();
|
|
127
|
+
(0, testHelpers_spec_1.expectDiagnostics)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.noOptionalChainingInLeftHandSideOfAssignment()), { range: util_1.default.createRange(3, 20, 3, 27) })]);
|
|
128
|
+
});
|
|
129
|
+
it('catches complex indexed set', () => {
|
|
130
|
+
program.setFile('source/main.bs', `
|
|
131
|
+
sub main()
|
|
132
|
+
arr = []
|
|
133
|
+
arr[2]?[3] = true
|
|
134
|
+
end sub
|
|
135
|
+
`);
|
|
136
|
+
program.validate();
|
|
137
|
+
(0, testHelpers_spec_1.expectDiagnostics)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.noOptionalChainingInLeftHandSideOfAssignment()), { range: util_1.default.createRange(3, 20, 3, 30) })]);
|
|
138
|
+
});
|
|
139
|
+
it('catches very complex dotted and indexed sets', () => {
|
|
140
|
+
program.setFile('source/main.bs', `
|
|
141
|
+
sub main()
|
|
142
|
+
arr = []
|
|
143
|
+
arr[5][6][7]?.thing = true
|
|
144
|
+
m.a.b.c.d?[8] = true
|
|
145
|
+
end sub
|
|
146
|
+
`);
|
|
147
|
+
program.validate();
|
|
148
|
+
(0, testHelpers_spec_1.expectDiagnostics)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.noOptionalChainingInLeftHandSideOfAssignment()), { range: util_1.default.createRange(3, 20, 3, 39) }), Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.noOptionalChainingInLeftHandSideOfAssignment()), { range: util_1.default.createRange(4, 20, 4, 33) })]);
|
|
149
|
+
});
|
|
150
|
+
});
|
|
89
151
|
});
|
|
90
152
|
//# sourceMappingURL=optionalChaning.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optionalChaning.spec.js","sourceRoot":"","sources":["../../../src/files/tests/optionalChaning.spec.ts"],"names":[],"mappings":";;AAAA,qCAAqC;AACrC,oCAAoC;AACpC,2CAAwC;AACxC,
|
|
1
|
+
{"version":3,"file":"optionalChaning.spec.js","sourceRoot":"","sources":["../../../src/files/tests/optionalChaning.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -158,8 +158,7 @@ class FunctionExpression extends AstNode_1.Expression {
|
|
|
158
158
|
* and ending with the last n' in 'end function' or 'b' in 'end sub'
|
|
159
159
|
*/
|
|
160
160
|
get range() {
|
|
161
|
-
|
|
162
|
-
return util_1.default.createRangeFromPositions(((_a = this.functionType) !== null && _a !== void 0 ? _a : this.leftParen).range.start, ((_e = (_d = (_c = (_b = this.end) !== null && _b !== void 0 ? _b : this.body) !== null && _c !== void 0 ? _c : this.returnTypeToken) !== null && _d !== void 0 ? _d : this.asToken) !== null && _e !== void 0 ? _e : this.rightParen).range.end);
|
|
161
|
+
return util_1.default.createBoundingRange(this.functionType, this.leftParen, ...this.parameters, this.rightParen, this.asToken, this.returnTypeToken, this.end);
|
|
163
162
|
}
|
|
164
163
|
transpile(state, name, includeBody = true) {
|
|
165
164
|
let results = [];
|
|
@@ -267,10 +266,7 @@ class FunctionParameterExpression extends AstNode_1.Expression {
|
|
|
267
266
|
}
|
|
268
267
|
}
|
|
269
268
|
get range() {
|
|
270
|
-
return
|
|
271
|
-
start: this.name.range.start,
|
|
272
|
-
end: this.typeToken ? this.typeToken.range.end : this.name.range.end
|
|
273
|
-
};
|
|
269
|
+
return util_1.default.createBoundingRange(this.name, this.asToken, this.typeToken, this.defaultValue);
|
|
274
270
|
}
|
|
275
271
|
transpile(state) {
|
|
276
272
|
let result = [
|
|
@@ -371,7 +367,7 @@ class DottedGetExpression extends AstNode_1.Expression {
|
|
|
371
367
|
this.obj = obj;
|
|
372
368
|
this.name = name;
|
|
373
369
|
this.dot = dot;
|
|
374
|
-
this.range = util_1.default.
|
|
370
|
+
this.range = util_1.default.createBoundingRange(this.obj, this.dot, this.name);
|
|
375
371
|
}
|
|
376
372
|
transpile(state) {
|
|
377
373
|
//if the callee starts with a namespace name, transpile the name
|
|
@@ -403,7 +399,7 @@ class XmlAttributeGetExpression extends AstNode_1.Expression {
|
|
|
403
399
|
this.obj = obj;
|
|
404
400
|
this.name = name;
|
|
405
401
|
this.at = at;
|
|
406
|
-
this.range = util_1.default.
|
|
402
|
+
this.range = util_1.default.createBoundingRange(this.obj, this.at, this.name);
|
|
407
403
|
}
|
|
408
404
|
transpile(state) {
|
|
409
405
|
return [
|
|
@@ -457,7 +453,7 @@ class GroupingExpression extends AstNode_1.Expression {
|
|
|
457
453
|
super();
|
|
458
454
|
this.tokens = tokens;
|
|
459
455
|
this.expression = expression;
|
|
460
|
-
this.range = util_1.default.
|
|
456
|
+
this.range = util_1.default.createBoundingRange(this.tokens.left, this.expression, this.tokens.right);
|
|
461
457
|
}
|
|
462
458
|
transpile(state) {
|
|
463
459
|
return [
|
|
@@ -587,7 +583,7 @@ class AAMemberExpression extends AstNode_1.Expression {
|
|
|
587
583
|
this.keyToken = keyToken;
|
|
588
584
|
this.colonToken = colonToken;
|
|
589
585
|
this.value = value;
|
|
590
|
-
this.range = util_1.default.
|
|
586
|
+
this.range = util_1.default.createBoundingRange(this.keyToken, this.colonToken, this.value);
|
|
591
587
|
}
|
|
592
588
|
transpile(state) {
|
|
593
589
|
//TODO move the logic from AALiteralExpression loop into this function
|
|
@@ -672,7 +668,7 @@ class UnaryExpression extends AstNode_1.Expression {
|
|
|
672
668
|
super();
|
|
673
669
|
this.operator = operator;
|
|
674
670
|
this.right = right;
|
|
675
|
-
this.range = util_1.default.
|
|
671
|
+
this.range = util_1.default.createBoundingRange(this.operator, this.right);
|
|
676
672
|
}
|
|
677
673
|
transpile(state) {
|
|
678
674
|
return [
|
|
@@ -690,9 +686,10 @@ class UnaryExpression extends AstNode_1.Expression {
|
|
|
690
686
|
exports.UnaryExpression = UnaryExpression;
|
|
691
687
|
class VariableExpression extends AstNode_1.Expression {
|
|
692
688
|
constructor(name) {
|
|
689
|
+
var _a;
|
|
693
690
|
super();
|
|
694
691
|
this.name = name;
|
|
695
|
-
this.range = this.name.range;
|
|
692
|
+
this.range = (_a = this.name) === null || _a === void 0 ? void 0 : _a.range;
|
|
696
693
|
}
|
|
697
694
|
getName(parseMode) {
|
|
698
695
|
return this.name.text;
|
|
@@ -723,7 +720,7 @@ class SourceLiteralExpression extends AstNode_1.Expression {
|
|
|
723
720
|
constructor(token) {
|
|
724
721
|
super();
|
|
725
722
|
this.token = token;
|
|
726
|
-
this.range = token.range;
|
|
723
|
+
this.range = token === null || token === void 0 ? void 0 : token.range;
|
|
727
724
|
}
|
|
728
725
|
getFunctionName(state, parseMode) {
|
|
729
726
|
let func = state.file.getFunctionScopeAtPosition(this.token.range.start).func;
|
|
@@ -794,7 +791,7 @@ class NewExpression extends AstNode_1.Expression {
|
|
|
794
791
|
super();
|
|
795
792
|
this.newKeyword = newKeyword;
|
|
796
793
|
this.call = call;
|
|
797
|
-
this.range = util_1.default.
|
|
794
|
+
this.range = util_1.default.createBoundingRange(this.newKeyword, this.call);
|
|
798
795
|
}
|
|
799
796
|
/**
|
|
800
797
|
* The name of the class to initialize (with optional namespace prefixed)
|
|
@@ -821,7 +818,6 @@ class NewExpression extends AstNode_1.Expression {
|
|
|
821
818
|
exports.NewExpression = NewExpression;
|
|
822
819
|
class CallfuncExpression extends AstNode_1.Expression {
|
|
823
820
|
constructor(callee, operator, methodName, openingParen, args, closingParen) {
|
|
824
|
-
var _a, _b, _c;
|
|
825
821
|
super();
|
|
826
822
|
this.callee = callee;
|
|
827
823
|
this.operator = operator;
|
|
@@ -829,7 +825,7 @@ class CallfuncExpression extends AstNode_1.Expression {
|
|
|
829
825
|
this.openingParen = openingParen;
|
|
830
826
|
this.args = args;
|
|
831
827
|
this.closingParen = closingParen;
|
|
832
|
-
this.range = util_1.default.
|
|
828
|
+
this.range = util_1.default.createBoundingRange(callee, operator, methodName, openingParen, ...args, closingParen);
|
|
833
829
|
}
|
|
834
830
|
/**
|
|
835
831
|
* Get the name of the wrapping namespace (if it exists)
|
|
@@ -878,7 +874,7 @@ class TemplateStringQuasiExpression extends AstNode_1.Expression {
|
|
|
878
874
|
constructor(expressions) {
|
|
879
875
|
super();
|
|
880
876
|
this.expressions = expressions;
|
|
881
|
-
this.range = util_1.default.
|
|
877
|
+
this.range = util_1.default.createBoundingRange(...expressions);
|
|
882
878
|
}
|
|
883
879
|
transpile(state, skipEmptyStrings = true) {
|
|
884
880
|
let result = [];
|
|
@@ -908,13 +904,13 @@ class TemplateStringExpression extends AstNode_1.Expression {
|
|
|
908
904
|
this.quasis = quasis;
|
|
909
905
|
this.expressions = expressions;
|
|
910
906
|
this.closingBacktick = closingBacktick;
|
|
911
|
-
this.range = util_1.default.
|
|
907
|
+
this.range = util_1.default.createBoundingRange(openingBacktick, quasis[0], quasis[quasis.length - 1], closingBacktick);
|
|
912
908
|
}
|
|
913
909
|
transpile(state) {
|
|
914
910
|
if (this.quasis.length === 1 && this.expressions.length === 0) {
|
|
915
911
|
return this.quasis[0].transpile(state);
|
|
916
912
|
}
|
|
917
|
-
let result = [];
|
|
913
|
+
let result = ['('];
|
|
918
914
|
let plus = '';
|
|
919
915
|
//helper function to figure out when to include the plus
|
|
920
916
|
function add(...items) {
|
|
@@ -942,6 +938,8 @@ class TemplateStringExpression extends AstNode_1.Expression {
|
|
|
942
938
|
}
|
|
943
939
|
}
|
|
944
940
|
}
|
|
941
|
+
//the expression should be wrapped in parens so it can be used line a single expression at runtime
|
|
942
|
+
result.push(')');
|
|
945
943
|
return result;
|
|
946
944
|
}
|
|
947
945
|
walk(visitor, options) {
|
|
@@ -966,7 +964,7 @@ class TaggedTemplateStringExpression extends AstNode_1.Expression {
|
|
|
966
964
|
this.quasis = quasis;
|
|
967
965
|
this.expressions = expressions;
|
|
968
966
|
this.closingBacktick = closingBacktick;
|
|
969
|
-
this.range = util_1.default.
|
|
967
|
+
this.range = util_1.default.createBoundingRange(tagName, openingBacktick, quasis[0], quasis[quasis.length - 1], closingBacktick);
|
|
970
968
|
}
|
|
971
969
|
transpile(state) {
|
|
972
970
|
let result = [];
|
|
@@ -1012,7 +1010,7 @@ class AnnotationExpression extends AstNode_1.Expression {
|
|
|
1012
1010
|
this.atToken = atToken;
|
|
1013
1011
|
this.nameToken = nameToken;
|
|
1014
1012
|
this.name = nameToken.text;
|
|
1015
|
-
this.range = util_1.default.
|
|
1013
|
+
this.range = util_1.default.createBoundingRange(atToken, nameToken);
|
|
1016
1014
|
}
|
|
1017
1015
|
/**
|
|
1018
1016
|
* Convert annotation arguments to JavaScript types
|
|
@@ -1042,14 +1040,13 @@ class AnnotationExpression extends AstNode_1.Expression {
|
|
|
1042
1040
|
exports.AnnotationExpression = AnnotationExpression;
|
|
1043
1041
|
class TernaryExpression extends AstNode_1.Expression {
|
|
1044
1042
|
constructor(test, questionMarkToken, consequent, colonToken, alternate) {
|
|
1045
|
-
var _a, _b, _c;
|
|
1046
1043
|
super();
|
|
1047
1044
|
this.test = test;
|
|
1048
1045
|
this.questionMarkToken = questionMarkToken;
|
|
1049
1046
|
this.consequent = consequent;
|
|
1050
1047
|
this.colonToken = colonToken;
|
|
1051
1048
|
this.alternate = alternate;
|
|
1052
|
-
this.range = util_1.default.
|
|
1049
|
+
this.range = util_1.default.createBoundingRange(test, questionMarkToken, consequent, colonToken, alternate);
|
|
1053
1050
|
}
|
|
1054
1051
|
transpile(state) {
|
|
1055
1052
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
@@ -1087,12 +1084,11 @@ class TernaryExpression extends AstNode_1.Expression {
|
|
|
1087
1084
|
exports.TernaryExpression = TernaryExpression;
|
|
1088
1085
|
class NullCoalescingExpression extends AstNode_1.Expression {
|
|
1089
1086
|
constructor(consequent, questionQuestionToken, alternate) {
|
|
1090
|
-
var _a;
|
|
1091
1087
|
super();
|
|
1092
1088
|
this.consequent = consequent;
|
|
1093
1089
|
this.questionQuestionToken = questionQuestionToken;
|
|
1094
1090
|
this.alternate = alternate;
|
|
1095
|
-
this.range = util_1.default.
|
|
1091
|
+
this.range = util_1.default.createBoundingRange(consequent, questionQuestionToken, alternate);
|
|
1096
1092
|
}
|
|
1097
1093
|
transpile(state) {
|
|
1098
1094
|
let result = [];
|
|
@@ -1134,7 +1130,8 @@ class RegexLiteralExpression extends AstNode_1.Expression {
|
|
|
1134
1130
|
this.tokens = tokens;
|
|
1135
1131
|
}
|
|
1136
1132
|
get range() {
|
|
1137
|
-
|
|
1133
|
+
var _a, _b;
|
|
1134
|
+
return (_b = (_a = this.tokens) === null || _a === void 0 ? void 0 : _a.regexLiteral) === null || _b === void 0 ? void 0 : _b.range;
|
|
1138
1135
|
}
|
|
1139
1136
|
transpile(state) {
|
|
1140
1137
|
var _a, _b;
|