brighterscript 0.72.1 → 0.72.2

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 (289) hide show
  1. package/package.json +17 -14
  2. package/dist/astUtils/AstEditor.spec.d.ts +0 -1
  3. package/dist/astUtils/AstEditor.spec.js +0 -254
  4. package/dist/astUtils/AstEditor.spec.js.map +0 -1
  5. package/dist/astUtils/creators.spec.d.ts +0 -1
  6. package/dist/astUtils/creators.spec.js +0 -21
  7. package/dist/astUtils/creators.spec.js.map +0 -1
  8. package/dist/astUtils/reflection.spec.d.ts +0 -1
  9. package/dist/astUtils/reflection.spec.js +0 -308
  10. package/dist/astUtils/reflection.spec.js.map +0 -1
  11. package/dist/astUtils/stackedVisitor.spec.d.ts +0 -1
  12. package/dist/astUtils/stackedVisitor.spec.js +0 -79
  13. package/dist/astUtils/stackedVisitor.spec.js.map +0 -1
  14. package/dist/astUtils/visitors.spec.d.ts +0 -1
  15. package/dist/astUtils/visitors.spec.js +0 -1197
  16. package/dist/astUtils/visitors.spec.js.map +0 -1
  17. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.d.ts +0 -1
  18. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +0 -1237
  19. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +0 -1
  20. package/dist/bscPlugin/definition/DefinitionProvider.spec.d.ts +0 -1
  21. package/dist/bscPlugin/definition/DefinitionProvider.spec.js +0 -171
  22. package/dist/bscPlugin/definition/DefinitionProvider.spec.js.map +0 -1
  23. package/dist/bscPlugin/hover/HoverProcessor.spec.d.ts +0 -1
  24. package/dist/bscPlugin/hover/HoverProcessor.spec.js +0 -201
  25. package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +0 -1
  26. package/dist/bscPlugin/references/ReferencesProvider.spec.d.ts +0 -1
  27. package/dist/bscPlugin/references/ReferencesProvider.spec.js +0 -51
  28. package/dist/bscPlugin/references/ReferencesProvider.spec.js.map +0 -1
  29. package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.spec.d.ts +0 -1
  30. package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.spec.js +0 -298
  31. package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.spec.js.map +0 -1
  32. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.d.ts +0 -1
  33. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +0 -399
  34. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +0 -1
  35. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.d.ts +0 -1
  36. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.js +0 -290
  37. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.js.map +0 -1
  38. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.d.ts +0 -1
  39. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.js +0 -245
  40. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.js.map +0 -1
  41. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.d.ts +0 -1
  42. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js +0 -46
  43. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js.map +0 -1
  44. package/dist/bscPlugin/validation/BrsFileValidator.spec.d.ts +0 -1
  45. package/dist/bscPlugin/validation/BrsFileValidator.spec.js +0 -702
  46. package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +0 -1
  47. package/dist/common/Sequencer.spec.d.ts +0 -1
  48. package/dist/common/Sequencer.spec.js +0 -75
  49. package/dist/common/Sequencer.spec.js.map +0 -1
  50. package/dist/files/BrsFile.Class.spec.d.ts +0 -1
  51. package/dist/files/BrsFile.Class.spec.js +0 -1805
  52. package/dist/files/BrsFile.Class.spec.js.map +0 -1
  53. package/dist/files/BrsFile.spec.d.ts +0 -1
  54. package/dist/files/BrsFile.spec.js +0 -4611
  55. package/dist/files/BrsFile.spec.js.map +0 -1
  56. package/dist/files/XmlFile.spec.d.ts +0 -1
  57. package/dist/files/XmlFile.spec.js +0 -1219
  58. package/dist/files/XmlFile.spec.js.map +0 -1
  59. package/dist/files/tests/imports.spec.d.ts +0 -1
  60. package/dist/files/tests/imports.spec.js +0 -241
  61. package/dist/files/tests/imports.spec.js.map +0 -1
  62. package/dist/files/tests/optionalChaning.spec.d.ts +0 -1
  63. package/dist/files/tests/optionalChaning.spec.js +0 -152
  64. package/dist/files/tests/optionalChaning.spec.js.map +0 -1
  65. package/dist/lexer/Character.spec.d.ts +0 -1
  66. package/dist/lexer/Character.spec.js +0 -27
  67. package/dist/lexer/Character.spec.js.map +0 -1
  68. package/dist/lexer/Lexer.spec.d.ts +0 -1
  69. package/dist/lexer/Lexer.spec.js +0 -1300
  70. package/dist/lexer/Lexer.spec.js.map +0 -1
  71. package/dist/lsp/ActionQueue.spec.d.ts +0 -1
  72. package/dist/lsp/ActionQueue.spec.js +0 -80
  73. package/dist/lsp/ActionQueue.spec.js.map +0 -1
  74. package/dist/lsp/DocumentManager.spec.d.ts +0 -1
  75. package/dist/lsp/DocumentManager.spec.js +0 -103
  76. package/dist/lsp/DocumentManager.spec.js.map +0 -1
  77. package/dist/lsp/PathFilterer.spec.d.ts +0 -1
  78. package/dist/lsp/PathFilterer.spec.js +0 -182
  79. package/dist/lsp/PathFilterer.spec.js.map +0 -1
  80. package/dist/lsp/Project.spec.d.ts +0 -1
  81. package/dist/lsp/Project.spec.js +0 -400
  82. package/dist/lsp/Project.spec.js.map +0 -1
  83. package/dist/lsp/ProjectManager.spec.d.ts +0 -1
  84. package/dist/lsp/ProjectManager.spec.js +0 -1183
  85. package/dist/lsp/ProjectManager.spec.js.map +0 -1
  86. package/dist/lsp/worker/MessageHandler.spec.d.ts +0 -1
  87. package/dist/lsp/worker/MessageHandler.spec.js +0 -64
  88. package/dist/lsp/worker/MessageHandler.spec.js.map +0 -1
  89. package/dist/lsp/worker/WorkerPool.spec.d.ts +0 -1
  90. package/dist/lsp/worker/WorkerPool.spec.js +0 -59
  91. package/dist/lsp/worker/WorkerPool.spec.js.map +0 -1
  92. package/dist/lsp/worker/WorkerThreadProject.spec.d.ts +0 -2
  93. package/dist/lsp/worker/WorkerThreadProject.spec.js +0 -72
  94. package/dist/lsp/worker/WorkerThreadProject.spec.js.map +0 -1
  95. package/dist/parser/AstNode.spec.d.ts +0 -1
  96. package/dist/parser/AstNode.spec.js +0 -1452
  97. package/dist/parser/AstNode.spec.js.map +0 -1
  98. package/dist/parser/Expression.spec.d.ts +0 -1
  99. package/dist/parser/Expression.spec.js +0 -40
  100. package/dist/parser/Expression.spec.js.map +0 -1
  101. package/dist/parser/Parser.Class.spec.d.ts +0 -1
  102. package/dist/parser/Parser.Class.spec.js +0 -495
  103. package/dist/parser/Parser.Class.spec.js.map +0 -1
  104. package/dist/parser/Parser.spec.d.ts +0 -4
  105. package/dist/parser/Parser.spec.js +0 -1985
  106. package/dist/parser/Parser.spec.js.map +0 -1
  107. package/dist/parser/SGParser.spec.d.ts +0 -1
  108. package/dist/parser/SGParser.spec.js +0 -131
  109. package/dist/parser/SGParser.spec.js.map +0 -1
  110. package/dist/parser/Statement.spec.d.ts +0 -1
  111. package/dist/parser/Statement.spec.js +0 -118
  112. package/dist/parser/Statement.spec.js.map +0 -1
  113. package/dist/parser/tests/Parser.spec.d.ts +0 -19
  114. package/dist/parser/tests/Parser.spec.js +0 -38
  115. package/dist/parser/tests/Parser.spec.js.map +0 -1
  116. package/dist/parser/tests/controlFlow/For.spec.d.ts +0 -1
  117. package/dist/parser/tests/controlFlow/For.spec.js +0 -208
  118. package/dist/parser/tests/controlFlow/For.spec.js.map +0 -1
  119. package/dist/parser/tests/controlFlow/ForEach.spec.d.ts +0 -1
  120. package/dist/parser/tests/controlFlow/ForEach.spec.js +0 -143
  121. package/dist/parser/tests/controlFlow/ForEach.spec.js.map +0 -1
  122. package/dist/parser/tests/controlFlow/If.spec.d.ts +0 -1
  123. package/dist/parser/tests/controlFlow/If.spec.js +0 -570
  124. package/dist/parser/tests/controlFlow/If.spec.js.map +0 -1
  125. package/dist/parser/tests/controlFlow/While.spec.d.ts +0 -1
  126. package/dist/parser/tests/controlFlow/While.spec.js +0 -156
  127. package/dist/parser/tests/controlFlow/While.spec.js.map +0 -1
  128. package/dist/parser/tests/expression/Additive.spec.d.ts +0 -1
  129. package/dist/parser/tests/expression/Additive.spec.js +0 -99
  130. package/dist/parser/tests/expression/Additive.spec.js.map +0 -1
  131. package/dist/parser/tests/expression/ArrayLiterals.spec.d.ts +0 -1
  132. package/dist/parser/tests/expression/ArrayLiterals.spec.js +0 -291
  133. package/dist/parser/tests/expression/ArrayLiterals.spec.js.map +0 -1
  134. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.d.ts +0 -1
  135. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +0 -401
  136. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +0 -1
  137. package/dist/parser/tests/expression/Boolean.spec.d.ts +0 -1
  138. package/dist/parser/tests/expression/Boolean.spec.js +0 -83
  139. package/dist/parser/tests/expression/Boolean.spec.js.map +0 -1
  140. package/dist/parser/tests/expression/Call.spec.d.ts +0 -1
  141. package/dist/parser/tests/expression/Call.spec.js +0 -242
  142. package/dist/parser/tests/expression/Call.spec.js.map +0 -1
  143. package/dist/parser/tests/expression/Exponential.spec.d.ts +0 -1
  144. package/dist/parser/tests/expression/Exponential.spec.js +0 -37
  145. package/dist/parser/tests/expression/Exponential.spec.js.map +0 -1
  146. package/dist/parser/tests/expression/Function.spec.d.ts +0 -1
  147. package/dist/parser/tests/expression/Function.spec.js +0 -403
  148. package/dist/parser/tests/expression/Function.spec.js.map +0 -1
  149. package/dist/parser/tests/expression/Indexing.spec.d.ts +0 -1
  150. package/dist/parser/tests/expression/Indexing.spec.js +0 -289
  151. package/dist/parser/tests/expression/Indexing.spec.js.map +0 -1
  152. package/dist/parser/tests/expression/Multiplicative.spec.d.ts +0 -1
  153. package/dist/parser/tests/expression/Multiplicative.spec.js +0 -67
  154. package/dist/parser/tests/expression/Multiplicative.spec.js.map +0 -1
  155. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.d.ts +0 -1
  156. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +0 -346
  157. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +0 -1
  158. package/dist/parser/tests/expression/PrefixUnary.spec.d.ts +0 -1
  159. package/dist/parser/tests/expression/PrefixUnary.spec.js +0 -105
  160. package/dist/parser/tests/expression/PrefixUnary.spec.js.map +0 -1
  161. package/dist/parser/tests/expression/Primary.spec.d.ts +0 -1
  162. package/dist/parser/tests/expression/Primary.spec.js +0 -149
  163. package/dist/parser/tests/expression/Primary.spec.js.map +0 -1
  164. package/dist/parser/tests/expression/RegexLiteralExpression.spec.d.ts +0 -1
  165. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js +0 -171
  166. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js.map +0 -1
  167. package/dist/parser/tests/expression/Relational.spec.d.ts +0 -1
  168. package/dist/parser/tests/expression/Relational.spec.js +0 -83
  169. package/dist/parser/tests/expression/Relational.spec.js.map +0 -1
  170. package/dist/parser/tests/expression/SourceLiteralExpression.spec.d.ts +0 -1
  171. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js +0 -201
  172. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js.map +0 -1
  173. package/dist/parser/tests/expression/TemplateStringExpression.spec.d.ts +0 -1
  174. package/dist/parser/tests/expression/TemplateStringExpression.spec.js +0 -389
  175. package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +0 -1
  176. package/dist/parser/tests/expression/TernaryExpression.spec.d.ts +0 -1
  177. package/dist/parser/tests/expression/TernaryExpression.spec.js +0 -876
  178. package/dist/parser/tests/expression/TernaryExpression.spec.js.map +0 -1
  179. package/dist/parser/tests/expression/UnaryExpression.spec.d.ts +0 -1
  180. package/dist/parser/tests/expression/UnaryExpression.spec.js +0 -52
  181. package/dist/parser/tests/expression/UnaryExpression.spec.js.map +0 -1
  182. package/dist/parser/tests/statement/AssignmentOperators.spec.d.ts +0 -1
  183. package/dist/parser/tests/statement/AssignmentOperators.spec.js +0 -79
  184. package/dist/parser/tests/statement/AssignmentOperators.spec.js.map +0 -1
  185. package/dist/parser/tests/statement/ConstStatement.spec.d.ts +0 -1
  186. package/dist/parser/tests/statement/ConstStatement.spec.js +0 -708
  187. package/dist/parser/tests/statement/ConstStatement.spec.js.map +0 -1
  188. package/dist/parser/tests/statement/Continue.spec.d.ts +0 -1
  189. package/dist/parser/tests/statement/Continue.spec.js +0 -119
  190. package/dist/parser/tests/statement/Continue.spec.js.map +0 -1
  191. package/dist/parser/tests/statement/Declaration.spec.d.ts +0 -1
  192. package/dist/parser/tests/statement/Declaration.spec.js +0 -108
  193. package/dist/parser/tests/statement/Declaration.spec.js.map +0 -1
  194. package/dist/parser/tests/statement/Dim.spec.d.ts +0 -1
  195. package/dist/parser/tests/statement/Dim.spec.js +0 -73
  196. package/dist/parser/tests/statement/Dim.spec.js.map +0 -1
  197. package/dist/parser/tests/statement/Enum.spec.d.ts +0 -1
  198. package/dist/parser/tests/statement/Enum.spec.js +0 -1307
  199. package/dist/parser/tests/statement/Enum.spec.js.map +0 -1
  200. package/dist/parser/tests/statement/For.spec.d.ts +0 -1
  201. package/dist/parser/tests/statement/For.spec.js +0 -45
  202. package/dist/parser/tests/statement/For.spec.js.map +0 -1
  203. package/dist/parser/tests/statement/ForEach.spec.d.ts +0 -1
  204. package/dist/parser/tests/statement/ForEach.spec.js +0 -36
  205. package/dist/parser/tests/statement/ForEach.spec.js.map +0 -1
  206. package/dist/parser/tests/statement/Function.spec.d.ts +0 -1
  207. package/dist/parser/tests/statement/Function.spec.js +0 -342
  208. package/dist/parser/tests/statement/Function.spec.js.map +0 -1
  209. package/dist/parser/tests/statement/Goto.spec.d.ts +0 -1
  210. package/dist/parser/tests/statement/Goto.spec.js +0 -51
  211. package/dist/parser/tests/statement/Goto.spec.js.map +0 -1
  212. package/dist/parser/tests/statement/Increment.spec.d.ts +0 -1
  213. package/dist/parser/tests/statement/Increment.spec.js +0 -117
  214. package/dist/parser/tests/statement/Increment.spec.js.map +0 -1
  215. package/dist/parser/tests/statement/InterfaceStatement.spec.d.ts +0 -1
  216. package/dist/parser/tests/statement/InterfaceStatement.spec.js +0 -102
  217. package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +0 -1
  218. package/dist/parser/tests/statement/LibraryStatement.spec.d.ts +0 -1
  219. package/dist/parser/tests/statement/LibraryStatement.spec.js +0 -74
  220. package/dist/parser/tests/statement/LibraryStatement.spec.js.map +0 -1
  221. package/dist/parser/tests/statement/Misc.spec.d.ts +0 -1
  222. package/dist/parser/tests/statement/Misc.spec.js +0 -335
  223. package/dist/parser/tests/statement/Misc.spec.js.map +0 -1
  224. package/dist/parser/tests/statement/PrintStatement.spec.d.ts +0 -1
  225. package/dist/parser/tests/statement/PrintStatement.spec.js +0 -195
  226. package/dist/parser/tests/statement/PrintStatement.spec.js.map +0 -1
  227. package/dist/parser/tests/statement/ReturnStatement.spec.d.ts +0 -1
  228. package/dist/parser/tests/statement/ReturnStatement.spec.js +0 -94
  229. package/dist/parser/tests/statement/ReturnStatement.spec.js.map +0 -1
  230. package/dist/parser/tests/statement/Set.spec.d.ts +0 -1
  231. package/dist/parser/tests/statement/Set.spec.js +0 -218
  232. package/dist/parser/tests/statement/Set.spec.js.map +0 -1
  233. package/dist/parser/tests/statement/Stop.spec.d.ts +0 -1
  234. package/dist/parser/tests/statement/Stop.spec.js +0 -38
  235. package/dist/parser/tests/statement/Stop.spec.js.map +0 -1
  236. package/dist/parser/tests/statement/Throw.spec.d.ts +0 -1
  237. package/dist/parser/tests/statement/Throw.spec.js +0 -35
  238. package/dist/parser/tests/statement/Throw.spec.js.map +0 -1
  239. package/dist/parser/tests/statement/TryCatch.spec.d.ts +0 -1
  240. package/dist/parser/tests/statement/TryCatch.spec.js +0 -142
  241. package/dist/parser/tests/statement/TryCatch.spec.js.map +0 -1
  242. package/dist/preprocessor/Manifest.spec.d.ts +0 -1
  243. package/dist/preprocessor/Manifest.spec.js +0 -80
  244. package/dist/preprocessor/Manifest.spec.js.map +0 -1
  245. package/dist/preprocessor/Preprocessor.spec.d.ts +0 -1
  246. package/dist/preprocessor/Preprocessor.spec.js +0 -152
  247. package/dist/preprocessor/Preprocessor.spec.js.map +0 -1
  248. package/dist/preprocessor/PreprocessorParser.spec.d.ts +0 -1
  249. package/dist/preprocessor/PreprocessorParser.spec.js +0 -116
  250. package/dist/preprocessor/PreprocessorParser.spec.js.map +0 -1
  251. package/dist/types/ArrayType.spec.d.ts +0 -1
  252. package/dist/types/ArrayType.spec.js +0 -30
  253. package/dist/types/ArrayType.spec.js.map +0 -1
  254. package/dist/types/BooleanType.spec.d.ts +0 -1
  255. package/dist/types/BooleanType.spec.js +0 -12
  256. package/dist/types/BooleanType.spec.js.map +0 -1
  257. package/dist/types/DoubleType.spec.d.ts +0 -1
  258. package/dist/types/DoubleType.spec.js +0 -12
  259. package/dist/types/DoubleType.spec.js.map +0 -1
  260. package/dist/types/DynamicType.spec.d.ts +0 -1
  261. package/dist/types/DynamicType.spec.js +0 -12
  262. package/dist/types/DynamicType.spec.js.map +0 -1
  263. package/dist/types/FloatType.spec.d.ts +0 -1
  264. package/dist/types/FloatType.spec.js +0 -12
  265. package/dist/types/FloatType.spec.js.map +0 -1
  266. package/dist/types/FunctionType.spec.d.ts +0 -1
  267. package/dist/types/FunctionType.spec.js +0 -23
  268. package/dist/types/FunctionType.spec.js.map +0 -1
  269. package/dist/types/IntegerType.spec.d.ts +0 -1
  270. package/dist/types/IntegerType.spec.js +0 -12
  271. package/dist/types/IntegerType.spec.js.map +0 -1
  272. package/dist/types/InterfaceType.spec.d.ts +0 -1
  273. package/dist/types/InterfaceType.spec.js +0 -175
  274. package/dist/types/InterfaceType.spec.js.map +0 -1
  275. package/dist/types/InvalidType.spec.d.ts +0 -1
  276. package/dist/types/InvalidType.spec.js +0 -12
  277. package/dist/types/InvalidType.spec.js.map +0 -1
  278. package/dist/types/LongIntegerType.spec.d.ts +0 -1
  279. package/dist/types/LongIntegerType.spec.js +0 -12
  280. package/dist/types/LongIntegerType.spec.js.map +0 -1
  281. package/dist/types/ObjectType.spec.d.ts +0 -1
  282. package/dist/types/ObjectType.spec.js +0 -12
  283. package/dist/types/ObjectType.spec.js.map +0 -1
  284. package/dist/types/StringType.spec.d.ts +0 -1
  285. package/dist/types/StringType.spec.js +0 -12
  286. package/dist/types/StringType.spec.js.map +0 -1
  287. package/dist/types/VoidType.spec.d.ts +0 -1
  288. package/dist/types/VoidType.spec.js +0 -12
  289. package/dist/types/VoidType.spec.js.map +0 -1
@@ -1,298 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const chai_config_spec_1 = require("../../chai-config.spec");
4
- const Program_1 = require("../../Program");
5
- const util_1 = require("../../util");
6
- const testHelpers_spec_1 = require("../../testHelpers.spec");
7
- describe('SelectionRangesProcessor', () => {
8
- let program;
9
- beforeEach(() => {
10
- program = new Program_1.Program({ rootDir: testHelpers_spec_1.rootDir });
11
- });
12
- afterEach(() => {
13
- program.dispose();
14
- });
15
- /**
16
- * Flatten a SelectionRange linked list (innermost → outermost) into an array
17
- * of `[startLine, startChar, endLine, endChar]` tuples for easy assertion.
18
- */
19
- function flatten(sr) {
20
- const result = [];
21
- let current = sr;
22
- while (current) {
23
- const { start, end } = current.range;
24
- result.push([start.line, start.character, end.line, end.character]);
25
- current = current.parent;
26
- }
27
- return result;
28
- }
29
- /**
30
- * Extract the substring of `code` that a `[startLine, startChar, endLine, endChar]` range covers.
31
- */
32
- function getText(code, range) {
33
- const lines = code.split('\n');
34
- const [startLine, startChar, endLine, endChar] = range;
35
- if (startLine === endLine) {
36
- return lines[startLine].slice(startChar, endChar);
37
- }
38
- const parts = [lines[startLine].slice(startChar)];
39
- for (let i = startLine + 1; i < endLine; i++) {
40
- parts.push(lines[i]);
41
- }
42
- parts.push(lines[endLine].slice(0, endChar));
43
- return parts.join('\n');
44
- }
45
- function getSelectionRange(code, line, character) {
46
- const file = program.setFile('source/main.brs', code);
47
- program.validate();
48
- const ranges = program.getSelectionRanges(file.pathAbsolute, [util_1.util.createPosition(line, character)]);
49
- return ranges[0];
50
- }
51
- // -------------------------------------------------------------------------
52
- // Basic identifier / variable
53
- // -------------------------------------------------------------------------
54
- it('expands from identifier token to assignment statement to function', () => {
55
- const code = (0, testHelpers_spec_1.trim) `
56
- sub main()
57
- name = "hello"
58
- end sub
59
- `;
60
- // cursor on 'n' of 'name' (line 1, col 4)
61
- const sr = getSelectionRange(code, 1, 4);
62
- const steps = flatten(sr);
63
- (0, chai_config_spec_1.expect)(getText(code, steps[0])).to.equal('name', 'first step should be the identifier token');
64
- (0, chai_config_spec_1.expect)(getText(code, steps[1])).to.equal('name = "hello"', 'second step should be the assignment statement');
65
- (0, chai_config_spec_1.expect)(getText(code, steps[steps.length - 1])).to.equal(code, 'outermost step should be the full sub');
66
- });
67
- // -------------------------------------------------------------------------
68
- // String literal
69
- // -------------------------------------------------------------------------
70
- it('expands from string literal to assignment to function', () => {
71
- const code = (0, testHelpers_spec_1.trim) `
72
- sub main()
73
- name = "hello"
74
- end sub
75
- `;
76
- // cursor inside "hello" — col 12 is 'h'
77
- const sr = getSelectionRange(code, 1, 12);
78
- const steps = flatten(sr);
79
- (0, chai_config_spec_1.expect)(getText(code, steps[0])).to.equal('"hello"', 'first step should be the string literal');
80
- (0, chai_config_spec_1.expect)(getText(code, steps[steps.length - 1])).to.equal(code, 'outermost step should be the full sub');
81
- });
82
- // -------------------------------------------------------------------------
83
- // Dotted-get expression (member access)
84
- // -------------------------------------------------------------------------
85
- it('expands name token then full dotted-get chain', () => {
86
- const code = (0, testHelpers_spec_1.trim) `
87
- sub main()
88
- x = m.top.value
89
- end sub
90
- `;
91
- // cursor in the middle of 'value' — col 16
92
- const sr = getSelectionRange(code, 1, 16);
93
- const steps = flatten(sr);
94
- (0, chai_config_spec_1.expect)(getText(code, steps[0])).to.equal('value', 'first step is the name token of the dotted-get');
95
- (0, chai_config_spec_1.expect)(getText(code, steps[1])).to.equal('m.top.value', 'second step is the full dotted-get expression');
96
- });
97
- // -------------------------------------------------------------------------
98
- // Function call expression
99
- // -------------------------------------------------------------------------
100
- it('expands from argument to full function call expression', () => {
101
- const code = (0, testHelpers_spec_1.trim) `
102
- sub main()
103
- foo("hello")
104
- end sub
105
- `;
106
- // cursor on 'h' inside "hello" — col 9
107
- const sr = getSelectionRange(code, 1, 9);
108
- const steps = flatten(sr);
109
- (0, chai_config_spec_1.expect)(getText(code, steps[0])).to.equal('"hello"', 'first step is the string arg');
110
- const hasCallRange = steps.some(r => getText(code, r) === 'foo("hello")');
111
- (0, chai_config_spec_1.expect)(hasCallRange).to.be.true;
112
- });
113
- // -------------------------------------------------------------------------
114
- // Nested function / function expression
115
- // -------------------------------------------------------------------------
116
- it('expands from nested function body through inner function to outer sub', () => {
117
- const code = (0, testHelpers_spec_1.trim) `
118
- sub outer()
119
- inner = function()
120
- x = 1
121
- end function
122
- end sub
123
- `;
124
- // cursor on 'x' — line 2, col 8
125
- const sr = getSelectionRange(code, 2, 8);
126
- const steps = flatten(sr);
127
- // Should have at least 4 steps: token → stmt → inner fn → outer sub
128
- (0, chai_config_spec_1.expect)(steps.length).to.be.at.least(4);
129
- (0, chai_config_spec_1.expect)(getText(code, steps[steps.length - 1])).to.equal(code, 'outermost step should be the full outer sub');
130
- });
131
- // -------------------------------------------------------------------------
132
- // If / else blocks
133
- // -------------------------------------------------------------------------
134
- it('expands from inside an if block to the enclosing sub', () => {
135
- const code = (0, testHelpers_spec_1.trim) `
136
- sub main()
137
- if true then
138
- x = 1
139
- end if
140
- end sub
141
- `;
142
- // cursor on 'x' — line 2, col 8
143
- const sr = getSelectionRange(code, 2, 8);
144
- const steps = flatten(sr);
145
- (0, chai_config_spec_1.expect)(steps.length).to.be.at.least(3);
146
- (0, chai_config_spec_1.expect)(getText(code, steps[steps.length - 1])).to.equal(code, 'outermost step should be the full sub');
147
- });
148
- // -------------------------------------------------------------------------
149
- // For loop
150
- // -------------------------------------------------------------------------
151
- it('expands from inside a for loop body to the enclosing sub', () => {
152
- const code = (0, testHelpers_spec_1.trim) `
153
- sub main()
154
- for i = 0 to 10
155
- x = 1
156
- end for
157
- end sub
158
- `;
159
- // cursor on 'x' — line 2, col 8
160
- const sr = getSelectionRange(code, 2, 8);
161
- const steps = flatten(sr);
162
- (0, chai_config_spec_1.expect)(steps.length).to.be.at.least(3);
163
- (0, chai_config_spec_1.expect)(getText(code, steps[steps.length - 1])).to.equal(code, 'outermost step should be the full sub');
164
- });
165
- // -------------------------------------------------------------------------
166
- // Class
167
- // -------------------------------------------------------------------------
168
- it('expands from class method body through method to class', () => {
169
- const code = (0, testHelpers_spec_1.trim) `
170
- class MyClass
171
- function greet() as string
172
- return "hello"
173
- end function
174
- end class
175
- `;
176
- // cursor on 'h' in "hello" — line 2, col 16
177
- const sr = getSelectionRange(code, 2, 16);
178
- const steps = flatten(sr);
179
- (0, chai_config_spec_1.expect)(steps.length).to.be.at.least(3);
180
- (0, chai_config_spec_1.expect)(getText(code, steps[steps.length - 1])).to.equal(code, 'outermost step should be the whole class');
181
- });
182
- // -------------------------------------------------------------------------
183
- // Namespace
184
- // -------------------------------------------------------------------------
185
- it('expands from namespace function body to namespace', () => {
186
- const code = (0, testHelpers_spec_1.trim) `
187
- namespace MyApp
188
- sub doThing()
189
- x = 1
190
- end sub
191
- end namespace
192
- `;
193
- // cursor on 'x' — line 2, col 8
194
- const sr = getSelectionRange(code, 2, 8);
195
- const steps = flatten(sr);
196
- (0, chai_config_spec_1.expect)(steps.length).to.be.at.least(4);
197
- (0, chai_config_spec_1.expect)(getText(code, steps[steps.length - 1])).to.equal(code, 'outermost step should be the whole namespace');
198
- });
199
- // -------------------------------------------------------------------------
200
- // Multiple positions in one request
201
- // -------------------------------------------------------------------------
202
- it('handles multiple positions in one request', () => {
203
- const code = (0, testHelpers_spec_1.trim) `
204
- sub main()
205
- a = 1
206
- b = 2
207
- end sub
208
- `;
209
- const file = program.setFile('source/multi.brs', code);
210
- program.validate();
211
- const ranges = program.getSelectionRanges(file.pathAbsolute, [
212
- util_1.util.createPosition(1, 4),
213
- util_1.util.createPosition(2, 4) // cursor on 'b'
214
- ]);
215
- (0, chai_config_spec_1.expect)(ranges).to.have.length(2);
216
- (0, chai_config_spec_1.expect)(ranges[0]).to.exist;
217
- (0, chai_config_spec_1.expect)(ranges[1]).to.exist;
218
- const steps0 = flatten(ranges[0]);
219
- const steps1 = flatten(ranges[1]);
220
- (0, chai_config_spec_1.expect)(getText(code, steps0[0])).to.equal('a', 'first position selects identifier "a"');
221
- (0, chai_config_spec_1.expect)(getText(code, steps1[0])).to.equal('b', 'second position selects identifier "b"');
222
- });
223
- // -------------------------------------------------------------------------
224
- // BrighterScript: enum
225
- // -------------------------------------------------------------------------
226
- it('expands inside an enum member value to the whole enum', () => {
227
- const code = (0, testHelpers_spec_1.trim) `
228
- enum Direction
229
- up = "up"
230
- down = "down"
231
- end enum
232
- `;
233
- // cursor on 'u' inside "up" on line 1 — col 10
234
- const sr = getSelectionRange(code, 1, 10);
235
- const steps = flatten(sr);
236
- (0, chai_config_spec_1.expect)(steps.length).to.be.at.least(2);
237
- (0, chai_config_spec_1.expect)(getText(code, steps[steps.length - 1])).to.equal(code, 'outermost step should be the whole enum');
238
- });
239
- // -------------------------------------------------------------------------
240
- // Edge cases
241
- // -------------------------------------------------------------------------
242
- it('returns empty array for a position outside any node', () => {
243
- const code = (0, testHelpers_spec_1.trim) `
244
- sub main()
245
- end sub
246
- `;
247
- const file = program.setFile('source/empty.brs', code);
248
- program.validate();
249
- // position far past the last line — should not throw
250
- const ranges = program.getSelectionRanges(file.pathAbsolute, [util_1.util.createPosition(99, 0)]);
251
- (0, chai_config_spec_1.expect)(Array.isArray(ranges)).to.be.true;
252
- });
253
- it('returns empty array for unknown file', () => {
254
- const ranges = program.getSelectionRanges('/does/not/exist.brs', [util_1.util.createPosition(0, 0)]);
255
- (0, chai_config_spec_1.expect)(ranges).to.eql([]);
256
- });
257
- it('does not return duplicate consecutive ranges', () => {
258
- const code = (0, testHelpers_spec_1.trim) `
259
- sub main()
260
- x = 1
261
- end sub
262
- `;
263
- const sr = getSelectionRange(code, 1, 4);
264
- const steps = flatten(sr);
265
- // Verify no two consecutive steps have identical ranges
266
- for (let i = 1; i < steps.length; i++) {
267
- const prev = steps[i - 1];
268
- const curr = steps[i];
269
- const sameRange = prev[0] === curr[0] && prev[1] === curr[1] &&
270
- prev[2] === curr[2] && prev[3] === curr[3];
271
- (0, chai_config_spec_1.expect)(sameRange).to.be.false;
272
- }
273
- });
274
- // -------------------------------------------------------------------------
275
- // Plugin extensibility
276
- // -------------------------------------------------------------------------
277
- it('allows plugins to contribute custom selection ranges', () => {
278
- const customRange = util_1.util.createRange(0, 0, 0, 10);
279
- program.plugins.add({
280
- name: 'test-plugin',
281
- provideSelectionRanges: (event) => {
282
- event.selectionRanges.push({ range: customRange });
283
- }
284
- });
285
- const code = (0, testHelpers_spec_1.trim) `
286
- sub main()
287
- end sub
288
- `;
289
- const file = program.setFile('source/plugin.brs', code);
290
- program.validate();
291
- const ranges = program.getSelectionRanges(file.pathAbsolute, [util_1.util.createPosition(0, 4)]);
292
- // The bsc plugin should push a range, and the test plugin pushed another
293
- (0, chai_config_spec_1.expect)(ranges.length).to.be.at.least(2);
294
- const hasCustom = ranges.some(r => r.range.start.line === 0 && r.range.end.character === 10);
295
- (0, chai_config_spec_1.expect)(hasCustom).to.be.true;
296
- });
297
- });
298
- //# sourceMappingURL=SelectionRangesProcessor.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SelectionRangesProcessor.spec.js","sourceRoot":"","sources":["../../../src/bscPlugin/selectionRanges/SelectionRangesProcessor.spec.ts"],"names":[],"mappings":"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"}