brighterscript 0.65.26 → 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.
Files changed (41) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/LanguageServer.js +11 -11
  3. package/dist/LanguageServer.js.map +1 -1
  4. package/dist/Program.d.ts +7 -2
  5. package/dist/Program.js +29 -8
  6. package/dist/Program.js.map +1 -1
  7. package/dist/bscPlugin/BscPlugin.d.ts +3 -1
  8. package/dist/bscPlugin/BscPlugin.js +8 -0
  9. package/dist/bscPlugin/BscPlugin.js.map +1 -1
  10. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.d.ts +7 -0
  11. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.js +22 -0
  12. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.js.map +1 -0
  13. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.d.ts +1 -0
  14. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.js +290 -0
  15. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.js.map +1 -0
  16. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.d.ts +7 -0
  17. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.js +26 -0
  18. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.js.map +1 -0
  19. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.d.ts +1 -0
  20. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.js +245 -0
  21. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.js.map +1 -0
  22. package/dist/bscPlugin/symbols/symbolUtils.d.ts +5 -0
  23. package/dist/bscPlugin/symbols/symbolUtils.js +140 -0
  24. package/dist/bscPlugin/symbols/symbolUtils.js.map +1 -0
  25. package/dist/bscPlugin/validation/BrsFileValidator.d.ts +1 -0
  26. package/dist/bscPlugin/validation/BrsFileValidator.js +10 -0
  27. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
  28. package/dist/files/BrsFile.d.ts +3 -13
  29. package/dist/files/BrsFile.js +12 -99
  30. package/dist/files/BrsFile.js.map +1 -1
  31. package/dist/files/BrsFile.spec.js +24 -0
  32. package/dist/files/BrsFile.spec.js.map +1 -1
  33. package/dist/interfaces.d.ts +52 -1
  34. package/dist/lexer/Token.d.ts +1 -1
  35. package/dist/lexer/Token.js.map +1 -1
  36. package/dist/parser/Expression.d.ts +6 -0
  37. package/dist/parser/Expression.js +7 -1
  38. package/dist/parser/Expression.js.map +1 -1
  39. package/dist/parser/Parser.js +0 -3
  40. package/dist/parser/Parser.js.map +1 -1
  41. 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":";;AAAA,6DAAgD;AAChD,2CAAwC;AACxC,iCAAsC;AACtC,6DAAiD;AAEjD,6EAAyD;AAEzD,IAAI,KAAK,GAAG,IAAA,qBAAa,GAAE,CAAC;AAE5B,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACrC,IAAI,OAAgB,CAAC;IACrB,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;IACH,SAAS,CAAC,GAAG,EAAE;QACX,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,OAAO,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,SAAS,MAAM,CAAC,MAAc,EAAE,QAAoB;QAChD,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;QAC3C,aAAa,CACT,OAAO,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,EAC7C,QAAQ,CACX,CAAC;IACN,CAAC;IAED,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACtC,OAAO,CAAC,OAAO,CAAC,0BAA0B,EAAE;;;SAG3C,CAAC,CAAC;QACH,aAAa,CACT,OAAO,CAAC,kBAAkB,CAAC,0BAA0B,CAAC,EACtD,EAAE,CACL,CAAC;IACN,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,WAAuB,EAAE;YACxF,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,aAAa,CACT,OAAO,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,EAC7C,QAAQ,CACX,CAAC;QACN,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,KAAK,EAAE,wCAAU,CAAC,KAAK;SAC1B,CAAC,CAAC;QAEH,8BAA8B;QAC9B,gBAAgB,CAAC;;;;;SAKhB,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE;YACtB,KAAK,EAAE,wCAAU,CAAC,KAAK;SAC1B,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,KAAK,EAAE,wCAAU,CAAC,SAAS;SAC9B,CAAC,CAAC;QAEH,iCAAiC;QACjC,gBAAgB,CAAC;;;;SAIhB,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE;YAChC,KAAK,EAAE,wCAAU,CAAC,SAAS;SAC9B,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,KAAK,EAAE,wCAAU,CAAC,IAAI;SACzB,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;QACvB,MAAM,CAAC;;;;;SAKN,EAAE;YACC,OAAO,EAAE,wCAAU,CAAC,QAAQ;YAC5B,MAAM,EAAE,wCAAU,CAAC,QAAQ;SAC9B,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QACxB,MAAM,CAAC;;;;;;;;;SASN,EAAE;YACC,KAAK,EAAE,wCAAU,CAAC,SAAS;YAC3B,IAAI,EAAE,wCAAU,CAAC,SAAS;YAC1B,OAAO,EAAE;gBACL,IAAI,EAAE,wCAAU,CAAC,SAAS;gBAC1B,QAAQ,EAAE;oBACN,KAAK,EAAE,wCAAU,CAAC,SAAS;iBAC9B;aACJ;SACJ,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;QACrB,MAAM,CAAC;;;;;;;;;;;;SAYN,EAAE;YACC,KAAK,EAAE,wCAAU,CAAC,KAAK;YACvB,IAAI,EAAE;gBACF,IAAI,EAAE,wCAAU,CAAC,SAAS;gBAC1B,QAAQ,EAAE;oBACN,OAAO,EAAE;wBACL,IAAI,EAAE,wCAAU,CAAC,KAAK;wBACtB,QAAQ,EAAE;4BACN,IAAI,EAAE,wCAAU,CAAC,KAAK;4BACtB,KAAK,EAAE,wCAAU,CAAC,MAAM;yBAC3B;qBACJ;iBACJ;aACJ;SACJ,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QACxB,MAAM,CAAC;;;;;;;;;;;SAWN,EAAE;YACC,KAAK,EAAE;gBACH,IAAI,EAAE,wCAAU,CAAC,SAAS;gBAC1B,QAAQ,EAAE;oBACN,IAAI,EAAE,wCAAU,CAAC,KAAK;iBACzB;aACJ;YACD,IAAI,EAAE;gBACF,IAAI,EAAE,wCAAU,CAAC,SAAS;gBAC1B,QAAQ,EAAE;oBACN,OAAO,EAAE;wBACL,IAAI,EAAE,wCAAU,CAAC,SAAS;wBAC1B,QAAQ,EAAE;4BACN,GAAG,EAAE,wCAAU,CAAC,KAAK;4BACrB,KAAK,EAAE,wCAAU,CAAC,MAAM;yBAC3B;qBACJ;iBACJ;aACJ;SACJ,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;QACpB,MAAM,CAAC;;;;;;SAMN,EAAE;YACC,KAAK,EAAE,wCAAU,CAAC,QAAQ;YAC1B,IAAI,EAAE;gBACF,IAAI,EAAE,wCAAU,CAAC,SAAS;gBAC1B,QAAQ,EAAE;oBACN,OAAO,EAAE,wCAAU,CAAC,QAAQ;iBAC/B;aACJ;YACD,KAAK,EAAE,wCAAU,CAAC,QAAQ;SAC7B,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;QACnB,MAAM,CAAC;;;;;;;;;;;SAWN,EAAE;YACC,KAAK,EAAE;gBACH,IAAI,EAAE,wCAAU,CAAC,IAAI;gBACrB,QAAQ,EAAE;oBACN,CAAC,EAAE,wCAAU,CAAC,UAAU;oBACxB,CAAC,EAAE,wCAAU,CAAC,UAAU;iBAC3B;aACJ;YACD,IAAI,EAAE;gBACF,IAAI,EAAE,wCAAU,CAAC,SAAS;gBAC1B,QAAQ,EAAE;oBACN,OAAO,EAAE;wBACL,IAAI,EAAE,wCAAU,CAAC,IAAI;wBACrB,QAAQ,EAAE;4BACN,CAAC,EAAE,wCAAU,CAAC,UAAU;4BACxB,CAAC,EAAE,wCAAU,CAAC,UAAU;yBAC3B;qBACJ;iBACJ;aACJ;SACJ,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,SAAS,aAAa,CAAC,eAAiC,EAAE,QAAoB;QAC1E,IAAA,yBAAM,EACF,kBAAkB,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CACxD,CAAC,EAAE,CAAC,GAAG,CACJ,kBAAkB,CAAC,QAAQ,CAAC,CAC/B,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,kBAAkB,CAAC,IAAgB;QACxC,wEAAwE;QACxE,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YAClB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAC3B,IAAI,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,KAAY,CAAQ,CAAC;aACvD;iBAAM;gBACH,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,KAAY,CAAC,CAAC;aAC/C;SACJ;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,SAAS,gBAAgB,CAAC,eAAiC;;QACvD,IAAI,IAAI,GAAG,EAAgB,CAAC;QAC5B,KAAK,IAAI,MAAM,IAAI,eAAe,EAAE;YAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;YAChC,IAAI,CAAA,MAAA,MAAM,CAAC,QAAQ,0CAAE,MAAM,IAAG,CAAC,EAAE;gBAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG;oBAChB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC;iBAC9C,CAAC;aACL;SACJ;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -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,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":"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"}
@@ -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[];