brighterscript 0.66.0-alpha.5 → 0.66.0-alpha.7

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 (298) hide show
  1. package/CHANGELOG.md +64 -10
  2. package/README.md +16 -0
  3. package/bsconfig.schema.json +15 -0
  4. package/dist/ActionPipeline.d.ts +10 -0
  5. package/dist/ActionPipeline.js +40 -0
  6. package/dist/ActionPipeline.js.map +1 -0
  7. package/dist/BsConfig.d.ts +15 -1
  8. package/dist/CommentFlagProcessor.d.ts +4 -3
  9. package/dist/CommentFlagProcessor.js.map +1 -1
  10. package/dist/DiagnosticMessages.d.ts +19 -4
  11. package/dist/DiagnosticMessages.js +45 -5
  12. package/dist/DiagnosticMessages.js.map +1 -1
  13. package/dist/LanguageServer.js.map +1 -1
  14. package/dist/PluginInterface.d.ts +11 -2
  15. package/dist/PluginInterface.js +69 -10
  16. package/dist/PluginInterface.js.map +1 -1
  17. package/dist/Program.d.ts +101 -37
  18. package/dist/Program.js +492 -274
  19. package/dist/Program.js.map +1 -1
  20. package/dist/ProgramBuilder.d.ts +10 -4
  21. package/dist/ProgramBuilder.js +44 -54
  22. package/dist/ProgramBuilder.js.map +1 -1
  23. package/dist/Scope.d.ts +27 -13
  24. package/dist/Scope.js +44 -26
  25. package/dist/Scope.js.map +1 -1
  26. package/dist/SymbolTable.d.ts +5 -0
  27. package/dist/SymbolTable.js +15 -2
  28. package/dist/SymbolTable.js.map +1 -1
  29. package/dist/XmlScope.d.ts +7 -4
  30. package/dist/XmlScope.js +47 -8
  31. package/dist/XmlScope.js.map +1 -1
  32. package/dist/astUtils/{AstEditor.d.ts → Editor.d.ts} +6 -1
  33. package/dist/astUtils/{AstEditor.js → Editor.js} +9 -3
  34. package/dist/astUtils/Editor.js.map +1 -0
  35. package/dist/astUtils/{AstEditor.spec.js → Editor.spec.js} +10 -6
  36. package/dist/astUtils/Editor.spec.js.map +1 -0
  37. package/dist/astUtils/creators.d.ts +3 -1
  38. package/dist/astUtils/creators.js +9 -1
  39. package/dist/astUtils/creators.js.map +1 -1
  40. package/dist/astUtils/reflection.d.ts +30 -8
  41. package/dist/astUtils/reflection.js +64 -14
  42. package/dist/astUtils/reflection.js.map +1 -1
  43. package/dist/astUtils/reflection.spec.js +85 -4
  44. package/dist/astUtils/reflection.spec.js.map +1 -1
  45. package/dist/astUtils/visitors.d.ts +3 -3
  46. package/dist/astUtils/visitors.spec.js +7 -7
  47. package/dist/astUtils/visitors.spec.js.map +1 -1
  48. package/dist/bscPlugin/BscPlugin.d.ts +10 -2
  49. package/dist/bscPlugin/BscPlugin.js +24 -4
  50. package/dist/bscPlugin/BscPlugin.js.map +1 -1
  51. package/dist/bscPlugin/FileWriter.d.ts +6 -0
  52. package/dist/bscPlugin/FileWriter.js +24 -0
  53. package/dist/bscPlugin/FileWriter.js.map +1 -0
  54. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +8 -8
  55. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
  56. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +4 -4
  57. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
  58. package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +11 -1
  59. package/dist/bscPlugin/completions/CompletionsProcessor.js +112 -58
  60. package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
  61. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +151 -6
  62. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +1 -1
  63. package/dist/bscPlugin/fileProviders/FileProvider.d.ts +9 -0
  64. package/dist/bscPlugin/fileProviders/FileProvider.js +51 -0
  65. package/dist/bscPlugin/fileProviders/FileProvider.js.map +1 -0
  66. package/dist/bscPlugin/hover/HoverProcessor.d.ts +1 -7
  67. package/dist/bscPlugin/hover/HoverProcessor.js +2 -8
  68. package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
  69. package/dist/bscPlugin/hover/HoverProcessor.spec.js +55 -0
  70. package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
  71. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +1 -0
  72. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +43 -0
  73. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
  74. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +22 -0
  75. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -1
  76. package/dist/bscPlugin/serialize/BslibInjector.spec.js +19 -0
  77. package/dist/bscPlugin/serialize/BslibInjector.spec.js.map +1 -0
  78. package/dist/bscPlugin/serialize/BslibManager.d.ts +9 -0
  79. package/dist/bscPlugin/serialize/BslibManager.js +40 -0
  80. package/dist/bscPlugin/serialize/BslibManager.js.map +1 -0
  81. package/dist/bscPlugin/serialize/FileSerializer.d.ts +9 -0
  82. package/dist/bscPlugin/serialize/FileSerializer.js +72 -0
  83. package/dist/bscPlugin/serialize/FileSerializer.js.map +1 -0
  84. package/dist/bscPlugin/transpile/{BrsFilePreTranspileProcessor.d.ts → BrsFileTranspileProcessor.d.ts} +4 -2
  85. package/dist/bscPlugin/transpile/{BrsFilePreTranspileProcessor.js → BrsFileTranspileProcessor.js} +25 -4
  86. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +1 -0
  87. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.d.ts +1 -0
  88. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js +41 -0
  89. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js.map +1 -0
  90. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.d.ts +2 -2
  91. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js.map +1 -1
  92. package/dist/bscPlugin/validation/BrsFileValidator.js +2 -1
  93. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
  94. package/dist/bscPlugin/validation/ScopeValidator.d.ts +12 -0
  95. package/dist/bscPlugin/validation/ScopeValidator.js +137 -19
  96. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
  97. package/dist/bscPlugin/validation/ScopeValidator.spec.js +671 -1
  98. package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -1
  99. package/dist/bscPlugin/validation/XmlFileValidator.js +2 -2
  100. package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -1
  101. package/dist/cli.js +1 -0
  102. package/dist/cli.js.map +1 -1
  103. package/dist/deferred.d.ts +2 -2
  104. package/dist/deferred.js.map +1 -1
  105. package/dist/diagnosticUtils.d.ts +1 -0
  106. package/dist/diagnosticUtils.js +4 -3
  107. package/dist/diagnosticUtils.js.map +1 -1
  108. package/dist/examples/plugins/removePrint.js +1 -1
  109. package/dist/examples/plugins/removePrint.js.map +1 -1
  110. package/dist/files/AssetFile.d.ts +26 -0
  111. package/dist/files/AssetFile.js +26 -0
  112. package/dist/files/AssetFile.js.map +1 -0
  113. package/dist/files/BrsFile.Class.spec.js +40 -40
  114. package/dist/files/BrsFile.Class.spec.js.map +1 -1
  115. package/dist/files/BrsFile.d.ts +42 -15
  116. package/dist/files/BrsFile.js +120 -78
  117. package/dist/files/BrsFile.js.map +1 -1
  118. package/dist/files/BrsFile.spec.js +266 -167
  119. package/dist/files/BrsFile.spec.js.map +1 -1
  120. package/dist/files/Factory.d.ts +25 -0
  121. package/dist/files/Factory.js +22 -0
  122. package/dist/files/Factory.js.map +1 -0
  123. package/dist/files/File.d.ts +106 -0
  124. package/dist/files/File.js +16 -0
  125. package/dist/files/File.js.map +1 -0
  126. package/dist/files/LazyFileData.d.ts +20 -0
  127. package/dist/files/LazyFileData.js +54 -0
  128. package/dist/files/LazyFileData.js.map +1 -0
  129. package/dist/files/LazyFileData.spec.d.ts +1 -0
  130. package/dist/files/LazyFileData.spec.js +27 -0
  131. package/dist/files/LazyFileData.spec.js.map +1 -0
  132. package/dist/files/XmlFile.d.ts +55 -17
  133. package/dist/files/XmlFile.js +88 -47
  134. package/dist/files/XmlFile.js.map +1 -1
  135. package/dist/files/XmlFile.spec.js +64 -57
  136. package/dist/files/XmlFile.spec.js.map +1 -1
  137. package/dist/files/tests/imports.spec.js +21 -8
  138. package/dist/files/tests/imports.spec.js.map +1 -1
  139. package/dist/files/tests/optionalChaning.spec.js +14 -14
  140. package/dist/files/tests/optionalChaning.spec.js.map +1 -1
  141. package/dist/globalCallables.js +2 -6
  142. package/dist/globalCallables.js.map +1 -1
  143. package/dist/index.d.ts +4 -1
  144. package/dist/index.js +4 -1
  145. package/dist/index.js.map +1 -1
  146. package/dist/interfaces.d.ts +326 -85
  147. package/dist/interfaces.js +4 -1
  148. package/dist/interfaces.js.map +1 -1
  149. package/dist/lexer/Lexer.js +1 -1
  150. package/dist/lexer/TokenKind.js +0 -1
  151. package/dist/lexer/TokenKind.js.map +1 -1
  152. package/dist/parser/AstNode.d.ts +2 -2
  153. package/dist/parser/AstNode.js +1 -1
  154. package/dist/parser/AstNode.js.map +1 -1
  155. package/dist/parser/BrsTranspileState.d.ts +3 -2
  156. package/dist/parser/BrsTranspileState.js +3 -2
  157. package/dist/parser/BrsTranspileState.js.map +1 -1
  158. package/dist/parser/Expression.d.ts +1 -1
  159. package/dist/parser/Expression.js +35 -19
  160. package/dist/parser/Expression.js.map +1 -1
  161. package/dist/parser/Parser.js +12 -1
  162. package/dist/parser/Parser.js.map +1 -1
  163. package/dist/parser/Parser.spec.js +18 -2
  164. package/dist/parser/Parser.spec.js.map +1 -1
  165. package/dist/parser/SGParser.d.ts +2 -2
  166. package/dist/parser/SGParser.js +3 -3
  167. package/dist/parser/SGParser.js.map +1 -1
  168. package/dist/parser/SGParser.spec.js +2 -2
  169. package/dist/parser/SGParser.spec.js.map +1 -1
  170. package/dist/parser/SGTypes.d.ts +1 -1
  171. package/dist/parser/Statement.js +1 -1
  172. package/dist/parser/Statement.js.map +1 -1
  173. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +10 -10
  174. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
  175. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js +10 -10
  176. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js.map +1 -1
  177. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js +24 -24
  178. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js.map +1 -1
  179. package/dist/parser/tests/expression/TemplateStringExpression.spec.js +64 -36
  180. package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
  181. package/dist/parser/tests/expression/TernaryExpression.spec.js +34 -34
  182. package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
  183. package/dist/parser/tests/statement/ConstStatement.spec.js +17 -17
  184. package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -1
  185. package/dist/parser/tests/statement/Continue.spec.js +2 -2
  186. package/dist/parser/tests/statement/Continue.spec.js.map +1 -1
  187. package/dist/parser/tests/statement/Enum.spec.js +26 -26
  188. package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
  189. package/dist/parser/tests/statement/For.spec.js +6 -6
  190. package/dist/parser/tests/statement/For.spec.js.map +1 -1
  191. package/dist/parser/tests/statement/ForEach.spec.js +4 -4
  192. package/dist/parser/tests/statement/ForEach.spec.js.map +1 -1
  193. package/dist/parser/tests/statement/InterfaceStatement.spec.js +18 -10
  194. package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
  195. package/dist/parser/tests/statement/PrintStatement.spec.js +10 -10
  196. package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
  197. package/dist/preprocessor/Manifest.d.ts +1 -1
  198. package/dist/preprocessor/Manifest.js +2 -2
  199. package/dist/preprocessor/Manifest.js.map +1 -1
  200. package/dist/roku-types/data.json +111 -149
  201. package/dist/roku-types/index.d.ts +27 -13
  202. package/dist/types/ArrayType.d.ts +2 -1
  203. package/dist/types/ArrayType.js +6 -2
  204. package/dist/types/ArrayType.js.map +1 -1
  205. package/dist/types/ArrayType.spec.js +11 -1
  206. package/dist/types/ArrayType.spec.js.map +1 -1
  207. package/dist/types/AssociativeArrayType.d.ts +11 -0
  208. package/dist/types/AssociativeArrayType.js +52 -0
  209. package/dist/types/AssociativeArrayType.js.map +1 -0
  210. package/dist/types/BaseFunctionType.d.ts +2 -1
  211. package/dist/types/BaseFunctionType.js +1 -1
  212. package/dist/types/BaseFunctionType.js.map +1 -1
  213. package/dist/types/BooleanType.d.ts +2 -1
  214. package/dist/types/BooleanType.js +3 -2
  215. package/dist/types/BooleanType.js.map +1 -1
  216. package/dist/types/BscType.d.ts +3 -3
  217. package/dist/types/BscType.js +26 -12
  218. package/dist/types/BscType.js.map +1 -1
  219. package/dist/types/BscTypeKind.d.ts +2 -0
  220. package/dist/types/BscTypeKind.js +2 -0
  221. package/dist/types/BscTypeKind.js.map +1 -1
  222. package/dist/types/BuiltInInterfaceAdder.d.ts +8 -0
  223. package/dist/types/BuiltInInterfaceAdder.js +88 -23
  224. package/dist/types/BuiltInInterfaceAdder.js.map +1 -1
  225. package/dist/types/ClassType.d.ts +2 -1
  226. package/dist/types/ClassType.js +2 -2
  227. package/dist/types/ClassType.js.map +1 -1
  228. package/dist/types/ComponentType.d.ts +26 -0
  229. package/dist/types/ComponentType.js +83 -0
  230. package/dist/types/ComponentType.js.map +1 -0
  231. package/dist/types/DoubleType.d.ts +2 -1
  232. package/dist/types/DoubleType.js +4 -2
  233. package/dist/types/DoubleType.js.map +1 -1
  234. package/dist/types/DynamicType.d.ts +2 -2
  235. package/dist/types/DynamicType.js +1 -1
  236. package/dist/types/DynamicType.js.map +1 -1
  237. package/dist/types/EnumType.d.ts +3 -2
  238. package/dist/types/EnumType.js +3 -3
  239. package/dist/types/EnumType.js.map +1 -1
  240. package/dist/types/FloatType.d.ts +2 -1
  241. package/dist/types/FloatType.js +4 -2
  242. package/dist/types/FloatType.js.map +1 -1
  243. package/dist/types/FunctionType.d.ts +2 -1
  244. package/dist/types/FunctionType.js +2 -2
  245. package/dist/types/FunctionType.js.map +1 -1
  246. package/dist/types/IntegerType.d.ts +2 -1
  247. package/dist/types/IntegerType.js +4 -2
  248. package/dist/types/IntegerType.js.map +1 -1
  249. package/dist/types/InterfaceType.d.ts +2 -1
  250. package/dist/types/InterfaceType.js +3 -7
  251. package/dist/types/InterfaceType.js.map +1 -1
  252. package/dist/types/InterfaceType.spec.js +25 -2
  253. package/dist/types/InterfaceType.spec.js.map +1 -1
  254. package/dist/types/LongIntegerType.d.ts +2 -1
  255. package/dist/types/LongIntegerType.js +4 -2
  256. package/dist/types/LongIntegerType.js.map +1 -1
  257. package/dist/types/ObjectType.d.ts +2 -2
  258. package/dist/types/ObjectType.js +1 -1
  259. package/dist/types/ObjectType.js.map +1 -1
  260. package/dist/types/ReferenceType.d.ts +2 -0
  261. package/dist/types/ReferenceType.js +45 -1
  262. package/dist/types/ReferenceType.js.map +1 -1
  263. package/dist/types/StringType.d.ts +2 -1
  264. package/dist/types/StringType.js +4 -4
  265. package/dist/types/StringType.js.map +1 -1
  266. package/dist/types/TypedFunctionType.d.ts +7 -1
  267. package/dist/types/TypedFunctionType.js +47 -17
  268. package/dist/types/TypedFunctionType.js.map +1 -1
  269. package/dist/types/TypedFunctionType.spec.js +99 -0
  270. package/dist/types/TypedFunctionType.spec.js.map +1 -1
  271. package/dist/types/UninitializedType.d.ts +2 -1
  272. package/dist/types/UninitializedType.js +1 -1
  273. package/dist/types/UninitializedType.js.map +1 -1
  274. package/dist/types/UnionType.d.ts +2 -2
  275. package/dist/types/UnionType.js +10 -3
  276. package/dist/types/UnionType.js.map +1 -1
  277. package/dist/types/UnionType.spec.js +3 -2
  278. package/dist/types/UnionType.spec.js.map +1 -1
  279. package/dist/types/VoidType.d.ts +2 -1
  280. package/dist/types/VoidType.js +2 -2
  281. package/dist/types/VoidType.js.map +1 -1
  282. package/dist/types/helper.spec.js +15 -0
  283. package/dist/types/helper.spec.js.map +1 -1
  284. package/dist/types/helpers.d.ts +5 -1
  285. package/dist/types/helpers.js +31 -3
  286. package/dist/types/helpers.js.map +1 -1
  287. package/dist/util.d.ts +26 -6
  288. package/dist/util.js +181 -52
  289. package/dist/util.js.map +1 -1
  290. package/dist/validators/ClassValidator.js.map +1 -1
  291. package/package.json +1 -1
  292. package/dist/astUtils/AstEditor.js.map +0 -1
  293. package/dist/astUtils/AstEditor.spec.js.map +0 -1
  294. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +0 -1
  295. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js +0 -31
  296. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js.map +0 -1
  297. /package/dist/astUtils/{AstEditor.spec.d.ts → Editor.spec.d.ts} +0 -0
  298. /package/dist/bscPlugin/{transpile/BrsFilePreTranspileProcessor.spec.d.ts → serialize/BslibInjector.spec.d.ts} +0 -0
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.KeywordCompletions = exports.CompletionsProcessor = void 0;
3
+ exports.NativeTypeCompletions = exports.KeywordCompletions = exports.CompletionsProcessor = void 0;
4
4
  const reflection_1 = require("../../astUtils/reflection");
5
5
  const TokenKind_1 = require("../../lexer/TokenKind");
6
6
  const util_1 = require("../../util");
@@ -12,24 +12,6 @@ class CompletionsProcessor {
12
12
  this.event = event;
13
13
  }
14
14
  process() {
15
- let completionsArray = [];
16
- if ((0, reflection_1.isBrsFile)(this.event.file) && this.event.file.isPositionNextToTokenKind(this.event.position, TokenKind_1.TokenKind.Callfunc)) {
17
- const xmlScopes = this.event.program.getScopes().filter((s) => (0, reflection_1.isXmlScope)(s));
18
- // is next to a @. callfunc invocation - must be an interface method.
19
- //TODO refactor this to utilize the actual variable's component type (when available)
20
- for (const scope of xmlScopes) {
21
- let fileLinks = this.event.program.getStatementsForXmlFile(scope);
22
- for (let fileLink of fileLinks) {
23
- let pushItem = this.createCompletionFromFunctionStatement(fileLink.item);
24
- if (!completionsArray.includes(pushItem.label)) {
25
- completionsArray.push(pushItem.label);
26
- this.event.completions.push(pushItem);
27
- }
28
- }
29
- }
30
- //no other result is possible in this case
31
- return;
32
- }
33
15
  //find the scopes for this file
34
16
  let scopesForFile = this.event.program.getScopesForFile(this.event.file);
35
17
  //if there are no scopes, include the global scope so we at least get the built-in functions
@@ -69,7 +51,7 @@ class CompletionsProcessor {
69
51
  }
70
52
  /**
71
53
  * Get a list of all script imports, relative to the specified pkgPath
72
- * @param program - reference to teh program
54
+ * @param program - reference to the program
73
55
  * @param sourcePkgPath - the pkgPath of the source that wants to resolve script imports
74
56
  * @param scriptImport - example script import
75
57
  */
@@ -83,9 +65,10 @@ class CompletionsProcessor {
83
65
  //restrict to only .brs files
84
66
  for (let key in program.files) {
85
67
  let file = program.files[key];
68
+ const ext = util_1.util.getExtension(file.srcPath);
86
69
  if (
87
70
  //is a BrightScript or BrighterScript file
88
- (file.extension === '.bs' || file.extension === '.brs') &&
71
+ (ext === '.bs' || ext === '.brs') &&
89
72
  //this file is not the current file
90
73
  lowerSourcePkgPath !== file.pkgPath.toLowerCase()) {
91
74
  //add the relative path
@@ -123,7 +106,7 @@ class CompletionsProcessor {
123
106
  * Get completions available at the given cursor. This aggregates all values from this file and the current scope.
124
107
  */
125
108
  getBrsFileCompletions(position, file, scope) {
126
- var _a, _b, _c, _d, _e;
109
+ var _a, _b, _c, _d, _e, _f, _g;
127
110
  let result = [];
128
111
  //handle script import completions
129
112
  let scriptImport = util_1.util.getScriptImportAtPosition(file.ownScriptImports, position);
@@ -140,31 +123,12 @@ class CompletionsProcessor {
140
123
  return [];
141
124
  }
142
125
  else if (tokenKind === TokenKind_1.TokenKind.StringLiteral || tokenKind === TokenKind_1.TokenKind.TemplateStringQuasi) {
143
- const match = /^("?)(pkg|libpkg):/.exec(currentToken.text);
144
- if (match) {
145
- const [, openingQuote, fileProtocol] = match;
146
- //include every absolute file path from this scope
147
- for (const file of scope.getAllFiles()) {
148
- const pkgPath = `${fileProtocol}:/${file.pkgPath.replace(/\\/g, '/')}`;
149
- result.push({
150
- label: pkgPath,
151
- textEdit: vscode_languageserver_1.TextEdit.replace(util_1.util.createRange(currentToken.range.start.line,
152
- //+1 to step past the opening quote
153
- currentToken.range.start.character + (openingQuote ? 1 : 0), currentToken.range.end.line,
154
- //-1 to exclude the closing quotemark (or the end character if there is no closing quotemark)
155
- currentToken.range.end.character + (currentToken.text.endsWith('"') ? -1 : 0)), pkgPath),
156
- kind: vscode_languageserver_1.CompletionItemKind.File
157
- });
158
- }
159
- return result;
160
- }
161
- else {
162
- //do nothing. we don't want to show completions inside of strings...
163
- return [];
164
- }
126
+ return this.getStringLiteralCompletions(scope, currentToken);
165
127
  }
166
128
  let expression;
167
129
  let shouldLookForMembers = false;
130
+ let shouldLookForCallFuncMembers = false;
131
+ let symbolTableLookupFlag = SymbolTable_1.SymbolTypeFlag.runtime;
168
132
  if (file.tokenFollows(currentToken, TokenKind_1.TokenKind.Goto)) {
169
133
  let functionScope = file.getFunctionScopeAtPosition(position);
170
134
  return this.getLabelCompletion(functionScope);
@@ -175,6 +139,19 @@ class CompletionsProcessor {
175
139
  expression = file.getClosestExpression(beforeDotToken === null || beforeDotToken === void 0 ? void 0 : beforeDotToken.range.end);
176
140
  shouldLookForMembers = true;
177
141
  }
142
+ else if (((_d = file.getPreviousToken(currentToken)) === null || _d === void 0 ? void 0 : _d.kind) === TokenKind_1.TokenKind.Callfunc || file.isTokenNextToTokenKind(currentToken, TokenKind_1.TokenKind.Callfunc)) {
143
+ const dotToken = currentToken.kind === TokenKind_1.TokenKind.Callfunc ? currentToken : file.getTokenBefore(currentToken, TokenKind_1.TokenKind.Callfunc);
144
+ const beforeDotToken = file.getTokenBefore(dotToken);
145
+ expression = file.getClosestExpression(beforeDotToken === null || beforeDotToken === void 0 ? void 0 : beforeDotToken.range.end);
146
+ shouldLookForCallFuncMembers = true;
147
+ }
148
+ else if (((_e = file.getPreviousToken(currentToken)) === null || _e === void 0 ? void 0 : _e.kind) === TokenKind_1.TokenKind.As || file.isTokenNextToTokenKind(currentToken, TokenKind_1.TokenKind.As)) {
149
+ if (file.parseMode === Parser_1.ParseMode.BrightScript) {
150
+ return exports.NativeTypeCompletions;
151
+ }
152
+ expression = file.getClosestExpression(this.event.position);
153
+ symbolTableLookupFlag = SymbolTable_1.SymbolTypeFlag.typetime;
154
+ }
178
155
  else {
179
156
  expression = file.getClosestExpression(this.event.position);
180
157
  }
@@ -198,12 +175,21 @@ class CompletionsProcessor {
198
175
  }
199
176
  return type === null || type === void 0 ? void 0 : type.getMemberTable();
200
177
  }
178
+ else if (shouldLookForCallFuncMembers) {
179
+ let type = expression.getType({ flags: SymbolTable_1.SymbolTypeFlag.runtime });
180
+ if ((0, reflection_1.isComponentType)(type)) {
181
+ // it's a component and you're doing a callFunc - only let it do functions from that table
182
+ return type.getCallFuncTable();
183
+ }
184
+ // this is not a component type - there should be no callfunc members
185
+ return undefined;
186
+ }
201
187
  const symbolTableToUse = expression.getSymbolTable();
202
188
  return symbolTableToUse;
203
189
  }
204
190
  for (const scope of this.event.scopes) {
205
191
  scope.linkSymbolTable();
206
- let currentSymbols = (_e = (_d = getSymbolTableForLookups()) === null || _d === void 0 ? void 0 : _d.getAllSymbols(SymbolTable_1.SymbolTypeFlag.runtime)) !== null && _e !== void 0 ? _e : [];
192
+ let currentSymbols = (_g = (_f = getSymbolTableForLookups()) === null || _f === void 0 ? void 0 : _f.getAllSymbols(symbolTableLookupFlag)) !== null && _g !== void 0 ? _g : [];
207
193
  // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
208
194
  switch (tokenBefore.kind) {
209
195
  case TokenKind_1.TokenKind.New:
@@ -218,11 +204,15 @@ class CompletionsProcessor {
218
204
  currentSymbols = currentSymbols.filter((symbol) => symbol.name !== 'new');
219
205
  }
220
206
  }
221
- result.push(...this.getSymbolsCompletion(currentSymbols, shouldLookForMembers));
207
+ result.push(...this.getSymbolsCompletion(currentSymbols, shouldLookForMembers || shouldLookForCallFuncMembers));
222
208
  if (shouldLookForMembers && currentSymbols.length === 0) {
223
209
  // could not find members of actual known types.. just try everything
224
210
  result.push(...this.getPropertyNameCompletions(scope), ...this.getAllClassMemberCompletions(scope).values());
225
211
  }
212
+ else if (shouldLookForCallFuncMembers && currentSymbols.length === 0) {
213
+ // could not find members of actual known types.. just try everything
214
+ result.push(...this.getCallFuncNameCompletions(scope));
215
+ }
226
216
  scope.unlinkSymbolTable();
227
217
  }
228
218
  return result;
@@ -270,6 +260,9 @@ class CompletionsProcessor {
270
260
  else if ((0, reflection_1.isNamespaceType)(type)) {
271
261
  return vscode_languageserver_1.CompletionItemKind.Module;
272
262
  }
263
+ else if ((0, reflection_1.isNativeType)(type)) {
264
+ return vscode_languageserver_1.CompletionItemKind.Keyword;
265
+ }
273
266
  return areMembers ? vscode_languageserver_1.CompletionItemKind.Field : vscode_languageserver_1.CompletionItemKind.Variable;
274
267
  }
275
268
  isNamespaceTypeWithMemberType(nsType, predicate) {
@@ -296,12 +289,40 @@ class CompletionsProcessor {
296
289
  }));
297
290
  }
298
291
  createCompletionFromFunctionStatement(statement) {
292
+ const funcType = statement.getType({ flags: SymbolTable_1.SymbolTypeFlag.runtime });
299
293
  return {
300
294
  label: statement.getName(Parser_1.ParseMode.BrighterScript),
301
295
  kind: vscode_languageserver_1.CompletionItemKind.Function,
302
- documentation: statement.getType({ flags: SymbolTable_1.SymbolTypeFlag.runtime }).toString()
296
+ detail: funcType.toString(),
297
+ documentation: util_1.util.getNodeDocumentation(statement)
303
298
  };
304
299
  }
300
+ getStringLiteralCompletions(scope, currentToken) {
301
+ const match = /^("?)(pkg|libpkg):/.exec(currentToken.text);
302
+ let result = [];
303
+ if (match) {
304
+ // Get file path locations
305
+ const [, openingQuote, fileProtocol] = match;
306
+ //include every absolute file path from this scope
307
+ for (const file of scope.getAllFiles()) {
308
+ const pkgPath = `${fileProtocol}:/${file.pkgPath.replace(/\\/g, '/')}`;
309
+ result.push({
310
+ label: pkgPath,
311
+ textEdit: vscode_languageserver_1.TextEdit.replace(util_1.util.createRange(currentToken.range.start.line,
312
+ //+1 to step past the opening quote
313
+ currentToken.range.start.character + (openingQuote ? 1 : 0), currentToken.range.end.line,
314
+ //-1 to exclude the closing quotemark (or the end character if there is no closing quotemark)
315
+ currentToken.range.end.character + (currentToken.text.endsWith('"') ? -1 : 0)), pkgPath),
316
+ kind: vscode_languageserver_1.CompletionItemKind.File
317
+ });
318
+ }
319
+ return result;
320
+ }
321
+ else {
322
+ //do nothing. we don't want to show completions inside of strings...
323
+ return [];
324
+ }
325
+ }
305
326
  /**
306
327
  * Scan all files for property names, and return them as completions
307
328
  */
@@ -316,23 +337,44 @@ class CompletionsProcessor {
316
337
  let results = new Map();
317
338
  let filesSearched = new Set();
318
339
  for (const file of scope.getAllFiles()) {
319
- if ((0, reflection_1.isXmlFile)(file) || filesSearched.has(file)) {
320
- continue;
321
- }
322
- filesSearched.add(file);
323
- for (let cs of file.parser.references.classStatements) {
324
- for (let s of [...cs.methods, ...cs.fields]) {
325
- if (!results.has(s.name.text) && s.name.text.toLowerCase() !== 'new') {
326
- results.set(s.name.text, {
327
- label: s.name.text,
328
- kind: (0, reflection_1.isMethodStatement)(s) ? vscode_languageserver_1.CompletionItemKind.Method : vscode_languageserver_1.CompletionItemKind.Field
329
- });
340
+ if ((0, reflection_1.isBrsFile)(file) && !filesSearched.has(file)) {
341
+ for (let cs of file.parser.references.classStatements) {
342
+ for (let s of [...cs.methods, ...cs.fields]) {
343
+ if (!results.has(s.name.text) && s.name.text.toLowerCase() !== 'new') {
344
+ results.set(s.name.text, {
345
+ label: s.name.text,
346
+ kind: (0, reflection_1.isMethodStatement)(s) ? vscode_languageserver_1.CompletionItemKind.Method : vscode_languageserver_1.CompletionItemKind.Field
347
+ });
348
+ }
330
349
  }
331
350
  }
332
351
  }
352
+ filesSearched.add(file);
333
353
  }
334
354
  return results;
335
355
  }
356
+ /**
357
+ * Scan all xmlScopes for call funcs
358
+ */
359
+ getCallFuncNameCompletions(scope) {
360
+ let completionsArray = [];
361
+ let completetionsLabels = [];
362
+ const xmlScopes = this.event.program.getScopes().filter((s) => (0, reflection_1.isXmlScope)(s));
363
+ // is next to a @. callfunc invocation - must be an component interface method.
364
+ //TODO refactor this to utilize the actual variable's component type (when available)
365
+ for (const scope of xmlScopes) {
366
+ let fileLinks = this.event.program.getStatementsForXmlFile(scope);
367
+ for (let fileLink of fileLinks) {
368
+ let pushItem = this.createCompletionFromFunctionStatement(fileLink.item);
369
+ if (!completetionsLabels.includes(pushItem.label)) {
370
+ completetionsLabels.push(pushItem.label);
371
+ completionsArray.push(pushItem);
372
+ }
373
+ }
374
+ }
375
+ //no other result is possible in this case
376
+ return completionsArray;
377
+ }
336
378
  }
337
379
  exports.CompletionsProcessor = CompletionsProcessor;
338
380
  /**
@@ -349,4 +391,16 @@ exports.KeywordCompletions = Object.keys(TokenKind_1.Keywords)
349
391
  kind: vscode_languageserver_1.CompletionItemKind.Keyword
350
392
  };
351
393
  });
394
+ /**
395
+ * List of completions for all valid intrinsic types.
396
+ * Build this list once because it won't change for the lifetime of this process
397
+ */
398
+ exports.NativeTypeCompletions = TokenKind_1.DeclarableTypes
399
+ //create completions
400
+ .map(x => {
401
+ return {
402
+ label: x.toLowerCase(),
403
+ kind: vscode_languageserver_1.CompletionItemKind.Keyword
404
+ };
405
+ });
352
406
  //# sourceMappingURL=CompletionsProcessor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CompletionsProcessor.js","sourceRoot":"","sources":["../../../src/bscPlugin/completions/CompletionsProcessor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CompletionsProcessor.js","sourceRoot":"","sources":["../../../src/bscPlugin/completions/CompletionsProcessor.ts"],"names":[],"mappings":"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"}
@@ -479,10 +479,10 @@ describe('CompletionsProcessor', () => {
479
479
  program.validate();
480
480
  (0, chai_config_spec_1.expect)((program.getCompletions(`${testHelpers_spec_1.rootDir}/source/main.bs`, vscode_languageserver_1.Position.create(8, 29))).map(x => x.label).sort()).to.eql(['MyClassA', 'MyClassB', 'MyClassC']);
481
481
  });
482
- it('gets completions when using callfunc inovation', () => {
482
+ it('gets completions when using callfunc invocation', () => {
483
483
  program.setFile('source/main.bs', `
484
- function main()
485
- myNode@.sayHello(arg1)
484
+ function doStuff(myNode)
485
+ myNode@.sayHello(1, 2)
486
486
  end function
487
487
  `);
488
488
  program.setFile('components/MyNode.bs', `
@@ -497,6 +497,7 @@ describe('CompletionsProcessor', () => {
497
497
  </interface>
498
498
  </component>`);
499
499
  program.validate();
500
+ (0, testHelpers_spec_1.expectZeroDiagnostics)(program);
500
501
  (0, chai_config_spec_1.expect)((program.getCompletions(`${testHelpers_spec_1.rootDir}/source/main.bs`, vscode_languageserver_1.Position.create(2, 30))).map(x => x.label).sort()).to.eql(['sayHello']);
501
502
  });
502
503
  it('gets completions for callfunc invocation with multiple nodes', () => {
@@ -928,10 +929,14 @@ describe('CompletionsProcessor', () => {
928
929
  describe('getCompletions - XmlFile.spec', () => {
929
930
  it('formats completion paths with proper slashes', () => {
930
931
  let scriptPath = (0, util_1.standardizePath) `C:/app/components/component1/component1.brs`;
931
- program.files[scriptPath] = new BrsFile_1.BrsFile(scriptPath, (0, util_1.standardizePath) `components/component1/component1.brs`, program);
932
- let xmlFile = new XmlFile_1.XmlFile((0, util_1.standardizePath) `${testHelpers_spec_1.rootDir}/components/component1/component1.xml`, (0, util_1.standardizePath) `components/component1/component1.xml`, program);
932
+ program.files[scriptPath] = new BrsFile_1.BrsFile({ srcPath: scriptPath, destPath: (0, util_1.standardizePath) `components/component1/component1.brs`, program: program });
933
+ let xmlFile = new XmlFile_1.XmlFile({
934
+ srcPath: (0, util_1.standardizePath) `${testHelpers_spec_1.rootDir}/components/component1/component1.xml`,
935
+ destPath: (0, util_1.standardizePath) `components/component1/component1.xml`,
936
+ program: program
937
+ });
933
938
  xmlFile.parser.references.scriptTagImports.push({
934
- pkgPath: (0, util_1.standardizePath) `components/component1/component1.brs`,
939
+ destPath: (0, util_1.standardizePath) `components/component1/component1.brs`,
935
940
  text: 'component1.brs',
936
941
  filePathRange: vscode_languageserver_1.Range.create(1, 1, 1, 1)
937
942
  });
@@ -1365,5 +1370,145 @@ describe('CompletionsProcessor', () => {
1365
1370
  }]);
1366
1371
  });
1367
1372
  });
1373
+ describe('global callables', () => {
1374
+ it('finds built in members', () => {
1375
+ program.setFile('source/main.bs', `
1376
+ sub foo(name as string)
1377
+ print
1378
+ end sub
1379
+ `);
1380
+ program.validate();
1381
+ // print |
1382
+ const completions = program.getCompletions('source/main.bs', util_1.default.createPosition(2, 27));
1383
+ (0, testHelpers_spec_1.expectCompletionsIncludes)(completions, [{
1384
+ label: 'LCase',
1385
+ kind: vscode_languageserver_1.CompletionItemKind.Function
1386
+ }]);
1387
+ (0, testHelpers_spec_1.expectCompletionsIncludes)(completions, [{
1388
+ label: 'CreateObject',
1389
+ kind: vscode_languageserver_1.CompletionItemKind.Function
1390
+ }]);
1391
+ });
1392
+ });
1393
+ describe('callfunc completions', () => {
1394
+ it('finds callfunc members', () => {
1395
+ program.setFile('components/Widget.xml', (0, testHelpers_spec_1.trim) `
1396
+ <?xml version="1.0" encoding="utf-8" ?>
1397
+ <component name="Widget" extends="Group">
1398
+ <script uri="Widget.brs"/>
1399
+ <interface>
1400
+ <function name="someFunc" />
1401
+ </interface>
1402
+ </component>
1403
+ `);
1404
+ program.setFile('components/Widget.brs', `
1405
+ function someFunc(input as string) as float
1406
+ return input.toFloat()
1407
+ end function
1408
+ `);
1409
+ program.setFile('source/util.bs', `
1410
+ sub callWidgetSomeFunc(widget as roSGNodeWidget)
1411
+ print widget@.
1412
+ end sub
1413
+ `);
1414
+ program.validate();
1415
+ // print widget@.|
1416
+ let completions = program.getCompletions('source/util.bs', util_1.default.createPosition(2, 34));
1417
+ (0, chai_config_spec_1.expect)(completions.length).to.eql(1);
1418
+ (0, testHelpers_spec_1.expectCompletionsIncludes)(completions, [{
1419
+ label: 'someFunc',
1420
+ kind: vscode_languageserver_1.CompletionItemKind.Function
1421
+ }]);
1422
+ });
1423
+ it('includes documentation', () => {
1424
+ program.setFile('components/Widget.xml', (0, testHelpers_spec_1.trim) `
1425
+ <?xml version="1.0" encoding="utf-8" ?>
1426
+ <component name="Widget" extends="Group">
1427
+ <script uri="Widget.brs"/>
1428
+ <interface>
1429
+ <function name="someFunc" />
1430
+ </interface>
1431
+ </component>
1432
+ `);
1433
+ program.setFile('components/Widget.brs', `
1434
+ ' This is documentation
1435
+ function someFunc(input as string) as float
1436
+ return input.toFloat()
1437
+ end function
1438
+ `);
1439
+ program.setFile('source/util.bs', `
1440
+ sub callWidgetSomeFunc(widget as roSGNodeWidget)
1441
+ print widget@.
1442
+ end sub
1443
+ `);
1444
+ program.validate();
1445
+ // print widget@.|
1446
+ let completions = program.getCompletions('source/util.bs', util_1.default.createPosition(2, 34));
1447
+ (0, chai_config_spec_1.expect)(completions.length).to.eql(1);
1448
+ (0, testHelpers_spec_1.expectCompletionsIncludes)(completions, [{
1449
+ label: 'someFunc',
1450
+ kind: vscode_languageserver_1.CompletionItemKind.Function,
1451
+ documentation: 'This is documentation'
1452
+ }]);
1453
+ });
1454
+ });
1455
+ describe('type expressions', () => {
1456
+ it('finds built in types', () => {
1457
+ program.setFile('source/main.bs', `
1458
+ sub foo(thing as )
1459
+ print thing
1460
+ end sub
1461
+ `);
1462
+ program.validate();
1463
+ // sub foo(thing as | )
1464
+ const completions = program.getCompletions('source/main.bs', util_1.default.createPosition(1, 34));
1465
+ (0, testHelpers_spec_1.expectCompletionsIncludes)(completions, [{
1466
+ label: 'integer',
1467
+ kind: vscode_languageserver_1.CompletionItemKind.Keyword
1468
+ }]);
1469
+ (0, testHelpers_spec_1.expectCompletionsIncludes)(completions, [{
1470
+ label: 'roSGNode',
1471
+ kind: vscode_languageserver_1.CompletionItemKind.Interface
1472
+ }]);
1473
+ });
1474
+ it('finds custom types', () => {
1475
+ program.setFile('source/main.bs', `
1476
+ sub foo(thing as )
1477
+ print thing
1478
+ end sub
1479
+
1480
+ class SomeKlass
1481
+ end class
1482
+ `);
1483
+ program.validate();
1484
+ // sub foo(thing as | )
1485
+ const completions = program.getCompletions('source/main.bs', util_1.default.createPosition(1, 34));
1486
+ (0, testHelpers_spec_1.expectCompletionsIncludes)(completions, [{
1487
+ label: 'SomeKlass',
1488
+ kind: vscode_languageserver_1.CompletionItemKind.Class
1489
+ }]);
1490
+ });
1491
+ it('only shows intrinsic/native types in brightscript', () => {
1492
+ program.setFile('source/main.brs', `
1493
+ sub foo(thing as )
1494
+ print thing
1495
+ end sub
1496
+ `);
1497
+ program.validate();
1498
+ // sub foo(thing as | )
1499
+ const completions = program.getCompletions('source/main.brs', util_1.default.createPosition(1, 34));
1500
+ (0, testHelpers_spec_1.expectCompletionsIncludes)(completions, [{
1501
+ label: 'integer',
1502
+ kind: vscode_languageserver_1.CompletionItemKind.Keyword
1503
+ }]);
1504
+ (0, testHelpers_spec_1.expectCompletionsIncludes)(completions, [{
1505
+ label: 'function',
1506
+ kind: vscode_languageserver_1.CompletionItemKind.Keyword
1507
+ }]);
1508
+ (0, testHelpers_spec_1.expectCompletionsExcludes)(completions, [{
1509
+ label: 'roSGNode'
1510
+ }]);
1511
+ });
1512
+ });
1368
1513
  });
1369
1514
  //# sourceMappingURL=CompletionsProcessor.spec.js.map