brighterscript 1.0.0-alpha.23 → 1.0.0-alpha.24

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 (126) hide show
  1. package/CHANGELOG.md +108 -1
  2. package/dist/DiagnosticMessages.d.ts +19 -3
  3. package/dist/DiagnosticMessages.js +23 -7
  4. package/dist/DiagnosticMessages.js.map +1 -1
  5. package/dist/LanguageServer.js +74 -20
  6. package/dist/LanguageServer.js.map +1 -1
  7. package/dist/Program.d.ts +7 -5
  8. package/dist/Program.js +84 -49
  9. package/dist/Program.js.map +1 -1
  10. package/dist/ProgramBuilder.js +2 -1
  11. package/dist/ProgramBuilder.js.map +1 -1
  12. package/dist/Scope.d.ts +22 -15
  13. package/dist/Scope.js +108 -122
  14. package/dist/Scope.js.map +1 -1
  15. package/dist/SymbolTable.d.ts +17 -6
  16. package/dist/SymbolTable.js +38 -9
  17. package/dist/SymbolTable.js.map +1 -1
  18. package/dist/XmlScope.js +3 -2
  19. package/dist/XmlScope.js.map +1 -1
  20. package/dist/astUtils/reflection.d.ts +5 -1
  21. package/dist/astUtils/reflection.js +15 -2
  22. package/dist/astUtils/reflection.js.map +1 -1
  23. package/dist/astUtils/visitors.d.ts +2 -1
  24. package/dist/astUtils/visitors.js.map +1 -1
  25. package/dist/bscPlugin/BscPlugin.d.ts +3 -1
  26. package/dist/bscPlugin/BscPlugin.js +8 -0
  27. package/dist/bscPlugin/BscPlugin.js.map +1 -1
  28. package/dist/bscPlugin/codeActions/CodeActionsProcessor.d.ts +1 -1
  29. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +11 -5
  30. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
  31. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +75 -1
  32. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
  33. package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +6 -0
  34. package/dist/bscPlugin/completions/CompletionsProcessor.js +53 -0
  35. package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -0
  36. package/dist/bscPlugin/hover/HoverProcessor.d.ts +17 -0
  37. package/dist/bscPlugin/hover/HoverProcessor.js +190 -0
  38. package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -0
  39. package/dist/bscPlugin/hover/HoverProcessor.spec.d.ts +1 -0
  40. package/dist/bscPlugin/hover/HoverProcessor.spec.js +195 -0
  41. package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -0
  42. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +1 -0
  43. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +19 -8
  44. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
  45. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +84 -0
  46. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -1
  47. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.d.ts +7 -1
  48. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js +81 -22
  49. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +1 -1
  50. package/dist/bscPlugin/validation/BrsFileValidator.d.ts +14 -1
  51. package/dist/bscPlugin/validation/BrsFileValidator.js +104 -27
  52. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
  53. package/dist/bscPlugin/validation/BrsFileValidator.spec.d.ts +1 -0
  54. package/dist/bscPlugin/validation/BrsFileValidator.spec.js +48 -0
  55. package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +1 -0
  56. package/dist/bscPlugin/validation/ScopeValidator.d.ts +24 -3
  57. package/dist/bscPlugin/validation/ScopeValidator.js +249 -48
  58. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
  59. package/dist/cli.js +18 -10
  60. package/dist/cli.js.map +1 -1
  61. package/dist/files/BrsFile.Class.spec.js +51 -38
  62. package/dist/files/BrsFile.Class.spec.js.map +1 -1
  63. package/dist/files/BrsFile.d.ts +21 -10
  64. package/dist/files/BrsFile.js +158 -179
  65. package/dist/files/BrsFile.js.map +1 -1
  66. package/dist/files/BrsFile.spec.js +222 -126
  67. package/dist/files/BrsFile.spec.js.map +1 -1
  68. package/dist/files/XmlFile.d.ts +2 -2
  69. package/dist/files/XmlFile.js +1 -0
  70. package/dist/files/XmlFile.js.map +1 -1
  71. package/dist/files/tests/imports.spec.js +1 -1
  72. package/dist/files/tests/imports.spec.js.map +1 -1
  73. package/dist/files/tests/optionalChaning.spec.js +20 -16
  74. package/dist/files/tests/optionalChaning.spec.js.map +1 -1
  75. package/dist/globalCallables.js +3 -0
  76. package/dist/globalCallables.js.map +1 -1
  77. package/dist/index.d.ts +1 -1
  78. package/dist/index.js +3 -1
  79. package/dist/index.js.map +1 -1
  80. package/dist/interfaces.d.ts +65 -3
  81. package/dist/lexer/Lexer.spec.js +7 -0
  82. package/dist/lexer/Lexer.spec.js.map +1 -1
  83. package/dist/lexer/TokenKind.d.ts +1 -0
  84. package/dist/lexer/TokenKind.js +8 -3
  85. package/dist/lexer/TokenKind.js.map +1 -1
  86. package/dist/parser/Expression.d.ts +12 -3
  87. package/dist/parser/Expression.js +16 -4
  88. package/dist/parser/Expression.js.map +1 -1
  89. package/dist/parser/Parser.Class.spec.js +1 -1
  90. package/dist/parser/Parser.d.ts +10 -3
  91. package/dist/parser/Parser.js +107 -47
  92. package/dist/parser/Parser.js.map +1 -1
  93. package/dist/parser/Parser.spec.js +181 -108
  94. package/dist/parser/Parser.spec.js.map +1 -1
  95. package/dist/parser/Statement.d.ts +41 -7
  96. package/dist/parser/Statement.js +84 -11
  97. package/dist/parser/Statement.js.map +1 -1
  98. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +73 -31
  99. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
  100. package/dist/parser/tests/expression/TemplateStringExpression.spec.js +148 -47
  101. package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
  102. package/dist/parser/tests/expression/TernaryExpression.spec.js +219 -37
  103. package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
  104. package/dist/parser/tests/statement/ConstStatement.spec.d.ts +1 -0
  105. package/dist/parser/tests/statement/ConstStatement.spec.js +213 -0
  106. package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -0
  107. package/dist/parser/tests/statement/Enum.spec.js +17 -2
  108. package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
  109. package/dist/parser/tests/statement/PrintStatement.spec.js +72 -57
  110. package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
  111. package/dist/preprocessor/Manifest.js +2 -2
  112. package/dist/preprocessor/Manifest.js.map +1 -1
  113. package/dist/preprocessor/Preprocessor.js +10 -6
  114. package/dist/preprocessor/Preprocessor.js.map +1 -1
  115. package/dist/roku-types/data.json +1002 -788
  116. package/dist/roku-types/index.d.ts +64 -239
  117. package/dist/types/DynamicType.d.ts +1 -0
  118. package/dist/types/DynamicType.js +1 -0
  119. package/dist/types/DynamicType.js.map +1 -1
  120. package/dist/util.d.ts +55 -14
  121. package/dist/util.js +131 -25
  122. package/dist/util.js.map +1 -1
  123. package/dist/validators/ClassValidator.d.ts +0 -1
  124. package/dist/validators/ClassValidator.js +15 -26
  125. package/dist/validators/ClassValidator.js.map +1 -1
  126. package/package.json +5 -2
@@ -13,8 +13,8 @@ class CodeActionsProcessor {
13
13
  }
14
14
  process() {
15
15
  for (const diagnostic of this.event.diagnostics) {
16
- if (diagnostic.code === DiagnosticMessages_1.DiagnosticCodeMap.callToUnknownFunction) {
17
- this.suggestFunctionImports(diagnostic);
16
+ if (diagnostic.code === DiagnosticMessages_1.DiagnosticCodeMap.cannotFindName) {
17
+ this.suggestCannotFindName(diagnostic);
18
18
  }
19
19
  else if (diagnostic.code === DiagnosticMessages_1.DiagnosticCodeMap.classCouldNotBeFound) {
20
20
  this.suggestClassImports(diagnostic);
@@ -53,13 +53,19 @@ class CodeActionsProcessor {
53
53
  }));
54
54
  }
55
55
  }
56
- suggestFunctionImports(diagnostic) {
56
+ suggestCannotFindName(diagnostic) {
57
+ var _a;
57
58
  //skip if not a BrighterScript file
58
59
  if (diagnostic.file.parseMode !== Parser_1.ParseMode.BrighterScript) {
59
60
  return;
60
61
  }
61
- const lowerFunctionName = diagnostic.data.functionName.toLowerCase();
62
- this.suggestImports(diagnostic, lowerFunctionName, this.event.file.program.findFilesForFunction(lowerFunctionName));
62
+ const lowerName = ((_a = diagnostic.data.fullName) !== null && _a !== void 0 ? _a : diagnostic.data.name).toLowerCase();
63
+ this.suggestImports(diagnostic, lowerName, [
64
+ ...this.event.file.program.findFilesForFunction(lowerName),
65
+ ...this.event.file.program.findFilesForClass(lowerName),
66
+ ...this.event.file.program.findFilesForNamespace(lowerName),
67
+ ...this.event.file.program.findFilesForEnum(lowerName)
68
+ ]);
63
69
  }
64
70
  suggestClassImports(diagnostic) {
65
71
  //skip if not a BrighterScript file
@@ -1 +1 @@
1
- {"version":3,"file":"CodeActionsProcessor.js","sourceRoot":"","sources":["../../../src/bscPlugin/codeActions/CodeActionsProcessor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CodeActionsProcessor.js","sourceRoot":"","sources":["../../../src/bscPlugin/codeActions/CodeActionsProcessor.ts"],"names":[],"mappings":"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"}
@@ -10,12 +10,20 @@ describe('CodeActionsProcessor', () => {
10
10
  let program;
11
11
  beforeEach(() => {
12
12
  program = new Program_1.Program({
13
- rootDir: rootDir
13
+ rootDir: rootDir,
14
+ autoImportComponentScript: true
14
15
  });
15
16
  });
16
17
  afterEach(() => {
17
18
  program.dispose();
18
19
  });
20
+ /**
21
+ * Helper function for testing code actions
22
+ */
23
+ function testGetCodeActions(file, range, expected) {
24
+ program.validate();
25
+ (0, chai_1.expect)(program.getCodeActions(typeof file === 'string' ? file : file.srcPath, range).map(x => x.title).sort()).to.eql(expected);
26
+ }
19
27
  describe('getCodeActions', () => {
20
28
  it('suggests `extends=Group`', () => {
21
29
  const file = program.setFile('components/comp1.xml', (0, testHelpers_spec_1.trim) `
@@ -189,6 +197,72 @@ describe('CodeActionsProcessor', () => {
189
197
  `import "pkg:/source/Animals.bs"`
190
198
  ]);
191
199
  });
200
+ it('suggests all files for a root namespace name', () => {
201
+ program.setFile('source/first.bs', `
202
+ namespace alpha
203
+ function firstAction()
204
+ end function
205
+ end namespace
206
+ `);
207
+ program.setFile('source/second.bs', `
208
+ namespace alpha.beta
209
+ function secondAction()
210
+ end function
211
+ end namespace
212
+ `);
213
+ program.setFile('components/MainScene.xml', (0, testHelpers_spec_1.trim) `<component name="MainScene"></component>`);
214
+ const file = program.setFile('components/MainScene.bs', `
215
+ sub init()
216
+ print alpha.secondAction()
217
+ end sub
218
+ `);
219
+ // print al|pha.secondAction()
220
+ testGetCodeActions(file, util_1.util.createRange(2, 28, 2, 28), [
221
+ `import "pkg:/source/first.bs"`,
222
+ `import "pkg:/source/second.bs"`
223
+ ]);
224
+ });
225
+ it('suggests files for second part of missing namespace', () => {
226
+ program.setFile('source/first.bs', `
227
+ namespace alpha
228
+ function firstAction()
229
+ end function
230
+ end namespace
231
+ `);
232
+ program.setFile('source/second.bs', `
233
+ namespace alpha.beta
234
+ function secondAction()
235
+ end function
236
+ end namespace
237
+ `);
238
+ program.setFile('components/MainScene.xml', (0, testHelpers_spec_1.trim) `<component name="MainScene"></component>`);
239
+ const file = program.setFile('components/MainScene.bs', `
240
+ import "pkg:/source/first.bs"
241
+ sub init()
242
+ print alpha.beta.secondAction()
243
+ end sub
244
+ `);
245
+ // print alpha.be|ta.secondAction()
246
+ testGetCodeActions(file, util_1.util.createRange(3, 34, 3, 34), [`import "pkg:/source/second.bs"`]);
247
+ });
248
+ });
249
+ it('suggests imports at very start and very end of diagnostic', () => {
250
+ program.setFile('source/first.bs', `
251
+ namespace alpha
252
+ function firstAction()
253
+ end function
254
+ end namespace
255
+ `);
256
+ program.setFile('components/MainScene.xml', (0, testHelpers_spec_1.trim) `<component name="MainScene"></component>`);
257
+ const file = program.setFile('components/MainScene.bs', `
258
+ sub init()
259
+ print alpha.firstAction()
260
+ end sub
261
+ `);
262
+ // print |alpha.firstAction()
263
+ testGetCodeActions(file, util_1.util.createRange(2, 22, 2, 22), [`import "pkg:/source/first.bs"`]);
264
+ // print alpha|.firstAction()
265
+ testGetCodeActions(file, util_1.util.createRange(2, 27, 2, 27), [`import "pkg:/source/first.bs"`]);
192
266
  });
193
267
  });
194
268
  //# sourceMappingURL=CodeActionsProcessor.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CodeActionsProcessor.spec.js","sourceRoot":"","sources":["../../../src/bscPlugin/codeActions/CodeActionsProcessor.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CodeActionsProcessor.spec.js","sourceRoot":"","sources":["../../../src/bscPlugin/codeActions/CodeActionsProcessor.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { ProvideCompletionsEvent } from '../../interfaces';
2
+ export declare class CompletionsProcessor {
3
+ private event;
4
+ constructor(event: ProvideCompletionsEvent);
5
+ process(): void;
6
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CompletionsProcessor = void 0;
4
+ const reflection_1 = require("../../astUtils/reflection");
5
+ const TokenKind_1 = require("../../lexer/TokenKind");
6
+ const util_1 = require("../../util");
7
+ class CompletionsProcessor {
8
+ constructor(event) {
9
+ this.event = event;
10
+ }
11
+ process() {
12
+ let completionsArray = [];
13
+ if ((0, reflection_1.isBrsFile)(this.event.file) && this.event.file.parser.isPositionNextToTokenKind(this.event.position, TokenKind_1.TokenKind.Callfunc)) {
14
+ const xmlScopes = this.event.program.getScopes().filter((s) => (0, reflection_1.isXmlScope)(s));
15
+ // is next to a @. callfunc invocation - must be an interface method.
16
+ //TODO refactor this to utilize the actual variable's component type (when available)
17
+ for (const scope of xmlScopes) {
18
+ let fileLinks = this.event.program.getStatementsForXmlFile(scope);
19
+ for (let fileLink of fileLinks) {
20
+ let pushItem = scope.createCompletionFromFunctionStatement(fileLink.item);
21
+ if (!completionsArray.includes(pushItem.label)) {
22
+ completionsArray.push(pushItem.label);
23
+ this.event.completions.push(pushItem);
24
+ }
25
+ }
26
+ }
27
+ //no other result is possible in this case
28
+ return;
29
+ }
30
+ //find the scopes for this file
31
+ let scopesForFile = this.event.program.getScopesForFile(this.event.file);
32
+ //if there are no scopes, include the global scope so we at least get the built-in functions
33
+ scopesForFile = scopesForFile.length > 0 ? scopesForFile : [this.event.program.globalScope];
34
+ //get the completions from all scopes for this file
35
+ let allCompletions = util_1.util.flatMap(scopesForFile.map(scope => {
36
+ scope.linkSymbolTable();
37
+ const completions = this.event.file.getCompletions(this.event.position, scope);
38
+ scope.unlinkSymbolTable();
39
+ return completions;
40
+ }), c => c);
41
+ //only keep completions common to every scope for this file
42
+ let keyCounts = new Map();
43
+ for (let completion of allCompletions) {
44
+ let key = `${completion.label}-${completion.kind}`;
45
+ keyCounts.set(key, keyCounts.has(key) ? keyCounts.get(key) + 1 : 1);
46
+ if (keyCounts.get(key) === scopesForFile.length) {
47
+ this.event.completions.push(completion);
48
+ }
49
+ }
50
+ }
51
+ }
52
+ exports.CompletionsProcessor = CompletionsProcessor;
53
+ //# sourceMappingURL=CompletionsProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CompletionsProcessor.js","sourceRoot":"","sources":["../../../src/bscPlugin/completions/CompletionsProcessor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { ProvideHoverEvent } from '../../interfaces';
2
+ export declare class HoverProcessor {
3
+ event: ProvideHoverEvent;
4
+ constructor(event: ProvideHoverEvent);
5
+ process(): void;
6
+ private buildContentsWithDocs;
7
+ private getBrsFileHover;
8
+ /**
9
+ * Combine all the documentation found before a token (i.e. comment tokens)
10
+ */
11
+ private getTokenDocumentation;
12
+ /**
13
+ * Build a hover documentation for a callable.
14
+ */
15
+ private getCallableDocumentation;
16
+ private getXmlFileHover;
17
+ }
@@ -0,0 +1,190 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HoverProcessor = void 0;
4
+ const source_map_1 = require("source-map");
5
+ const reflection_1 = require("../../astUtils/reflection");
6
+ const TokenKind_1 = require("../../lexer/TokenKind");
7
+ const BrsTranspileState_1 = require("../../parser/BrsTranspileState");
8
+ const Parser_1 = require("../../parser/Parser");
9
+ const util_1 = require("../../util");
10
+ class HoverProcessor {
11
+ constructor(event) {
12
+ this.event = event;
13
+ }
14
+ process() {
15
+ let hover;
16
+ if ((0, reflection_1.isBrsFile)(this.event.file)) {
17
+ hover = this.getBrsFileHover(this.event.file);
18
+ }
19
+ else if ((0, reflection_1.isXmlFile)(this.event.file)) {
20
+ hover = this.getXmlFileHover(this.event.file);
21
+ }
22
+ //if we got a result, "return" it
23
+ if (hover) {
24
+ //assign the hover to the event
25
+ this.event.hovers.push(hover);
26
+ }
27
+ }
28
+ buildContentsWithDocs(text, startingToken) {
29
+ const parts = [text];
30
+ const docs = this.getTokenDocumentation(this.event.file.parser.tokens, startingToken);
31
+ if (docs) {
32
+ parts.push('***', docs);
33
+ }
34
+ return parts.join('\n');
35
+ }
36
+ getBrsFileHover(file) {
37
+ var _a, _b, _c, _d;
38
+ const scope = this.event.scopes[0];
39
+ const fence = (code) => util_1.default.mdFence(code, 'brightscript');
40
+ //get the token at the position
41
+ let token = file.getTokenAt(this.event.position);
42
+ let hoverTokenTypes = [
43
+ TokenKind_1.TokenKind.Identifier,
44
+ TokenKind_1.TokenKind.Function,
45
+ TokenKind_1.TokenKind.EndFunction,
46
+ TokenKind_1.TokenKind.Sub,
47
+ TokenKind_1.TokenKind.EndSub
48
+ ];
49
+ //throw out invalid tokens and the wrong kind of tokens
50
+ if (!token || !hoverTokenTypes.includes(token.kind)) {
51
+ return null;
52
+ }
53
+ const expression = file.getClosestExpression(this.event.position);
54
+ if (expression) {
55
+ let containingNamespace = (_a = file.getNamespaceStatementForPosition(expression.range.start)) === null || _a === void 0 ? void 0 : _a.getName(Parser_1.ParseMode.BrighterScript);
56
+ const fullName = (_b = util_1.default.getAllDottedGetParts(expression)) === null || _b === void 0 ? void 0 : _b.map(x => x.text).join('.');
57
+ //find a constant with this name
58
+ const constant = scope.getConstFileLink(fullName, containingNamespace);
59
+ if (constant) {
60
+ const constantValue = new source_map_1.SourceNode(null, null, null, constant.item.value.transpile(new BrsTranspileState_1.BrsTranspileState(file))).toString();
61
+ return {
62
+ contents: this.buildContentsWithDocs(fence(`const ${constant.item.fullName} = ${constantValue}`), constant.item.tokens.const),
63
+ range: token.range
64
+ };
65
+ }
66
+ }
67
+ let lowerTokenText = token.text.toLowerCase();
68
+ //get the function scope for this position (if exists)
69
+ let func = file.getFunctionExpressionAtPosition(this.event.position);
70
+ if (func) {
71
+ for (const labelStatement of func.labelStatements) {
72
+ if (labelStatement.tokens.identifier.text.toLocaleLowerCase() === lowerTokenText) {
73
+ return {
74
+ range: token.range,
75
+ contents: fence(`${labelStatement.tokens.identifier.text}: label`)
76
+ };
77
+ }
78
+ }
79
+ }
80
+ const typeTexts = new Set();
81
+ const fileScopes = this.event.program.getScopesForFile(file).sort((a, b) => { var _a; return (_a = a.dependencyGraphKey) === null || _a === void 0 ? void 0 : _a.localeCompare(b.dependencyGraphKey); });
82
+ const callables = [];
83
+ for (const scope of fileScopes) {
84
+ scope.linkSymbolTable();
85
+ const typeContext = { file: file, scope: scope, position: this.event.position };
86
+ const typeTextPair = file.getSymbolTypeFromToken(token, func, scope);
87
+ if (typeTextPair) {
88
+ let scopeTypeText = '';
89
+ if ((0, reflection_1.isTypedFunctionType)(typeTextPair.type)) {
90
+ scopeTypeText = (_c = typeTextPair.type) === null || _c === void 0 ? void 0 : _c.toString(typeContext);
91
+ //keep unique references to the callables for this function
92
+ if (!typeTexts.has(scopeTypeText)) {
93
+ callables.push(scope.getCallableByName(lowerTokenText));
94
+ }
95
+ }
96
+ else if (typeTextPair.useExpandedTextOnly) {
97
+ scopeTypeText = typeTextPair.expandedTokenText;
98
+ }
99
+ else {
100
+ scopeTypeText = `${typeTextPair.expandedTokenText} as ${(_d = typeTextPair.type) === null || _d === void 0 ? void 0 : _d.toString(typeContext)}`;
101
+ }
102
+ if (scopeTypeText) {
103
+ typeTexts.add(scopeTypeText);
104
+ }
105
+ }
106
+ scope.unlinkSymbolTable();
107
+ }
108
+ if (callables.length === typeTexts.size) {
109
+ //this is a function in all scopes, so build the function hover
110
+ return {
111
+ range: token.range,
112
+ contents: this.getCallableDocumentation([...typeTexts], callables)
113
+ };
114
+ }
115
+ else if ((typeTexts === null || typeTexts === void 0 ? void 0 : typeTexts.size) > 0) {
116
+ const typeText = [...typeTexts].join(' | ');
117
+ return {
118
+ range: token.range,
119
+ contents: fence(typeText)
120
+ };
121
+ }
122
+ }
123
+ /**
124
+ * Combine all the documentation found before a token (i.e. comment tokens)
125
+ */
126
+ getTokenDocumentation(tokens, token) {
127
+ const comments = [];
128
+ const idx = tokens === null || tokens === void 0 ? void 0 : tokens.indexOf(token);
129
+ if (!idx || idx === -1) {
130
+ return undefined;
131
+ }
132
+ for (let i = idx - 1; i >= 0; i--) {
133
+ const token = tokens[i];
134
+ //skip whitespace and newline chars
135
+ if (token.kind === TokenKind_1.TokenKind.Comment) {
136
+ comments.push(token);
137
+ }
138
+ else if (token.kind === TokenKind_1.TokenKind.Newline || token.kind === TokenKind_1.TokenKind.Whitespace) {
139
+ //skip these tokens
140
+ continue;
141
+ //any other token means there are no more comments
142
+ }
143
+ else {
144
+ break;
145
+ }
146
+ }
147
+ if (comments.length > 0) {
148
+ return comments.reverse().map(x => x.text.replace(/^('|rem)/i, '')).join('\n');
149
+ }
150
+ }
151
+ /**
152
+ * Build a hover documentation for a callable.
153
+ */
154
+ getCallableDocumentation(typeTexts, callables) {
155
+ var _a;
156
+ const callable = callables[0];
157
+ const typeText = typeTexts[0];
158
+ const comments = [];
159
+ const tokens = callable === null || callable === void 0 ? void 0 : callable.file.parser.tokens;
160
+ const idx = tokens === null || tokens === void 0 ? void 0 : tokens.indexOf((_a = callable.functionStatement) === null || _a === void 0 ? void 0 : _a.func.functionType);
161
+ for (let i = idx - 1; i >= 0; i--) {
162
+ const token = tokens[i];
163
+ //skip whitespace and newline chars
164
+ if (token.kind === TokenKind_1.TokenKind.Comment) {
165
+ comments.push(token);
166
+ }
167
+ else if (token.kind === TokenKind_1.TokenKind.Newline || token.kind === TokenKind_1.TokenKind.Whitespace) {
168
+ //skip these tokens
169
+ continue;
170
+ //any other token means there are no more comments
171
+ }
172
+ else {
173
+ break;
174
+ }
175
+ }
176
+ //message indicating if there are variations. example: (+3 variations) if there are 4 unique function signatures
177
+ const multiText = callables.length > 1 ? ` (+${callables.length - 1} variations)` : '';
178
+ let result = util_1.default.mdFence(typeText + multiText, 'brightscript');
179
+ if (comments.length > 0) {
180
+ result += '\n***\n' + comments.reverse().map(x => x.text.replace(/^('|rem)/i, '')).join('\n');
181
+ }
182
+ return result;
183
+ }
184
+ getXmlFileHover(file) {
185
+ //TODO add xml hovers
186
+ return undefined;
187
+ }
188
+ }
189
+ exports.HoverProcessor = HoverProcessor;
190
+ //# sourceMappingURL=HoverProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HoverProcessor.js","sourceRoot":"","sources":["../../../src/bscPlugin/hover/HoverProcessor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};