brighterscript 0.71.0 → 0.72.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/bsconfig.schema.json +13 -0
- package/dist/BsConfig.d.ts +35 -5
- package/dist/CodeActionUtil.d.ts +17 -0
- package/dist/CodeActionUtil.js.map +1 -1
- package/dist/DiagnosticMessages.d.ts +6 -1
- package/dist/DiagnosticMessages.js +5 -0
- package/dist/DiagnosticMessages.js.map +1 -1
- package/dist/LanguageServer.d.ts +15 -2
- package/dist/LanguageServer.js +100 -7
- package/dist/LanguageServer.js.map +1 -1
- package/dist/Program.d.ts +76 -1
- package/dist/Program.js +215 -2
- package/dist/Program.js.map +1 -1
- package/dist/Scope.d.ts +53 -7
- package/dist/Scope.js +28 -66
- package/dist/Scope.js.map +1 -1
- package/dist/ScopeNamespaceLookup.d.ts +73 -0
- package/dist/ScopeNamespaceLookup.js +240 -0
- package/dist/ScopeNamespaceLookup.js.map +1 -0
- package/dist/SymbolTable.d.ts +9 -2
- package/dist/SymbolTable.js +10 -5
- package/dist/SymbolTable.js.map +1 -1
- package/dist/bscPlugin/BscPlugin.d.ts +3 -1
- package/dist/bscPlugin/BscPlugin.js +8 -0
- package/dist/bscPlugin/BscPlugin.js.map +1 -1
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +2 -4
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
- package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.d.ts +17 -0
- package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.js +66 -0
- package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.js.map +1 -0
- package/dist/bscPlugin/codeActions/codeActionHelpers.d.ts +18 -0
- package/dist/bscPlugin/codeActions/codeActionHelpers.js +29 -0
- package/dist/bscPlugin/codeActions/codeActionHelpers.js.map +1 -0
- package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.d.ts +7 -0
- package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.js +74 -0
- package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.js.map +1 -0
- package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.spec.d.ts +1 -0
- package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.spec.js +298 -0
- package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.spec.js.map +1 -0
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.d.ts +2 -0
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js +49 -4
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +1 -1
- package/dist/bscPlugin/validation/BrsFileValidator.d.ts +13 -0
- package/dist/bscPlugin/validation/BrsFileValidator.js +42 -0
- package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
- package/dist/bscPlugin/validation/BrsFileValidator.spec.js +101 -0
- package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.d.ts +11 -0
- package/dist/bscPlugin/validation/ScopeValidator.js +69 -0
- package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
- package/dist/files/BrsFile.d.ts +15 -0
- package/dist/files/BrsFile.js +88 -5
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +156 -3
- package/dist/files/BrsFile.spec.js.map +1 -1
- package/dist/interfaces.d.ts +51 -1
- package/dist/lsp/DocumentManager.spec.js +1 -1
- package/dist/lsp/DocumentManager.spec.js.map +1 -1
- package/dist/lsp/LspProject.d.ts +30 -1
- package/dist/lsp/Project.d.ts +19 -1
- package/dist/lsp/Project.js +98 -2
- package/dist/lsp/Project.js.map +1 -1
- package/dist/lsp/Project.spec.js +146 -9
- package/dist/lsp/Project.spec.js.map +1 -1
- package/dist/lsp/ProjectManager.d.ts +38 -2
- package/dist/lsp/ProjectManager.js +116 -4
- package/dist/lsp/ProjectManager.js.map +1 -1
- package/dist/lsp/ProjectManager.spec.js +236 -1
- package/dist/lsp/ProjectManager.spec.js.map +1 -1
- package/dist/lsp/worker/WorkerThreadProject.d.ts +13 -2
- package/dist/lsp/worker/WorkerThreadProject.js +9 -0
- package/dist/lsp/worker/WorkerThreadProject.js.map +1 -1
- package/dist/lsp/worker/WorkerThreadProject.spec.js +2 -1
- package/dist/lsp/worker/WorkerThreadProject.spec.js.map +1 -1
- package/dist/parser/Parser.d.ts +10 -0
- package/dist/parser/Parser.js +18 -3
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/Parser.spec.js +111 -0
- package/dist/parser/Parser.spec.js.map +1 -1
- package/dist/parser/TranspileState.d.ts +4 -2
- package/dist/parser/TranspileState.js +3 -3
- package/dist/parser/TranspileState.js.map +1 -1
- package/dist/parser/tests/expression/Call.spec.js +4 -5
- package/dist/parser/tests/expression/Call.spec.js.map +1 -1
- package/dist/parser/tests/expression/Function.spec.js +2 -2
- package/dist/parser/tests/expression/Function.spec.js.map +1 -1
- package/dist/parser/tests/statement/ConstStatement.spec.js +218 -1
- package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Enum.spec.js +2 -0
- package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
- package/dist/util.d.ts +26 -0
- package/dist/util.js +68 -0
- package/dist/util.js.map +1 -1
- package/package.json +4 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codeActionHelpers.js","sourceRoot":"","sources":["../../../src/bscPlugin/codeActions/codeActionHelpers.ts"],"names":[],"mappings":";;;AAEA,qCAAkC;AAElC;;;;GAIG;AACH,SAAgB,+BAA+B,CAAC,IAAa;;IACzD,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IACtC,OAAO,CAAC,MAAA,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,mCAAI,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9F,CAAC;AAHD,0EAGC;AAED;;;;GAIG;AACH,SAAgB,0BAA0B,CAAC,UAAsB,EAAE,QAAgB;IAC/E,OAAO;QACH,IAAI,EAAE,QAAiB;QACvB,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,WAAI,CAAC,WAAW,CACnB,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAC3B,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC,MAAM,EAClD,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EACzB,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CACjC;KACJ,CAAC;AACN,CAAC;AAXD,gEAWC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SelectionRangesProcessor = void 0;
|
|
4
|
+
const vscode_languageserver_types_1 = require("vscode-languageserver-types");
|
|
5
|
+
const reflection_1 = require("../../astUtils/reflection");
|
|
6
|
+
class SelectionRangesProcessor {
|
|
7
|
+
constructor(event) {
|
|
8
|
+
this.event = event;
|
|
9
|
+
}
|
|
10
|
+
process() {
|
|
11
|
+
if (!(0, reflection_1.isBrsFile)(this.event.file)) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
for (const position of this.event.positions) {
|
|
15
|
+
const selectionRange = this.buildSelectionRange(position);
|
|
16
|
+
if (selectionRange) {
|
|
17
|
+
this.event.selectionRanges.push(selectionRange);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
buildSelectionRange(position) {
|
|
22
|
+
const file = this.event.file;
|
|
23
|
+
if (!(0, reflection_1.isBrsFile)(file)) {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
// Find the deepest AST node containing this position
|
|
27
|
+
const innerNode = file.ast.findChildAtPosition(position);
|
|
28
|
+
if (!(innerNode === null || innerNode === void 0 ? void 0 : innerNode.range)) {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
const ranges = [];
|
|
32
|
+
// Many BrightScript AST nodes store identifier names as raw Tokens (not child
|
|
33
|
+
// AstNodes), so findChildAtPosition stops at the enclosing statement/expression.
|
|
34
|
+
// To give the first expansion step a tight "identifier only" range — matching
|
|
35
|
+
// the JS/TS smart-select behaviour — we look up the exact lexer token at the
|
|
36
|
+
// cursor position and use its range as the initial step.
|
|
37
|
+
const token = file.getTokenAt(position);
|
|
38
|
+
if ((token === null || token === void 0 ? void 0 : token.range) && !rangesEqual(token.range, innerNode.range)) {
|
|
39
|
+
ranges.push(token.range);
|
|
40
|
+
}
|
|
41
|
+
// Walk up the AST parent chain, collecting each node's range.
|
|
42
|
+
// Skip duplicate consecutive ranges (e.g. a Block whose range equals its
|
|
43
|
+
// only child statement, or an ExpressionStatement === its expression).
|
|
44
|
+
let node = innerNode;
|
|
45
|
+
while (node) {
|
|
46
|
+
const nodeRange = node.range;
|
|
47
|
+
if (nodeRange && !rangesEqual(nodeRange, ranges[ranges.length - 1])) {
|
|
48
|
+
ranges.push(nodeRange);
|
|
49
|
+
}
|
|
50
|
+
node = node.parent;
|
|
51
|
+
}
|
|
52
|
+
if (ranges.length === 0) {
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
// Build the SelectionRange linked list from outermost → innermost.
|
|
56
|
+
// LSP: the innermost range has `.parent` pointing outward.
|
|
57
|
+
let selectionRange;
|
|
58
|
+
for (let i = ranges.length - 1; i >= 0; i--) {
|
|
59
|
+
selectionRange = vscode_languageserver_types_1.SelectionRange.create(ranges[i], selectionRange);
|
|
60
|
+
}
|
|
61
|
+
return selectionRange;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.SelectionRangesProcessor = SelectionRangesProcessor;
|
|
65
|
+
function rangesEqual(a, b) {
|
|
66
|
+
if (!a || !b) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
return a.start.line === b.start.line &&
|
|
70
|
+
a.start.character === b.start.character &&
|
|
71
|
+
a.end.line === b.end.line &&
|
|
72
|
+
a.end.character === b.end.character;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=SelectionRangesProcessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectionRangesProcessor.js","sourceRoot":"","sources":["../../../src/bscPlugin/selectionRanges/SelectionRangesProcessor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const chai_config_spec_1 = require("../../chai-config.spec");
|
|
4
|
+
const Program_1 = require("../../Program");
|
|
5
|
+
const util_1 = require("../../util");
|
|
6
|
+
const testHelpers_spec_1 = require("../../testHelpers.spec");
|
|
7
|
+
describe('SelectionRangesProcessor', () => {
|
|
8
|
+
let program;
|
|
9
|
+
beforeEach(() => {
|
|
10
|
+
program = new Program_1.Program({ rootDir: testHelpers_spec_1.rootDir });
|
|
11
|
+
});
|
|
12
|
+
afterEach(() => {
|
|
13
|
+
program.dispose();
|
|
14
|
+
});
|
|
15
|
+
/**
|
|
16
|
+
* Flatten a SelectionRange linked list (innermost → outermost) into an array
|
|
17
|
+
* of `[startLine, startChar, endLine, endChar]` tuples for easy assertion.
|
|
18
|
+
*/
|
|
19
|
+
function flatten(sr) {
|
|
20
|
+
const result = [];
|
|
21
|
+
let current = sr;
|
|
22
|
+
while (current) {
|
|
23
|
+
const { start, end } = current.range;
|
|
24
|
+
result.push([start.line, start.character, end.line, end.character]);
|
|
25
|
+
current = current.parent;
|
|
26
|
+
}
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Extract the substring of `code` that a `[startLine, startChar, endLine, endChar]` range covers.
|
|
31
|
+
*/
|
|
32
|
+
function getText(code, range) {
|
|
33
|
+
const lines = code.split('\n');
|
|
34
|
+
const [startLine, startChar, endLine, endChar] = range;
|
|
35
|
+
if (startLine === endLine) {
|
|
36
|
+
return lines[startLine].slice(startChar, endChar);
|
|
37
|
+
}
|
|
38
|
+
const parts = [lines[startLine].slice(startChar)];
|
|
39
|
+
for (let i = startLine + 1; i < endLine; i++) {
|
|
40
|
+
parts.push(lines[i]);
|
|
41
|
+
}
|
|
42
|
+
parts.push(lines[endLine].slice(0, endChar));
|
|
43
|
+
return parts.join('\n');
|
|
44
|
+
}
|
|
45
|
+
function getSelectionRange(code, line, character) {
|
|
46
|
+
const file = program.setFile('source/main.brs', code);
|
|
47
|
+
program.validate();
|
|
48
|
+
const ranges = program.getSelectionRanges(file.pathAbsolute, [util_1.util.createPosition(line, character)]);
|
|
49
|
+
return ranges[0];
|
|
50
|
+
}
|
|
51
|
+
// -------------------------------------------------------------------------
|
|
52
|
+
// Basic identifier / variable
|
|
53
|
+
// -------------------------------------------------------------------------
|
|
54
|
+
it('expands from identifier token to assignment statement to function', () => {
|
|
55
|
+
const code = (0, testHelpers_spec_1.trim) `
|
|
56
|
+
sub main()
|
|
57
|
+
name = "hello"
|
|
58
|
+
end sub
|
|
59
|
+
`;
|
|
60
|
+
// cursor on 'n' of 'name' (line 1, col 4)
|
|
61
|
+
const sr = getSelectionRange(code, 1, 4);
|
|
62
|
+
const steps = flatten(sr);
|
|
63
|
+
(0, chai_config_spec_1.expect)(getText(code, steps[0])).to.equal('name', 'first step should be the identifier token');
|
|
64
|
+
(0, chai_config_spec_1.expect)(getText(code, steps[1])).to.equal('name = "hello"', 'second step should be the assignment statement');
|
|
65
|
+
(0, chai_config_spec_1.expect)(getText(code, steps[steps.length - 1])).to.equal(code, 'outermost step should be the full sub');
|
|
66
|
+
});
|
|
67
|
+
// -------------------------------------------------------------------------
|
|
68
|
+
// String literal
|
|
69
|
+
// -------------------------------------------------------------------------
|
|
70
|
+
it('expands from string literal to assignment to function', () => {
|
|
71
|
+
const code = (0, testHelpers_spec_1.trim) `
|
|
72
|
+
sub main()
|
|
73
|
+
name = "hello"
|
|
74
|
+
end sub
|
|
75
|
+
`;
|
|
76
|
+
// cursor inside "hello" — col 12 is 'h'
|
|
77
|
+
const sr = getSelectionRange(code, 1, 12);
|
|
78
|
+
const steps = flatten(sr);
|
|
79
|
+
(0, chai_config_spec_1.expect)(getText(code, steps[0])).to.equal('"hello"', 'first step should be the string literal');
|
|
80
|
+
(0, chai_config_spec_1.expect)(getText(code, steps[steps.length - 1])).to.equal(code, 'outermost step should be the full sub');
|
|
81
|
+
});
|
|
82
|
+
// -------------------------------------------------------------------------
|
|
83
|
+
// Dotted-get expression (member access)
|
|
84
|
+
// -------------------------------------------------------------------------
|
|
85
|
+
it('expands name token then full dotted-get chain', () => {
|
|
86
|
+
const code = (0, testHelpers_spec_1.trim) `
|
|
87
|
+
sub main()
|
|
88
|
+
x = m.top.value
|
|
89
|
+
end sub
|
|
90
|
+
`;
|
|
91
|
+
// cursor in the middle of 'value' — col 16
|
|
92
|
+
const sr = getSelectionRange(code, 1, 16);
|
|
93
|
+
const steps = flatten(sr);
|
|
94
|
+
(0, chai_config_spec_1.expect)(getText(code, steps[0])).to.equal('value', 'first step is the name token of the dotted-get');
|
|
95
|
+
(0, chai_config_spec_1.expect)(getText(code, steps[1])).to.equal('m.top.value', 'second step is the full dotted-get expression');
|
|
96
|
+
});
|
|
97
|
+
// -------------------------------------------------------------------------
|
|
98
|
+
// Function call expression
|
|
99
|
+
// -------------------------------------------------------------------------
|
|
100
|
+
it('expands from argument to full function call expression', () => {
|
|
101
|
+
const code = (0, testHelpers_spec_1.trim) `
|
|
102
|
+
sub main()
|
|
103
|
+
foo("hello")
|
|
104
|
+
end sub
|
|
105
|
+
`;
|
|
106
|
+
// cursor on 'h' inside "hello" — col 9
|
|
107
|
+
const sr = getSelectionRange(code, 1, 9);
|
|
108
|
+
const steps = flatten(sr);
|
|
109
|
+
(0, chai_config_spec_1.expect)(getText(code, steps[0])).to.equal('"hello"', 'first step is the string arg');
|
|
110
|
+
const hasCallRange = steps.some(r => getText(code, r) === 'foo("hello")');
|
|
111
|
+
(0, chai_config_spec_1.expect)(hasCallRange).to.be.true;
|
|
112
|
+
});
|
|
113
|
+
// -------------------------------------------------------------------------
|
|
114
|
+
// Nested function / function expression
|
|
115
|
+
// -------------------------------------------------------------------------
|
|
116
|
+
it('expands from nested function body through inner function to outer sub', () => {
|
|
117
|
+
const code = (0, testHelpers_spec_1.trim) `
|
|
118
|
+
sub outer()
|
|
119
|
+
inner = function()
|
|
120
|
+
x = 1
|
|
121
|
+
end function
|
|
122
|
+
end sub
|
|
123
|
+
`;
|
|
124
|
+
// cursor on 'x' — line 2, col 8
|
|
125
|
+
const sr = getSelectionRange(code, 2, 8);
|
|
126
|
+
const steps = flatten(sr);
|
|
127
|
+
// Should have at least 4 steps: token → stmt → inner fn → outer sub
|
|
128
|
+
(0, chai_config_spec_1.expect)(steps.length).to.be.at.least(4);
|
|
129
|
+
(0, chai_config_spec_1.expect)(getText(code, steps[steps.length - 1])).to.equal(code, 'outermost step should be the full outer sub');
|
|
130
|
+
});
|
|
131
|
+
// -------------------------------------------------------------------------
|
|
132
|
+
// If / else blocks
|
|
133
|
+
// -------------------------------------------------------------------------
|
|
134
|
+
it('expands from inside an if block to the enclosing sub', () => {
|
|
135
|
+
const code = (0, testHelpers_spec_1.trim) `
|
|
136
|
+
sub main()
|
|
137
|
+
if true then
|
|
138
|
+
x = 1
|
|
139
|
+
end if
|
|
140
|
+
end sub
|
|
141
|
+
`;
|
|
142
|
+
// cursor on 'x' — line 2, col 8
|
|
143
|
+
const sr = getSelectionRange(code, 2, 8);
|
|
144
|
+
const steps = flatten(sr);
|
|
145
|
+
(0, chai_config_spec_1.expect)(steps.length).to.be.at.least(3);
|
|
146
|
+
(0, chai_config_spec_1.expect)(getText(code, steps[steps.length - 1])).to.equal(code, 'outermost step should be the full sub');
|
|
147
|
+
});
|
|
148
|
+
// -------------------------------------------------------------------------
|
|
149
|
+
// For loop
|
|
150
|
+
// -------------------------------------------------------------------------
|
|
151
|
+
it('expands from inside a for loop body to the enclosing sub', () => {
|
|
152
|
+
const code = (0, testHelpers_spec_1.trim) `
|
|
153
|
+
sub main()
|
|
154
|
+
for i = 0 to 10
|
|
155
|
+
x = 1
|
|
156
|
+
end for
|
|
157
|
+
end sub
|
|
158
|
+
`;
|
|
159
|
+
// cursor on 'x' — line 2, col 8
|
|
160
|
+
const sr = getSelectionRange(code, 2, 8);
|
|
161
|
+
const steps = flatten(sr);
|
|
162
|
+
(0, chai_config_spec_1.expect)(steps.length).to.be.at.least(3);
|
|
163
|
+
(0, chai_config_spec_1.expect)(getText(code, steps[steps.length - 1])).to.equal(code, 'outermost step should be the full sub');
|
|
164
|
+
});
|
|
165
|
+
// -------------------------------------------------------------------------
|
|
166
|
+
// Class
|
|
167
|
+
// -------------------------------------------------------------------------
|
|
168
|
+
it('expands from class method body through method to class', () => {
|
|
169
|
+
const code = (0, testHelpers_spec_1.trim) `
|
|
170
|
+
class MyClass
|
|
171
|
+
function greet() as string
|
|
172
|
+
return "hello"
|
|
173
|
+
end function
|
|
174
|
+
end class
|
|
175
|
+
`;
|
|
176
|
+
// cursor on 'h' in "hello" — line 2, col 16
|
|
177
|
+
const sr = getSelectionRange(code, 2, 16);
|
|
178
|
+
const steps = flatten(sr);
|
|
179
|
+
(0, chai_config_spec_1.expect)(steps.length).to.be.at.least(3);
|
|
180
|
+
(0, chai_config_spec_1.expect)(getText(code, steps[steps.length - 1])).to.equal(code, 'outermost step should be the whole class');
|
|
181
|
+
});
|
|
182
|
+
// -------------------------------------------------------------------------
|
|
183
|
+
// Namespace
|
|
184
|
+
// -------------------------------------------------------------------------
|
|
185
|
+
it('expands from namespace function body to namespace', () => {
|
|
186
|
+
const code = (0, testHelpers_spec_1.trim) `
|
|
187
|
+
namespace MyApp
|
|
188
|
+
sub doThing()
|
|
189
|
+
x = 1
|
|
190
|
+
end sub
|
|
191
|
+
end namespace
|
|
192
|
+
`;
|
|
193
|
+
// cursor on 'x' — line 2, col 8
|
|
194
|
+
const sr = getSelectionRange(code, 2, 8);
|
|
195
|
+
const steps = flatten(sr);
|
|
196
|
+
(0, chai_config_spec_1.expect)(steps.length).to.be.at.least(4);
|
|
197
|
+
(0, chai_config_spec_1.expect)(getText(code, steps[steps.length - 1])).to.equal(code, 'outermost step should be the whole namespace');
|
|
198
|
+
});
|
|
199
|
+
// -------------------------------------------------------------------------
|
|
200
|
+
// Multiple positions in one request
|
|
201
|
+
// -------------------------------------------------------------------------
|
|
202
|
+
it('handles multiple positions in one request', () => {
|
|
203
|
+
const code = (0, testHelpers_spec_1.trim) `
|
|
204
|
+
sub main()
|
|
205
|
+
a = 1
|
|
206
|
+
b = 2
|
|
207
|
+
end sub
|
|
208
|
+
`;
|
|
209
|
+
const file = program.setFile('source/multi.brs', code);
|
|
210
|
+
program.validate();
|
|
211
|
+
const ranges = program.getSelectionRanges(file.pathAbsolute, [
|
|
212
|
+
util_1.util.createPosition(1, 4),
|
|
213
|
+
util_1.util.createPosition(2, 4) // cursor on 'b'
|
|
214
|
+
]);
|
|
215
|
+
(0, chai_config_spec_1.expect)(ranges).to.have.length(2);
|
|
216
|
+
(0, chai_config_spec_1.expect)(ranges[0]).to.exist;
|
|
217
|
+
(0, chai_config_spec_1.expect)(ranges[1]).to.exist;
|
|
218
|
+
const steps0 = flatten(ranges[0]);
|
|
219
|
+
const steps1 = flatten(ranges[1]);
|
|
220
|
+
(0, chai_config_spec_1.expect)(getText(code, steps0[0])).to.equal('a', 'first position selects identifier "a"');
|
|
221
|
+
(0, chai_config_spec_1.expect)(getText(code, steps1[0])).to.equal('b', 'second position selects identifier "b"');
|
|
222
|
+
});
|
|
223
|
+
// -------------------------------------------------------------------------
|
|
224
|
+
// BrighterScript: enum
|
|
225
|
+
// -------------------------------------------------------------------------
|
|
226
|
+
it('expands inside an enum member value to the whole enum', () => {
|
|
227
|
+
const code = (0, testHelpers_spec_1.trim) `
|
|
228
|
+
enum Direction
|
|
229
|
+
up = "up"
|
|
230
|
+
down = "down"
|
|
231
|
+
end enum
|
|
232
|
+
`;
|
|
233
|
+
// cursor on 'u' inside "up" on line 1 — col 10
|
|
234
|
+
const sr = getSelectionRange(code, 1, 10);
|
|
235
|
+
const steps = flatten(sr);
|
|
236
|
+
(0, chai_config_spec_1.expect)(steps.length).to.be.at.least(2);
|
|
237
|
+
(0, chai_config_spec_1.expect)(getText(code, steps[steps.length - 1])).to.equal(code, 'outermost step should be the whole enum');
|
|
238
|
+
});
|
|
239
|
+
// -------------------------------------------------------------------------
|
|
240
|
+
// Edge cases
|
|
241
|
+
// -------------------------------------------------------------------------
|
|
242
|
+
it('returns empty array for a position outside any node', () => {
|
|
243
|
+
const code = (0, testHelpers_spec_1.trim) `
|
|
244
|
+
sub main()
|
|
245
|
+
end sub
|
|
246
|
+
`;
|
|
247
|
+
const file = program.setFile('source/empty.brs', code);
|
|
248
|
+
program.validate();
|
|
249
|
+
// position far past the last line — should not throw
|
|
250
|
+
const ranges = program.getSelectionRanges(file.pathAbsolute, [util_1.util.createPosition(99, 0)]);
|
|
251
|
+
(0, chai_config_spec_1.expect)(Array.isArray(ranges)).to.be.true;
|
|
252
|
+
});
|
|
253
|
+
it('returns empty array for unknown file', () => {
|
|
254
|
+
const ranges = program.getSelectionRanges('/does/not/exist.brs', [util_1.util.createPosition(0, 0)]);
|
|
255
|
+
(0, chai_config_spec_1.expect)(ranges).to.eql([]);
|
|
256
|
+
});
|
|
257
|
+
it('does not return duplicate consecutive ranges', () => {
|
|
258
|
+
const code = (0, testHelpers_spec_1.trim) `
|
|
259
|
+
sub main()
|
|
260
|
+
x = 1
|
|
261
|
+
end sub
|
|
262
|
+
`;
|
|
263
|
+
const sr = getSelectionRange(code, 1, 4);
|
|
264
|
+
const steps = flatten(sr);
|
|
265
|
+
// Verify no two consecutive steps have identical ranges
|
|
266
|
+
for (let i = 1; i < steps.length; i++) {
|
|
267
|
+
const prev = steps[i - 1];
|
|
268
|
+
const curr = steps[i];
|
|
269
|
+
const sameRange = prev[0] === curr[0] && prev[1] === curr[1] &&
|
|
270
|
+
prev[2] === curr[2] && prev[3] === curr[3];
|
|
271
|
+
(0, chai_config_spec_1.expect)(sameRange).to.be.false;
|
|
272
|
+
}
|
|
273
|
+
});
|
|
274
|
+
// -------------------------------------------------------------------------
|
|
275
|
+
// Plugin extensibility
|
|
276
|
+
// -------------------------------------------------------------------------
|
|
277
|
+
it('allows plugins to contribute custom selection ranges', () => {
|
|
278
|
+
const customRange = util_1.util.createRange(0, 0, 0, 10);
|
|
279
|
+
program.plugins.add({
|
|
280
|
+
name: 'test-plugin',
|
|
281
|
+
provideSelectionRanges: (event) => {
|
|
282
|
+
event.selectionRanges.push({ range: customRange });
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
const code = (0, testHelpers_spec_1.trim) `
|
|
286
|
+
sub main()
|
|
287
|
+
end sub
|
|
288
|
+
`;
|
|
289
|
+
const file = program.setFile('source/plugin.brs', code);
|
|
290
|
+
program.validate();
|
|
291
|
+
const ranges = program.getSelectionRanges(file.pathAbsolute, [util_1.util.createPosition(0, 4)]);
|
|
292
|
+
// The bsc plugin should push a range, and the test plugin pushed another
|
|
293
|
+
(0, chai_config_spec_1.expect)(ranges.length).to.be.at.least(2);
|
|
294
|
+
const hasCustom = ranges.some(r => r.range.start.line === 0 && r.range.end.character === 10);
|
|
295
|
+
(0, chai_config_spec_1.expect)(hasCustom).to.be.true;
|
|
296
|
+
});
|
|
297
|
+
});
|
|
298
|
+
//# sourceMappingURL=SelectionRangesProcessor.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectionRangesProcessor.spec.js","sourceRoot":"","sources":["../../../src/bscPlugin/selectionRanges/SelectionRangesProcessor.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -256,14 +256,18 @@ class BrsFilePreTranspileProcessor {
|
|
|
256
256
|
return { value: value, isCircular: false };
|
|
257
257
|
}
|
|
258
258
|
processExpression(ternaryExpression, scope) {
|
|
259
|
-
var _a
|
|
259
|
+
var _a;
|
|
260
260
|
let containingNamespace = (_a = this.event.file.getNamespaceStatementForPosition(ternaryExpression.range.start)) === null || _a === void 0 ? void 0 : _a.getName(Parser_1.ParseMode.BrighterScript);
|
|
261
|
-
|
|
261
|
+
this.processExpressionInNamespace(ternaryExpression, scope, containingNamespace, new Set());
|
|
262
|
+
}
|
|
263
|
+
processExpressionInNamespace(expression, scope, containingNamespace, visitedConsts) {
|
|
264
|
+
var _a, _b, _c;
|
|
265
|
+
const parts = util_1.default.splitExpression(expression);
|
|
262
266
|
const processedNames = [];
|
|
263
267
|
for (let part of parts) {
|
|
264
268
|
let entityName;
|
|
265
269
|
if ((0, reflection_1.isVariableExpression)(part) || (0, reflection_1.isDottedGetExpression)(part)) {
|
|
266
|
-
processedNames.push((
|
|
270
|
+
processedNames.push((_b = (_a = part === null || part === void 0 ? void 0 : part.name) === null || _a === void 0 ? void 0 : _a.text) === null || _b === void 0 ? void 0 : _b.toLocaleLowerCase());
|
|
267
271
|
entityName = processedNames.join('.');
|
|
268
272
|
}
|
|
269
273
|
else {
|
|
@@ -272,7 +276,7 @@ class BrsFilePreTranspileProcessor {
|
|
|
272
276
|
let value;
|
|
273
277
|
let isCircular = false;
|
|
274
278
|
//did we find a const? transpile the value
|
|
275
|
-
let constStatement = (
|
|
279
|
+
let constStatement = (_c = scope === null || scope === void 0 ? void 0 : scope.getConstFileLink(entityName, containingNamespace)) === null || _c === void 0 ? void 0 : _c.item;
|
|
276
280
|
if (constStatement) {
|
|
277
281
|
// Recursively resolve the const value to its final form
|
|
278
282
|
const resolved = this.resolveConstValue(constStatement.value, scope, containingNamespace);
|
|
@@ -287,6 +291,21 @@ class BrsFilePreTranspileProcessor {
|
|
|
287
291
|
}
|
|
288
292
|
}
|
|
289
293
|
if (value && !isCircular) {
|
|
294
|
+
//If the const's value is a complex expression (e.g. an aa literal containing
|
|
295
|
+
//enum refs), recursively process inner refs so they're inlined too. Without
|
|
296
|
+
//this step, cross-file const usage leaves nested enum/const refs unresolved
|
|
297
|
+
//because the consumer file's pre-transpile pass never visits the inlined
|
|
298
|
+
//value's children (they live in the const's defining file).
|
|
299
|
+
if (constStatement && !(0, reflection_1.isLiteralExpression)(value)) {
|
|
300
|
+
//if we're already inlining this const upstream, skip both the recursive
|
|
301
|
+
//walk AND the transpile override. Setting the override here would still
|
|
302
|
+
//create a transpile-time cycle (the value contains a ref back to a const
|
|
303
|
+
//that has been overridden to re-inline this same value).
|
|
304
|
+
if (visitedConsts.has(constStatement)) {
|
|
305
|
+
return;
|
|
306
|
+
}
|
|
307
|
+
this.processInlinedConstValue(value, scope, constStatement, visitedConsts);
|
|
308
|
+
}
|
|
290
309
|
//override the transpile for this item.
|
|
291
310
|
this.event.editor.setProperty(part, 'transpile', (state) => {
|
|
292
311
|
if ((0, reflection_1.isLiteralExpression)(value)) {
|
|
@@ -302,6 +321,32 @@ class BrsFilePreTranspileProcessor {
|
|
|
302
321
|
}
|
|
303
322
|
}
|
|
304
323
|
}
|
|
324
|
+
processInlinedConstValue(value, scope, constStatement, visitedConsts) {
|
|
325
|
+
var _a;
|
|
326
|
+
//skip if we've already walked this const's value during the current outer
|
|
327
|
+
//inline. This guards against unbounded recursion when consts have circular
|
|
328
|
+
//aggregate references (const A = { x: B }; const B = { y: A }) and avoids
|
|
329
|
+
//redundant work for diamond reference graphs.
|
|
330
|
+
if (visitedConsts.has(constStatement)) {
|
|
331
|
+
return;
|
|
332
|
+
}
|
|
333
|
+
visitedConsts.add(constStatement);
|
|
334
|
+
const innerNamespace = (_a = constStatement.findAncestor(reflection_1.isNamespaceStatement)) === null || _a === void 0 ? void 0 : _a.getName(Parser_1.ParseMode.BrighterScript);
|
|
335
|
+
value.walk((0, visitors_1.createVisitor)({
|
|
336
|
+
VariableExpression: (varExpr) => {
|
|
337
|
+
if ((0, reflection_1.isDottedGetExpression)(varExpr.parent)) {
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
340
|
+
this.processExpressionInNamespace(varExpr, scope, innerNamespace, visitedConsts);
|
|
341
|
+
},
|
|
342
|
+
DottedGetExpression: (dottedExpr) => {
|
|
343
|
+
if ((0, reflection_1.isDottedGetExpression)(dottedExpr.parent)) {
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
346
|
+
this.processExpressionInNamespace(dottedExpr, scope, innerNamespace, visitedConsts);
|
|
347
|
+
}
|
|
348
|
+
}), { walkMode: visitors_1.WalkMode.visitExpressionsRecursive });
|
|
349
|
+
}
|
|
305
350
|
}
|
|
306
351
|
exports.BrsFilePreTranspileProcessor = BrsFilePreTranspileProcessor;
|
|
307
352
|
//# sourceMappingURL=BrsFilePreTranspileProcessor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrsFilePreTranspileProcessor.js","sourceRoot":"","sources":["../../../src/bscPlugin/transpile/BrsFilePreTranspileProcessor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BrsFilePreTranspileProcessor.js","sourceRoot":"","sources":["../../../src/bscPlugin/transpile/BrsFilePreTranspileProcessor.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,4 +28,17 @@ export declare class BrsFileValidator {
|
|
|
28
28
|
* Validate that there are no optional chaining operators on the left-hand-side of an assignment, indexed set, or dotted get
|
|
29
29
|
*/
|
|
30
30
|
private validateNoOptionalChainingInVarSet;
|
|
31
|
+
/**
|
|
32
|
+
* The minimum Roku firmware version that introduced optional chaining support (Roku OS 11).
|
|
33
|
+
* Optional chaining is NOT transpiled by BrighterScript, so this restriction applies to both
|
|
34
|
+
* .brs and .bs files.
|
|
35
|
+
*/
|
|
36
|
+
private static readonly OPTIONAL_CHAINING_MIN_VERSION;
|
|
37
|
+
/**
|
|
38
|
+
* Add a diagnostic if the configured minFirmwareVersion is lower than the version that
|
|
39
|
+
* introduced optional chaining support (Roku OS 11).
|
|
40
|
+
* This applies to both .brs and .bs files because optional chaining is not transpiled —
|
|
41
|
+
* it is emitted as-is, so the target device must natively support it.
|
|
42
|
+
*/
|
|
43
|
+
private validateMinFirmwareVersionForOptionalChaining;
|
|
31
44
|
}
|