brighterscript 0.65.25 → 0.65.27
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 +18 -0
- package/dist/LanguageServer.js +11 -11
- package/dist/LanguageServer.js.map +1 -1
- package/dist/Program.d.ts +7 -2
- package/dist/Program.js +29 -8
- package/dist/Program.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/symbols/DocumentSymbolProcessor.d.ts +7 -0
- package/dist/bscPlugin/symbols/DocumentSymbolProcessor.js +22 -0
- package/dist/bscPlugin/symbols/DocumentSymbolProcessor.js.map +1 -0
- package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.d.ts +1 -0
- package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.js +290 -0
- package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.js.map +1 -0
- package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.d.ts +7 -0
- package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.js +26 -0
- package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.js.map +1 -0
- package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.d.ts +1 -0
- package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.js +245 -0
- package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.js.map +1 -0
- package/dist/bscPlugin/symbols/symbolUtils.d.ts +5 -0
- package/dist/bscPlugin/symbols/symbolUtils.js +140 -0
- package/dist/bscPlugin/symbols/symbolUtils.js.map +1 -0
- package/dist/bscPlugin/validation/BrsFileValidator.d.ts +1 -0
- package/dist/bscPlugin/validation/BrsFileValidator.js +10 -0
- package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
- package/dist/files/BrsFile.d.ts +3 -13
- package/dist/files/BrsFile.js +12 -99
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +24 -0
- package/dist/files/BrsFile.spec.js.map +1 -1
- package/dist/interfaces.d.ts +52 -1
- package/dist/lexer/Token.d.ts +1 -1
- package/dist/lexer/Token.js.map +1 -1
- package/dist/parser/Expression.d.ts +6 -0
- package/dist/parser/Expression.js +14 -7
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.js +0 -3
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +44 -0
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/TernaryExpression.spec.js +47 -0
- package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
- package/dist/util.d.ts +1 -1
- package/dist/util.js +9 -2
- package/dist/util.js.map +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1,290 @@
|
|
|
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 sinon_1 = require("sinon");
|
|
6
|
+
const testHelpers_spec_1 = require("../../testHelpers.spec");
|
|
7
|
+
const vscode_languageserver_types_1 = require("vscode-languageserver-types");
|
|
8
|
+
let sinon = (0, sinon_1.createSandbox)();
|
|
9
|
+
describe('DocumentSymbolProcessor', () => {
|
|
10
|
+
let program;
|
|
11
|
+
beforeEach(() => {
|
|
12
|
+
program = new Program_1.Program({ rootDir: testHelpers_spec_1.rootDir, sourceMap: true });
|
|
13
|
+
});
|
|
14
|
+
afterEach(() => {
|
|
15
|
+
sinon.restore();
|
|
16
|
+
program.dispose();
|
|
17
|
+
});
|
|
18
|
+
function doTest(source, expected) {
|
|
19
|
+
program.setFile('source/main.brs', source);
|
|
20
|
+
expectSymbols(program.getDocumentSymbols('source/main.brs'), expected);
|
|
21
|
+
}
|
|
22
|
+
it('skips other file types for now', () => {
|
|
23
|
+
program.setFile('components/MainScene.xml', `
|
|
24
|
+
<component name="MainScene" extends="Scene">
|
|
25
|
+
</component>
|
|
26
|
+
`);
|
|
27
|
+
expectSymbols(program.getDocumentSymbols('components/MainScene.xml'), {});
|
|
28
|
+
});
|
|
29
|
+
it('does not crash when name is missing', () => {
|
|
30
|
+
program.plugins['suppressErrors'] = false;
|
|
31
|
+
function testMissingToken(source, nameTokenPath, expected = {}) {
|
|
32
|
+
const file = program.setFile('source/main.brs', source);
|
|
33
|
+
let node = file.ast.statements[0];
|
|
34
|
+
//delete the token at the given path
|
|
35
|
+
for (let i = 0; i < nameTokenPath.length - 1; i++) {
|
|
36
|
+
node = node[nameTokenPath[i]];
|
|
37
|
+
}
|
|
38
|
+
delete node[nameTokenPath[nameTokenPath.length - 1]];
|
|
39
|
+
expectSymbols(program.getDocumentSymbols('source/main.brs'), expected);
|
|
40
|
+
}
|
|
41
|
+
//function name is missing
|
|
42
|
+
testMissingToken(`
|
|
43
|
+
sub alpha()
|
|
44
|
+
end sub
|
|
45
|
+
`, ['name']);
|
|
46
|
+
//class name is missing
|
|
47
|
+
testMissingToken(`
|
|
48
|
+
class alpha
|
|
49
|
+
end class
|
|
50
|
+
`, ['name']);
|
|
51
|
+
//class field name is missing
|
|
52
|
+
testMissingToken(`
|
|
53
|
+
class alpha
|
|
54
|
+
name as string
|
|
55
|
+
end class
|
|
56
|
+
`, ['body', '0', 'name'], {
|
|
57
|
+
alpha: vscode_languageserver_types_1.SymbolKind.Class
|
|
58
|
+
});
|
|
59
|
+
//class method name is missing
|
|
60
|
+
testMissingToken(`
|
|
61
|
+
class alpha
|
|
62
|
+
sub test()
|
|
63
|
+
end sub
|
|
64
|
+
end class
|
|
65
|
+
`, ['body', '0', 'name'], {
|
|
66
|
+
alpha: vscode_languageserver_types_1.SymbolKind.Class
|
|
67
|
+
});
|
|
68
|
+
//interface name is missing
|
|
69
|
+
testMissingToken(`
|
|
70
|
+
interface alpha
|
|
71
|
+
end interface
|
|
72
|
+
`, ['tokens', 'name']);
|
|
73
|
+
//interface method name is missing
|
|
74
|
+
testMissingToken(`
|
|
75
|
+
interface alpha
|
|
76
|
+
sub test() as void
|
|
77
|
+
end interface
|
|
78
|
+
`, ['body', '0', 'tokens', 'name'], {
|
|
79
|
+
alpha: vscode_languageserver_types_1.SymbolKind.Interface
|
|
80
|
+
});
|
|
81
|
+
//interface field name is missing
|
|
82
|
+
testMissingToken(`
|
|
83
|
+
interface alpha
|
|
84
|
+
name as string
|
|
85
|
+
end interface
|
|
86
|
+
`, ['body', '0', 'tokens', 'name'], {
|
|
87
|
+
alpha: vscode_languageserver_types_1.SymbolKind.Interface
|
|
88
|
+
});
|
|
89
|
+
//const name is missing
|
|
90
|
+
testMissingToken(`
|
|
91
|
+
const alpha = 1
|
|
92
|
+
`, ['tokens', 'name']);
|
|
93
|
+
//namespace name is missing
|
|
94
|
+
testMissingToken(`
|
|
95
|
+
namespace alpha
|
|
96
|
+
end namespace
|
|
97
|
+
`, ['nameExpression']);
|
|
98
|
+
//enum name is missing
|
|
99
|
+
testMissingToken(`
|
|
100
|
+
enum alpha
|
|
101
|
+
end enum
|
|
102
|
+
`, ['tokens', 'name']);
|
|
103
|
+
//enum member name is missing
|
|
104
|
+
testMissingToken(`
|
|
105
|
+
enum alpha
|
|
106
|
+
name = 1
|
|
107
|
+
end enum
|
|
108
|
+
`, ['body', '0', 'tokens', 'name'], {
|
|
109
|
+
alpha: vscode_languageserver_types_1.SymbolKind.Enum
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
it('finds functions', () => {
|
|
113
|
+
doTest(`
|
|
114
|
+
function alpha()
|
|
115
|
+
end function
|
|
116
|
+
function beta()
|
|
117
|
+
end function
|
|
118
|
+
`, {
|
|
119
|
+
'alpha': vscode_languageserver_types_1.SymbolKind.Function,
|
|
120
|
+
'beta': vscode_languageserver_types_1.SymbolKind.Function
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
it('finds namespaces', () => {
|
|
124
|
+
doTest(`
|
|
125
|
+
namespace alpha
|
|
126
|
+
end namespace
|
|
127
|
+
namespace beta
|
|
128
|
+
end namespace
|
|
129
|
+
namespace charlie
|
|
130
|
+
namespace delta
|
|
131
|
+
end namespace
|
|
132
|
+
end namespace
|
|
133
|
+
`, {
|
|
134
|
+
alpha: vscode_languageserver_types_1.SymbolKind.Namespace,
|
|
135
|
+
beta: vscode_languageserver_types_1.SymbolKind.Namespace,
|
|
136
|
+
charlie: {
|
|
137
|
+
kind: vscode_languageserver_types_1.SymbolKind.Namespace,
|
|
138
|
+
children: {
|
|
139
|
+
delta: vscode_languageserver_types_1.SymbolKind.Namespace
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
it('finds classes', () => {
|
|
145
|
+
doTest(`
|
|
146
|
+
class alpha
|
|
147
|
+
end class
|
|
148
|
+
|
|
149
|
+
namespace beta
|
|
150
|
+
class charlie
|
|
151
|
+
name as string
|
|
152
|
+
sub speak()
|
|
153
|
+
print "I am " + m.name
|
|
154
|
+
end sub
|
|
155
|
+
end class
|
|
156
|
+
end namespace
|
|
157
|
+
`, {
|
|
158
|
+
alpha: vscode_languageserver_types_1.SymbolKind.Class,
|
|
159
|
+
beta: {
|
|
160
|
+
kind: vscode_languageserver_types_1.SymbolKind.Namespace,
|
|
161
|
+
children: {
|
|
162
|
+
charlie: {
|
|
163
|
+
kind: vscode_languageserver_types_1.SymbolKind.Class,
|
|
164
|
+
children: {
|
|
165
|
+
name: vscode_languageserver_types_1.SymbolKind.Field,
|
|
166
|
+
speak: vscode_languageserver_types_1.SymbolKind.Method
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
it('finds interfaces', () => {
|
|
174
|
+
doTest(`
|
|
175
|
+
interface alpha
|
|
176
|
+
name as string
|
|
177
|
+
end interface
|
|
178
|
+
|
|
179
|
+
namespace beta
|
|
180
|
+
interface charlie
|
|
181
|
+
age as string
|
|
182
|
+
sub speak() as void
|
|
183
|
+
end interface
|
|
184
|
+
end namespace
|
|
185
|
+
`, {
|
|
186
|
+
alpha: {
|
|
187
|
+
kind: vscode_languageserver_types_1.SymbolKind.Interface,
|
|
188
|
+
children: {
|
|
189
|
+
name: vscode_languageserver_types_1.SymbolKind.Field
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
beta: {
|
|
193
|
+
kind: vscode_languageserver_types_1.SymbolKind.Namespace,
|
|
194
|
+
children: {
|
|
195
|
+
charlie: {
|
|
196
|
+
kind: vscode_languageserver_types_1.SymbolKind.Interface,
|
|
197
|
+
children: {
|
|
198
|
+
age: vscode_languageserver_types_1.SymbolKind.Field,
|
|
199
|
+
speak: vscode_languageserver_types_1.SymbolKind.Method
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
});
|
|
206
|
+
it('finds consts', () => {
|
|
207
|
+
doTest(`
|
|
208
|
+
const alpha = 1
|
|
209
|
+
namespace beta
|
|
210
|
+
const charlie = 2
|
|
211
|
+
end namespace
|
|
212
|
+
const delta = 3
|
|
213
|
+
`, {
|
|
214
|
+
alpha: vscode_languageserver_types_1.SymbolKind.Constant,
|
|
215
|
+
beta: {
|
|
216
|
+
kind: vscode_languageserver_types_1.SymbolKind.Namespace,
|
|
217
|
+
children: {
|
|
218
|
+
charlie: vscode_languageserver_types_1.SymbolKind.Constant
|
|
219
|
+
}
|
|
220
|
+
},
|
|
221
|
+
delta: vscode_languageserver_types_1.SymbolKind.Constant
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
it('finds enums', () => {
|
|
225
|
+
doTest(`
|
|
226
|
+
enum alpha
|
|
227
|
+
a = 1
|
|
228
|
+
b = 2
|
|
229
|
+
end enum
|
|
230
|
+
namespace beta
|
|
231
|
+
enum charlie
|
|
232
|
+
c = 3
|
|
233
|
+
d = 4
|
|
234
|
+
end enum
|
|
235
|
+
end namespace
|
|
236
|
+
`, {
|
|
237
|
+
alpha: {
|
|
238
|
+
kind: vscode_languageserver_types_1.SymbolKind.Enum,
|
|
239
|
+
children: {
|
|
240
|
+
a: vscode_languageserver_types_1.SymbolKind.EnumMember,
|
|
241
|
+
b: vscode_languageserver_types_1.SymbolKind.EnumMember
|
|
242
|
+
}
|
|
243
|
+
},
|
|
244
|
+
beta: {
|
|
245
|
+
kind: vscode_languageserver_types_1.SymbolKind.Namespace,
|
|
246
|
+
children: {
|
|
247
|
+
charlie: {
|
|
248
|
+
kind: vscode_languageserver_types_1.SymbolKind.Enum,
|
|
249
|
+
children: {
|
|
250
|
+
c: vscode_languageserver_types_1.SymbolKind.EnumMember,
|
|
251
|
+
d: vscode_languageserver_types_1.SymbolKind.EnumMember
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
});
|
|
258
|
+
function expectSymbols(documentSymbols, expected) {
|
|
259
|
+
(0, chai_config_spec_1.expect)(symbolKindToString(createSymbolTree(documentSymbols))).to.eql(symbolKindToString(expected));
|
|
260
|
+
}
|
|
261
|
+
const SymbolKindMap = new Map(Object.entries(vscode_languageserver_types_1.SymbolKind).map(x => [x[1], x[0]]));
|
|
262
|
+
function symbolKindToString(tree) {
|
|
263
|
+
//recursively walk the tree and convert every .kind property to a string
|
|
264
|
+
for (let key in tree) {
|
|
265
|
+
let value = tree[key];
|
|
266
|
+
if (typeof value === 'object') {
|
|
267
|
+
tree[key] = symbolKindToString(value);
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
tree[key] = SymbolKindMap.get(value);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
return tree;
|
|
274
|
+
}
|
|
275
|
+
function createSymbolTree(documentSymbols) {
|
|
276
|
+
var _a;
|
|
277
|
+
let tree = {};
|
|
278
|
+
for (let symbol of documentSymbols) {
|
|
279
|
+
tree[symbol.name] = symbol.kind;
|
|
280
|
+
if (((_a = symbol.children) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
281
|
+
tree[symbol.name] = {
|
|
282
|
+
kind: symbol.kind,
|
|
283
|
+
children: createSymbolTree(symbol.children)
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
return tree;
|
|
288
|
+
}
|
|
289
|
+
});
|
|
290
|
+
//# sourceMappingURL=DocumentSymbolProcessor.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocumentSymbolProcessor.spec.js","sourceRoot":"","sources":["../../../src/bscPlugin/symbols/DocumentSymbolProcessor.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ProvideWorkspaceSymbolsEvent } from '../../interfaces';
|
|
2
|
+
export declare class WorkspaceSymbolProcessor {
|
|
3
|
+
event: ProvideWorkspaceSymbolsEvent;
|
|
4
|
+
constructor(event: ProvideWorkspaceSymbolsEvent);
|
|
5
|
+
process(): import("vscode-languageserver-types").WorkspaceSymbol[];
|
|
6
|
+
private getBrsFileWorkspaceSymbols;
|
|
7
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WorkspaceSymbolProcessor = void 0;
|
|
4
|
+
const reflection_1 = require("../../astUtils/reflection");
|
|
5
|
+
const symbolUtils_1 = require("./symbolUtils");
|
|
6
|
+
class WorkspaceSymbolProcessor {
|
|
7
|
+
constructor(event) {
|
|
8
|
+
this.event = event;
|
|
9
|
+
}
|
|
10
|
+
process() {
|
|
11
|
+
const results = Object.values(this.event.program.files).map(file => {
|
|
12
|
+
if ((0, reflection_1.isBrsFile)(file)) {
|
|
13
|
+
return this.getBrsFileWorkspaceSymbols(file);
|
|
14
|
+
}
|
|
15
|
+
return [];
|
|
16
|
+
});
|
|
17
|
+
return results.flat();
|
|
18
|
+
}
|
|
19
|
+
getBrsFileWorkspaceSymbols(file) {
|
|
20
|
+
const symbols = (0, symbolUtils_1.getWorkspaceSymbolsFromBrsFile)(file);
|
|
21
|
+
this.event.workspaceSymbols.push(...symbols);
|
|
22
|
+
return this.event.workspaceSymbols;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.WorkspaceSymbolProcessor = WorkspaceSymbolProcessor;
|
|
26
|
+
//# sourceMappingURL=WorkspaceSymbolProcessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkspaceSymbolProcessor.js","sourceRoot":"","sources":["../../../src/bscPlugin/symbols/WorkspaceSymbolProcessor.ts"],"names":[],"mappings":";;;AAAA,0DAAsD;AAGtD,+CAA+D;AAE/D,MAAa,wBAAwB;IACjC,YACW,KAAmC;QAAnC,UAAK,GAAL,KAAK,CAA8B;IAG9C,CAAC;IAEM,OAAO;QACV,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC/D,IAAI,IAAA,sBAAS,EAAC,IAAI,CAAC,EAAE;gBACjB,OAAO,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;aAChD;YACD,OAAO,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAEO,0BAA0B,CAAC,IAAa;QAC5C,MAAM,OAAO,GAAG,IAAA,4CAA8B,EAAC,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;IACvC,CAAC;CACJ;AAtBD,4DAsBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,245 @@
|
|
|
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 sinon_1 = require("sinon");
|
|
6
|
+
const testHelpers_spec_1 = require("../../testHelpers.spec");
|
|
7
|
+
const vscode_languageserver_types_1 = require("vscode-languageserver-types");
|
|
8
|
+
const vscode_languageserver_types_2 = require("vscode-languageserver-types");
|
|
9
|
+
const util_1 = require("../../util");
|
|
10
|
+
let sinon = (0, sinon_1.createSandbox)();
|
|
11
|
+
describe('WorkspaceSymbolProcessor', () => {
|
|
12
|
+
let program;
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
program = new Program_1.Program({ rootDir: testHelpers_spec_1.rootDir, sourceMap: true });
|
|
15
|
+
});
|
|
16
|
+
afterEach(() => {
|
|
17
|
+
sinon.restore();
|
|
18
|
+
program.dispose();
|
|
19
|
+
});
|
|
20
|
+
function doTest(sources, expected) {
|
|
21
|
+
var _a;
|
|
22
|
+
for (let i = 0; i < sources.length; i++) {
|
|
23
|
+
program.setFile(`source/lib${i}.brs`, sources[i]);
|
|
24
|
+
}
|
|
25
|
+
const actual = program.getWorkspaceSymbols().sort((a, b) => symbolToString(a).localeCompare(symbolToString(b)));
|
|
26
|
+
for (let i = 0; i < actual.length; i++) {
|
|
27
|
+
let a = actual[i];
|
|
28
|
+
let b = expected === null || expected === void 0 ? void 0 : expected[i];
|
|
29
|
+
//if the expected doesn't have a range, delete the range from the actual
|
|
30
|
+
if ((b === null || b === void 0 ? void 0 : b[3]) === undefined) {
|
|
31
|
+
delete a.location.range;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
(0, chai_config_spec_1.expect)(actual.map(x => symbolToString(x))).to.eql((_a = expected === null || expected === void 0 ? void 0 : expected.map(x => {
|
|
35
|
+
var _a;
|
|
36
|
+
return symbolToString(vscode_languageserver_types_1.WorkspaceSymbol.create(x[0], x[1], util_1.default.pathToUri((0, util_1.standardizePath) `${testHelpers_spec_1.rootDir}/${(_a = x[2]) !== null && _a !== void 0 ? _a : 'source/lib0.brs'}`), typeof x[3] === 'number' ? util_1.default.createRange(x[3], x[4], x[5], x[6]) : null));
|
|
37
|
+
})) !== null && _a !== void 0 ? _a : undefined);
|
|
38
|
+
}
|
|
39
|
+
const SymbolKindMap = new Map(Object.entries(vscode_languageserver_types_2.SymbolKind).map(x => [x[1], x[0]]));
|
|
40
|
+
function symbolToString(symbol) {
|
|
41
|
+
let result = `${symbol.name}|${SymbolKindMap.get(symbol.kind)}|${symbol.location.uri}`;
|
|
42
|
+
const range = symbol.location.range;
|
|
43
|
+
if (range) {
|
|
44
|
+
result += '|' + util_1.default.rangeToString(range);
|
|
45
|
+
}
|
|
46
|
+
return result;
|
|
47
|
+
}
|
|
48
|
+
it('skips other file types for now', () => {
|
|
49
|
+
program.setFile('components/MainScene.xml', `
|
|
50
|
+
<component name="MainScene" extends="Scene">
|
|
51
|
+
</component>
|
|
52
|
+
`);
|
|
53
|
+
(0, chai_config_spec_1.expect)(program.getWorkspaceSymbols()).to.eql([]);
|
|
54
|
+
});
|
|
55
|
+
it('does not crash when name is missing', () => {
|
|
56
|
+
program.plugins['suppressErrors'] = false;
|
|
57
|
+
function testMissingToken(source, nameTokenPath, expected) {
|
|
58
|
+
const file = program.setFile('source/lib0.brs', source);
|
|
59
|
+
let node = file.ast.statements[0];
|
|
60
|
+
//delete the token at the given path
|
|
61
|
+
for (let i = 0; i < nameTokenPath.length - 1; i++) {
|
|
62
|
+
node = node[nameTokenPath[i]];
|
|
63
|
+
}
|
|
64
|
+
delete node[nameTokenPath[nameTokenPath.length - 1]];
|
|
65
|
+
doTest([], expected !== null && expected !== void 0 ? expected : []);
|
|
66
|
+
}
|
|
67
|
+
//function name is missing
|
|
68
|
+
testMissingToken(`
|
|
69
|
+
sub alpha()
|
|
70
|
+
end sub
|
|
71
|
+
`, ['name']);
|
|
72
|
+
//class name is missing
|
|
73
|
+
testMissingToken(`
|
|
74
|
+
class alpha
|
|
75
|
+
end class
|
|
76
|
+
`, ['name']);
|
|
77
|
+
//class field name is missing
|
|
78
|
+
testMissingToken(`
|
|
79
|
+
class alpha
|
|
80
|
+
name as string
|
|
81
|
+
end class
|
|
82
|
+
`, ['body', '0', 'name'], [
|
|
83
|
+
['alpha', vscode_languageserver_types_2.SymbolKind.Class]
|
|
84
|
+
]);
|
|
85
|
+
//class method name is missing
|
|
86
|
+
testMissingToken(`
|
|
87
|
+
class alpha
|
|
88
|
+
sub test()
|
|
89
|
+
end sub
|
|
90
|
+
end class
|
|
91
|
+
`, ['body', '0', 'name'], [
|
|
92
|
+
['alpha', vscode_languageserver_types_2.SymbolKind.Class]
|
|
93
|
+
]);
|
|
94
|
+
//interface name is missing
|
|
95
|
+
testMissingToken(`
|
|
96
|
+
interface alpha
|
|
97
|
+
end interface
|
|
98
|
+
`, ['tokens', 'name']);
|
|
99
|
+
//interface method name is missing
|
|
100
|
+
testMissingToken(`
|
|
101
|
+
interface alpha
|
|
102
|
+
sub test() as void
|
|
103
|
+
end interface
|
|
104
|
+
`, ['body', '0', 'tokens', 'name'], [
|
|
105
|
+
['alpha', vscode_languageserver_types_2.SymbolKind.Interface]
|
|
106
|
+
]);
|
|
107
|
+
//interface field name is missing
|
|
108
|
+
testMissingToken(`
|
|
109
|
+
interface alpha
|
|
110
|
+
name as string
|
|
111
|
+
end interface
|
|
112
|
+
`, ['body', '0', 'tokens', 'name'], [
|
|
113
|
+
['alpha', vscode_languageserver_types_2.SymbolKind.Interface]
|
|
114
|
+
]);
|
|
115
|
+
//const name is missing
|
|
116
|
+
testMissingToken(`
|
|
117
|
+
const alpha = 1
|
|
118
|
+
`, ['tokens', 'name']);
|
|
119
|
+
//namespace name is missing
|
|
120
|
+
testMissingToken(`
|
|
121
|
+
namespace alpha
|
|
122
|
+
end namespace
|
|
123
|
+
`, ['nameExpression']);
|
|
124
|
+
//enum name is missing
|
|
125
|
+
testMissingToken(`
|
|
126
|
+
enum alpha
|
|
127
|
+
end enum
|
|
128
|
+
`, ['tokens', 'name']);
|
|
129
|
+
//enum member name is missing
|
|
130
|
+
testMissingToken(`
|
|
131
|
+
enum alpha
|
|
132
|
+
name = 1
|
|
133
|
+
end enum
|
|
134
|
+
`, ['body', '0', 'tokens', 'name'], [
|
|
135
|
+
['alpha', vscode_languageserver_types_2.SymbolKind.Enum]
|
|
136
|
+
]);
|
|
137
|
+
});
|
|
138
|
+
it('finds functions', () => {
|
|
139
|
+
doTest([`
|
|
140
|
+
function alpha()
|
|
141
|
+
end function
|
|
142
|
+
function beta()
|
|
143
|
+
end function
|
|
144
|
+
`], [
|
|
145
|
+
['alpha', vscode_languageserver_types_2.SymbolKind.Function, 'source/lib0.brs', 1, 21, 1, 26],
|
|
146
|
+
['beta', vscode_languageserver_types_2.SymbolKind.Function, 'source/lib0.brs', 3, 21, 3, 25]
|
|
147
|
+
]);
|
|
148
|
+
});
|
|
149
|
+
it('finds namespaces', () => {
|
|
150
|
+
doTest([`
|
|
151
|
+
namespace alpha
|
|
152
|
+
end namespace
|
|
153
|
+
namespace beta
|
|
154
|
+
end namespace
|
|
155
|
+
namespace charlie
|
|
156
|
+
namespace delta
|
|
157
|
+
end namespace
|
|
158
|
+
end namespace
|
|
159
|
+
`], [
|
|
160
|
+
['alpha', vscode_languageserver_types_2.SymbolKind.Namespace],
|
|
161
|
+
['beta', vscode_languageserver_types_2.SymbolKind.Namespace],
|
|
162
|
+
['charlie', vscode_languageserver_types_2.SymbolKind.Namespace],
|
|
163
|
+
['delta', vscode_languageserver_types_2.SymbolKind.Namespace]
|
|
164
|
+
]);
|
|
165
|
+
});
|
|
166
|
+
it('finds classes', () => {
|
|
167
|
+
doTest([`
|
|
168
|
+
class alpha
|
|
169
|
+
end class
|
|
170
|
+
|
|
171
|
+
namespace beta
|
|
172
|
+
class charlie
|
|
173
|
+
name as string
|
|
174
|
+
sub speak()
|
|
175
|
+
print "I am " + m.name
|
|
176
|
+
end sub
|
|
177
|
+
end class
|
|
178
|
+
end namespace
|
|
179
|
+
`], [
|
|
180
|
+
['alpha', vscode_languageserver_types_2.SymbolKind.Class],
|
|
181
|
+
['beta', vscode_languageserver_types_2.SymbolKind.Namespace],
|
|
182
|
+
['charlie', vscode_languageserver_types_2.SymbolKind.Class],
|
|
183
|
+
['name', vscode_languageserver_types_2.SymbolKind.Field],
|
|
184
|
+
['speak', vscode_languageserver_types_2.SymbolKind.Method]
|
|
185
|
+
]);
|
|
186
|
+
});
|
|
187
|
+
it('finds interfaces', () => {
|
|
188
|
+
doTest([`
|
|
189
|
+
interface alpha
|
|
190
|
+
beta as string
|
|
191
|
+
end interface
|
|
192
|
+
|
|
193
|
+
namespace charlie
|
|
194
|
+
interface delta
|
|
195
|
+
echo as string
|
|
196
|
+
sub foxtrot() as void
|
|
197
|
+
end interface
|
|
198
|
+
end namespace
|
|
199
|
+
`], [
|
|
200
|
+
['alpha', vscode_languageserver_types_2.SymbolKind.Interface],
|
|
201
|
+
['beta', vscode_languageserver_types_2.SymbolKind.Field],
|
|
202
|
+
['charlie', vscode_languageserver_types_2.SymbolKind.Namespace],
|
|
203
|
+
['delta', vscode_languageserver_types_2.SymbolKind.Interface],
|
|
204
|
+
['echo', vscode_languageserver_types_2.SymbolKind.Field],
|
|
205
|
+
['foxtrot', vscode_languageserver_types_2.SymbolKind.Method]
|
|
206
|
+
]);
|
|
207
|
+
});
|
|
208
|
+
it('finds consts', () => {
|
|
209
|
+
doTest([`
|
|
210
|
+
const alpha = 1
|
|
211
|
+
namespace beta
|
|
212
|
+
const charlie = 2
|
|
213
|
+
end namespace
|
|
214
|
+
const delta = 3
|
|
215
|
+
`], [
|
|
216
|
+
['alpha', vscode_languageserver_types_2.SymbolKind.Constant],
|
|
217
|
+
['beta', vscode_languageserver_types_2.SymbolKind.Namespace],
|
|
218
|
+
['charlie', vscode_languageserver_types_2.SymbolKind.Constant],
|
|
219
|
+
['delta', vscode_languageserver_types_2.SymbolKind.Constant]
|
|
220
|
+
]);
|
|
221
|
+
});
|
|
222
|
+
it('finds enums', () => {
|
|
223
|
+
doTest([`
|
|
224
|
+
enum alpha
|
|
225
|
+
b = 1
|
|
226
|
+
c = 2
|
|
227
|
+
end enum
|
|
228
|
+
namespace delta
|
|
229
|
+
enum echo
|
|
230
|
+
f = 3
|
|
231
|
+
g = 4
|
|
232
|
+
end enum
|
|
233
|
+
end namespace
|
|
234
|
+
`], [
|
|
235
|
+
['alpha', vscode_languageserver_types_2.SymbolKind.Enum],
|
|
236
|
+
['b', vscode_languageserver_types_2.SymbolKind.EnumMember],
|
|
237
|
+
['c', vscode_languageserver_types_2.SymbolKind.EnumMember],
|
|
238
|
+
['delta', vscode_languageserver_types_2.SymbolKind.Namespace],
|
|
239
|
+
['echo', vscode_languageserver_types_2.SymbolKind.Enum],
|
|
240
|
+
['f', vscode_languageserver_types_2.SymbolKind.EnumMember],
|
|
241
|
+
['g', vscode_languageserver_types_2.SymbolKind.EnumMember]
|
|
242
|
+
]);
|
|
243
|
+
});
|
|
244
|
+
});
|
|
245
|
+
//# sourceMappingURL=WorkspaceSymbolProcessor.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkspaceSymbolProcessor.spec.js","sourceRoot":"","sources":["../../../src/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.ts"],"names":[],"mappings":";;AAAA,6DAAgD;AAChD,2CAAwC;AACxC,iCAAsC;AACtC,6DAAiD;AACjD,6EAA8D;AAC9D,6EAAyD;AAEzD,qCAAwD;AACxD,IAAI,KAAK,GAAG,IAAA,qBAAa,GAAE,CAAC;AAE5B,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACtC,IAAI,OAAgB,CAAC;IAErB,UAAU,CAAC,GAAG,EAAE;QACZ,OAAO,GAAG,IAAI,iBAAO,CAAC,EAAE,OAAO,EAAE,0BAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,OAAO,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAIH,SAAS,MAAM,CAAC,OAAiB,EAAE,QAA8B;;QAC7D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;SACrD;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAQ,CAAC;YACzB,IAAI,CAAC,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,CAAC,CAAC,CAAC;YACtB,wEAAwE;YACxE,IAAI,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAG,CAAC,CAAC,MAAK,SAAS,EAAE;gBACtB,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;aAC3B;SACJ;QAED,IAAA,yBAAM,EACF,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CACrC,CAAC,EAAE,CAAC,GAAG,CACJ,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,GAAG,CAAC,CAAC,CAAC,EAAE;;YAAC,OAAA,cAAc,CAC7B,6CAAe,CAAC,MAAM,CAClB,CAAC,CAAC,CAAC,CAAC,EACJ,CAAC,CAAC,CAAC,CAAC,EACJ,cAAI,CAAC,SAAS,CAAC,IAAA,sBAAC,EAAA,GAAG,0BAAO,IAAI,MAAA,CAAC,CAAC,CAAC,CAAC,mCAAI,iBAAiB,EAAE,CAAC,EAC1D,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAC7E,CACJ,CAAA;SAAA,CAAC,mCAAI,SAAS,CAClB,CAAC;IACN,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,wCAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjF,SAAS,cAAc,CAAC,MAAuB;QAC3C,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QACvF,MAAM,KAAK,GAAI,MAAc,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC7C,IAAI,KAAK,EAAE;YACP,MAAM,IAAI,GAAG,GAAG,cAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SAC7C;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACtC,OAAO,CAAC,OAAO,CAAC,0BAA0B,EAAE;;;SAG3C,CAAC,CAAC;QACH,IAAA,yBAAM,EACF,OAAO,CAAC,mBAAmB,EAAE,CAChC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC3C,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC;QAC1C,SAAS,gBAAgB,CAAC,MAAc,EAAE,aAAuB,EAAE,QAA0B;YACzF,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAU,iBAAiB,EAAE,MAAM,CAAC,CAAC;YACjE,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAClC,oCAAoC;YACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC/C,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;aACjC;YACD,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAErD,MAAM,CAAC,EAAE,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,CAAC,CAAC;QAC/B,CAAC;QAED,0BAA0B;QAC1B,gBAAgB,CAAC;;;SAGhB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAEb,uBAAuB;QACvB,gBAAgB,CAAC;;;SAGhB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAEb,6BAA6B;QAC7B,gBAAgB,CAAC;;;;SAIhB,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE;YACtB,CAAC,OAAO,EAAE,wCAAU,CAAC,KAAK,CAAC;SAC9B,CAAC,CAAC;QAEH,8BAA8B;QAC9B,gBAAgB,CAAC;;;;;SAKhB,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE;YACtB,CAAC,OAAO,EAAE,wCAAU,CAAC,KAAK,CAAC;SAC9B,CAAC,CAAC;QAEH,2BAA2B;QAC3B,gBAAgB,CAAC;;;SAGhB,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QAEvB,kCAAkC;QAClC,gBAAgB,CAAC;;;;SAIhB,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE;YAChC,CAAC,OAAO,EAAE,wCAAU,CAAC,SAAS,CAAC;SAClC,CAAC,CAAC;QAEH,iCAAiC;QACjC,gBAAgB,CAAC;;;;SAIhB,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE;YAChC,CAAC,OAAO,EAAE,wCAAU,CAAC,SAAS,CAAC;SAClC,CAAC,CAAC;QAEH,uBAAuB;QACvB,gBAAgB,CAAC;;SAEhB,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QAEvB,2BAA2B;QAC3B,gBAAgB,CAAC;;;SAGhB,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAEvB,sBAAsB;QACtB,gBAAgB,CAAC;;;SAGhB,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QAEvB,6BAA6B;QAC7B,gBAAgB,CAAC;;;;SAIhB,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE;YAChC,CAAC,OAAO,EAAE,wCAAU,CAAC,IAAI,CAAC;SAC7B,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;QACvB,MAAM,CAAC,CAAC;;;;;SAKP,CAAC,EAAE;YACA,CAAC,OAAO,EAAE,wCAAU,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/D,CAAC,MAAM,EAAE,wCAAU,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;SACjE,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QACxB,MAAM,CAAC,CAAC;;;;;;;;;SASP,CAAC,EAAE;YACA,CAAC,OAAO,EAAE,wCAAU,CAAC,SAAS,CAAC;YAC/B,CAAC,MAAM,EAAE,wCAAU,CAAC,SAAS,CAAC;YAC9B,CAAC,SAAS,EAAE,wCAAU,CAAC,SAAS,CAAC;YACjC,CAAC,OAAO,EAAE,wCAAU,CAAC,SAAS,CAAC;SAClC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;QACrB,MAAM,CAAC,CAAC;;;;;;;;;;;;SAYP,CAAC,EAAE;YACA,CAAC,OAAO,EAAE,wCAAU,CAAC,KAAK,CAAC;YAC3B,CAAC,MAAM,EAAE,wCAAU,CAAC,SAAS,CAAC;YAC9B,CAAC,SAAS,EAAE,wCAAU,CAAC,KAAK,CAAC;YAC7B,CAAC,MAAM,EAAE,wCAAU,CAAC,KAAK,CAAC;YAC1B,CAAC,OAAO,EAAE,wCAAU,CAAC,MAAM,CAAC;SAC/B,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QACxB,MAAM,CAAC,CAAC;;;;;;;;;;;SAWP,CAAC,EAAE;YACA,CAAC,OAAO,EAAE,wCAAU,CAAC,SAAS,CAAC;YAC/B,CAAC,MAAM,EAAE,wCAAU,CAAC,KAAK,CAAC;YAC1B,CAAC,SAAS,EAAE,wCAAU,CAAC,SAAS,CAAC;YACjC,CAAC,OAAO,EAAE,wCAAU,CAAC,SAAS,CAAC;YAC/B,CAAC,MAAM,EAAE,wCAAU,CAAC,KAAK,CAAC;YAC1B,CAAC,SAAS,EAAE,wCAAU,CAAC,MAAM,CAAC;SACjC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;QACpB,MAAM,CAAC,CAAC;;;;;;SAMP,CAAC,EAAE;YACA,CAAC,OAAO,EAAE,wCAAU,CAAC,QAAQ,CAAC;YAC9B,CAAC,MAAM,EAAE,wCAAU,CAAC,SAAS,CAAC;YAC9B,CAAC,SAAS,EAAE,wCAAU,CAAC,QAAQ,CAAC;YAChC,CAAC,OAAO,EAAE,wCAAU,CAAC,QAAQ,CAAC;SACjC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;QACnB,MAAM,CAAC,CAAC;;;;;;;;;;;SAWP,CAAC,EAAE;YACA,CAAC,OAAO,EAAE,wCAAU,CAAC,IAAI,CAAC;YAC1B,CAAC,GAAG,EAAE,wCAAU,CAAC,UAAU,CAAC;YAC5B,CAAC,GAAG,EAAE,wCAAU,CAAC,UAAU,CAAC;YAC5B,CAAC,OAAO,EAAE,wCAAU,CAAC,SAAS,CAAC;YAC/B,CAAC,MAAM,EAAE,wCAAU,CAAC,IAAI,CAAC;YACzB,CAAC,GAAG,EAAE,wCAAU,CAAC,UAAU,CAAC;YAC5B,CAAC,GAAG,EAAE,wCAAU,CAAC,UAAU,CAAC;SAC/B,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { WorkspaceSymbol } from 'vscode-languageserver-protocol';
|
|
2
|
+
import { DocumentSymbol } from 'vscode-languageserver-protocol';
|
|
3
|
+
import type { BrsFile } from '../../files/BrsFile';
|
|
4
|
+
export declare function getDocumentSymbolsFromBrsFile(file: BrsFile): DocumentSymbol[];
|
|
5
|
+
export declare function getWorkspaceSymbolsFromBrsFile(file: BrsFile): WorkspaceSymbol[];
|