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,117 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const chai_config_spec_1 = require("../../../chai-config.spec");
4
- const Parser_1 = require("../../Parser");
5
- const TokenKind_1 = require("../../../lexer/TokenKind");
6
- const Parser_spec_1 = require("../Parser.spec");
7
- const vscode_languageserver_1 = require("vscode-languageserver");
8
- const DiagnosticMessages_1 = require("../../../DiagnosticMessages");
9
- describe('parser postfix unary expressions', () => {
10
- it('parses postfix \'++\' for variables', () => {
11
- let { statements, diagnostics } = Parser_1.Parser.parse([
12
- (0, Parser_spec_1.identifier)('foo'),
13
- (0, Parser_spec_1.token)(TokenKind_1.TokenKind.PlusPlus, '++'),
14
- Parser_spec_1.EOF
15
- ]);
16
- (0, chai_config_spec_1.expect)(diagnostics).to.be.lengthOf(0);
17
- (0, chai_config_spec_1.expect)(statements).to.exist;
18
- (0, chai_config_spec_1.expect)(statements).not.to.be.null;
19
- });
20
- it('parses postfix \'--\' for dotted get expressions', () => {
21
- let { statements, diagnostics } = Parser_1.Parser.parse([
22
- (0, Parser_spec_1.identifier)('obj'),
23
- (0, Parser_spec_1.token)(TokenKind_1.TokenKind.Dot, '.'),
24
- (0, Parser_spec_1.identifier)('property'),
25
- (0, Parser_spec_1.token)(TokenKind_1.TokenKind.MinusMinus, '--'),
26
- Parser_spec_1.EOF
27
- ]);
28
- (0, chai_config_spec_1.expect)(diagnostics).to.be.lengthOf(0);
29
- (0, chai_config_spec_1.expect)(statements).to.exist;
30
- (0, chai_config_spec_1.expect)(statements).not.to.be.null;
31
- });
32
- it('parses postfix \'++\' for indexed get expressions', () => {
33
- let { statements, diagnostics } = Parser_1.Parser.parse([
34
- (0, Parser_spec_1.identifier)('obj'),
35
- (0, Parser_spec_1.token)(TokenKind_1.TokenKind.LeftSquareBracket, '['),
36
- (0, Parser_spec_1.identifier)('property'),
37
- (0, Parser_spec_1.token)(TokenKind_1.TokenKind.RightSquareBracket, ']'),
38
- (0, Parser_spec_1.token)(TokenKind_1.TokenKind.PlusPlus, '++'),
39
- Parser_spec_1.EOF
40
- ]);
41
- (0, chai_config_spec_1.expect)(diagnostics).to.be.lengthOf(0);
42
- (0, chai_config_spec_1.expect)(statements).to.exist;
43
- (0, chai_config_spec_1.expect)(statements).not.to.be.null;
44
- });
45
- it('disallows consecutive postfix operators', () => {
46
- let { diagnostics } = Parser_1.Parser.parse([
47
- (0, Parser_spec_1.identifier)('foo'),
48
- (0, Parser_spec_1.token)(TokenKind_1.TokenKind.PlusPlus, '++'),
49
- (0, Parser_spec_1.token)(TokenKind_1.TokenKind.PlusPlus, '++'),
50
- Parser_spec_1.EOF
51
- ]);
52
- (0, chai_config_spec_1.expect)(diagnostics).to.be.lengthOf(1);
53
- (0, chai_config_spec_1.expect)(diagnostics[0]).deep.include({
54
- message: 'Consecutive increment/decrement operators are not allowed'
55
- });
56
- });
57
- it('disallows postfix \'--\' for function call results', () => {
58
- let { diagnostics } = Parser_1.Parser.parse([
59
- (0, Parser_spec_1.identifier)('func'),
60
- (0, Parser_spec_1.token)(TokenKind_1.TokenKind.LeftParen, '('),
61
- (0, Parser_spec_1.token)(TokenKind_1.TokenKind.RightParen, ')'),
62
- (0, Parser_spec_1.token)(TokenKind_1.TokenKind.MinusMinus, '--'),
63
- Parser_spec_1.EOF
64
- ]);
65
- (0, chai_config_spec_1.expect)(diagnostics).to.be.lengthOf(1);
66
- (0, chai_config_spec_1.expect)(diagnostics[0]).to.deep.include(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.incrementDecrementOperatorsAreNotAllowedAsResultOfFunctionCall()));
67
- });
68
- it('allows \'++\' at the end of a function', () => {
69
- let { statements, diagnostics } = Parser_1.Parser.parse([
70
- (0, Parser_spec_1.token)(TokenKind_1.TokenKind.Sub, 'sub'),
71
- (0, Parser_spec_1.identifier)('foo'),
72
- (0, Parser_spec_1.token)(TokenKind_1.TokenKind.LeftParen, '('),
73
- (0, Parser_spec_1.token)(TokenKind_1.TokenKind.RightParen, ')'),
74
- (0, Parser_spec_1.token)(TokenKind_1.TokenKind.Newline, '\n'),
75
- (0, Parser_spec_1.identifier)('someValue'),
76
- (0, Parser_spec_1.token)(TokenKind_1.TokenKind.PlusPlus, '++'),
77
- (0, Parser_spec_1.token)(TokenKind_1.TokenKind.Newline, '\n'),
78
- (0, Parser_spec_1.token)(TokenKind_1.TokenKind.EndSub, 'end sub'),
79
- Parser_spec_1.EOF
80
- ]);
81
- (0, chai_config_spec_1.expect)(diagnostics).to.be.lengthOf(0);
82
- (0, chai_config_spec_1.expect)(statements).to.exist;
83
- (0, chai_config_spec_1.expect)(statements).not.to.be.null;
84
- });
85
- it('location tracking', () => {
86
- /**
87
- * 0 0 0 1
88
- * 0 4 8 2
89
- * +--------------
90
- * 0| someNumber++
91
- */
92
- let { statements, diagnostics } = Parser_1.Parser.parse([
93
- {
94
- kind: TokenKind_1.TokenKind.Identifier,
95
- text: 'someNumber',
96
- isReserved: false,
97
- range: vscode_languageserver_1.Range.create(0, 0, 0, 10)
98
- },
99
- {
100
- kind: TokenKind_1.TokenKind.PlusPlus,
101
- text: '++',
102
- isReserved: false,
103
- range: vscode_languageserver_1.Range.create(0, 10, 0, 12)
104
- },
105
- {
106
- kind: TokenKind_1.TokenKind.Eof,
107
- text: '\0',
108
- isReserved: false,
109
- range: vscode_languageserver_1.Range.create(0, 12, 0, 13)
110
- }
111
- ]);
112
- (0, chai_config_spec_1.expect)(diagnostics).to.be.lengthOf(0);
113
- (0, chai_config_spec_1.expect)(statements).to.be.lengthOf(1);
114
- (0, chai_config_spec_1.expect)(statements[0].range).deep.include(vscode_languageserver_1.Range.create(0, 0, 0, 12));
115
- });
116
- });
117
- //# sourceMappingURL=Increment.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Increment.spec.js","sourceRoot":"","sources":["../../../../src/parser/tests/statement/Increment.spec.ts"],"names":[],"mappings":"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"}
@@ -1,102 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const testHelpers_spec_1 = require("../../../testHelpers.spec");
4
- const testHelpers_spec_2 = require("../../../testHelpers.spec");
5
- const Program_1 = require("../../../Program");
6
- describe('InterfaceStatement', () => {
7
- let program;
8
- const testTranspile = (0, testHelpers_spec_1.getTestTranspile)(() => [program, testHelpers_spec_2.rootDir]);
9
- const testGetTypedef = (0, testHelpers_spec_1.getTestGetTypedef)(() => [program, testHelpers_spec_2.rootDir]);
10
- beforeEach(() => {
11
- program = new Program_1.Program({
12
- rootDir: testHelpers_spec_2.rootDir
13
- });
14
- });
15
- it('allows strange keywords as property names', () => {
16
- testGetTypedef(`
17
- interface Person
18
- public as string
19
- protected as string
20
- private as string
21
- sub as string
22
- function as string
23
- interface as string
24
- endInterface as string
25
- end interface
26
- `, undefined, undefined, undefined, true);
27
- });
28
- it('allows strange keywords as method names', () => {
29
- testGetTypedef(`
30
- interface Person
31
- sub public() as string
32
- sub protected() as string
33
- sub private() as string
34
- sub sub() as string
35
- sub function() as string
36
- sub interface() as string
37
- sub endInterface() as string
38
- end interface
39
- `, undefined, undefined, undefined, true);
40
- });
41
- it('includes comments', () => {
42
- testGetTypedef(`
43
- interface Person
44
- 'some comment
45
- sub someFunc() as string
46
- end interface
47
- `, undefined, undefined, undefined, true);
48
- });
49
- it('includes annotations', () => {
50
- testGetTypedef(`
51
- @IFace
52
- interface Person
53
- @Method
54
- sub someFunc() as string
55
- @Field
56
- someField as string
57
- end interface
58
- `, undefined, undefined, undefined, true);
59
- });
60
- it('allows declaring multiple interfaces in a file', () => {
61
- program.setFile('source/interfaces.bs', `
62
- interface Iface1
63
- name as dynamic
64
- end interface
65
- interface IFace2
66
- prop as dynamic
67
- end interface
68
- `);
69
- program.validate();
70
- (0, testHelpers_spec_1.expectZeroDiagnostics)(program);
71
- });
72
- it('allows comments after an interface', () => {
73
- testTranspile(`
74
- interface Iface1
75
- name as dynamic
76
- end interface
77
- 'this comment was throwing exception during transpile
78
- interface IFace2
79
- prop as dynamic
80
- end interface
81
- `, `
82
- 'this comment was throwing exception during transpile
83
- `);
84
- });
85
- it('allows parameters in interface method signatures', () => {
86
- testGetTypedef(`
87
- interface Person
88
- sub someFunc(name as string, age as integer) as string
89
- someField as string
90
- end interface
91
- `, undefined, undefined, undefined, true);
92
- });
93
- it('supports empty interfaces', () => {
94
- const file = program.setFile('source/main.bs', `
95
- interface SomeInterface
96
- end interface
97
- `);
98
- program.validate();
99
- (0, testHelpers_spec_1.expectZeroDiagnostics)(file);
100
- });
101
- });
102
- //# sourceMappingURL=InterfaceStatement.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InterfaceStatement.spec.js","sourceRoot":"","sources":["../../../../src/parser/tests/statement/InterfaceStatement.spec.ts"],"names":[],"mappings":";;AAAA,gEAAuG;AACvG,gEAAoD;AACpD,8CAA2C;AAE3C,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAChC,IAAI,OAAgB,CAAC;IACrB,MAAM,aAAa,GAAG,IAAA,mCAAgB,EAAC,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,0BAAO,CAAC,CAAC,CAAC;IACjE,MAAM,cAAc,GAAG,IAAA,oCAAiB,EAAC,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,0BAAO,CAAC,CAAC,CAAC;IACnE,UAAU,CAAC,GAAG,EAAE;QACZ,OAAO,GAAG,IAAI,iBAAO,CAAC;YAClB,OAAO,EAAE,0BAAO;SACnB,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACjD,cAAc,CAAC;;;;;;;;;;SAUd,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QAC/C,cAAc,CAAC;;;;;;;;;;SAUd,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACzB,cAAc,CAAC;;;;;SAKd,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC5B,cAAc,CAAC;;;;;;;;SAQd,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACtD,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE;;;;;;;SAOvC,CAAC,CAAC;QACH,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnB,IAAA,wCAAqB,EAAC,OAAO,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC1C,aAAa,CAAC;;;;;;;;SAQb,EAAE;;SAEF,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QACxD,cAAc,CAAC;;;;;SAKd,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACjC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE;;;SAG9C,CAAC,CAAC;QACH,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnB,IAAA,wCAAqB,EAAC,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1,74 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const chai_config_spec_1 = require("../../../chai-config.spec");
4
- const Parser_1 = require("../../Parser");
5
- const Lexer_1 = require("../../../lexer/Lexer");
6
- const Statement_1 = require("../../Statement");
7
- describe('parser library statements', () => {
8
- it('supports library statements at top of file', () => {
9
- const { tokens } = Lexer_1.Lexer.scan(`
10
- Library "v30/bslCore.brs"
11
- sub main()
12
- end sub
13
- `);
14
- const { diagnostics } = Parser_1.Parser.parse(tokens);
15
- (0, chai_config_spec_1.expect)(diagnostics).to.be.lengthOf(0);
16
- });
17
- it('supports multiple library statements separated by colon', () => {
18
- const { tokens } = Lexer_1.Lexer.scan(`
19
- Library "v30/bslCore.brs" : Library "v30/bslCore.brs"
20
- sub main()
21
- end sub
22
- `);
23
- const { diagnostics } = Parser_1.Parser.parse(tokens);
24
- (0, chai_config_spec_1.expect)(diagnostics).to.be.lengthOf(0);
25
- });
26
- it('still parses entire file after invalid library statement', () => {
27
- const { tokens } = Lexer_1.Lexer.scan(`
28
- library cat dog mouse
29
- sub main()
30
- end sub
31
- `);
32
- const { diagnostics } = Parser_1.Parser.parse(tokens);
33
- (0, chai_config_spec_1.expect)(diagnostics.length).to.be.greaterThan(0);
34
- });
35
- it('does not prevent usage of `library` as varible name', () => {
36
- const { tokens } = Lexer_1.Lexer.scan(`
37
- sub main()
38
- library = "Gotham City Library"
39
- end sub
40
- `);
41
- const { statements, diagnostics } = Parser_1.Parser.parse(tokens);
42
- //make sure the assignment is present in the function body
43
- let assignment = statements[0].func.body.statements[0];
44
- (0, chai_config_spec_1.expect)(diagnostics).to.be.lengthOf(0);
45
- (0, chai_config_spec_1.expect)(assignment).to.be.instanceOf(Statement_1.AssignmentStatement);
46
- (0, chai_config_spec_1.expect)(assignment.name.text).to.equal('library');
47
- });
48
- it('does not prevent usage of `library` as object property name', () => {
49
- const { tokens } = Lexer_1.Lexer.scan(`
50
- sub main()
51
- buildings = {
52
- library: "Gotham City Library"
53
- }
54
- end sub
55
- `);
56
- const { statements, diagnostics } = Parser_1.Parser.parse(tokens);
57
- //make sure the assignment is present in the function body
58
- (0, chai_config_spec_1.expect)(statements[0].func.body.statements[0].value.elements[0].keyToken.text).to.equal('library');
59
- (0, chai_config_spec_1.expect)(diagnostics).to.be.lengthOf(0);
60
- });
61
- it('parses rest of file with ONLY the library keyword present at root level', () => {
62
- const { tokens } = Lexer_1.Lexer.scan(`
63
- library
64
- sub main()
65
- library = "Your Library"
66
- end sub
67
- `);
68
- const { statements, diagnostics } = Parser_1.Parser.parse(tokens);
69
- (0, chai_config_spec_1.expect)(diagnostics).to.be.lengthOf(1);
70
- //function statement should still exist
71
- (0, chai_config_spec_1.expect)(statements[statements.length - 1]).to.be.instanceOf(Statement_1.FunctionStatement);
72
- });
73
- });
74
- //# sourceMappingURL=LibraryStatement.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LibraryStatement.spec.js","sourceRoot":"","sources":["../../../../src/parser/tests/statement/LibraryStatement.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,335 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const chai_config_spec_1 = require("../../../chai-config.spec");
4
- const Parser_1 = require("../../Parser");
5
- const Lexer_1 = require("../../../lexer/Lexer");
6
- const TokenKind_1 = require("../../../lexer/TokenKind");
7
- const vscode_languageserver_1 = require("vscode-languageserver");
8
- const testHelpers_spec_1 = require("../../../testHelpers.spec");
9
- describe('parser', () => {
10
- describe('`end` keyword', () => {
11
- it('does not produce diagnostics', () => {
12
- var _a;
13
- let { tokens } = Lexer_1.Lexer.scan(`
14
- sub Main()
15
- end
16
- end sub
17
- `);
18
- let { diagnostics } = Parser_1.Parser.parse(tokens);
19
- (0, chai_config_spec_1.expect)((_a = diagnostics[0]) === null || _a === void 0 ? void 0 : _a.message).to.not.exist;
20
- });
21
- it('can be used as a property name on objects', () => {
22
- let { tokens } = Lexer_1.Lexer.scan(`
23
- sub Main()
24
- person = {
25
- end: true
26
- }
27
- end sub
28
- `);
29
- let { diagnostics } = Parser_1.Parser.parse(tokens);
30
- (0, chai_config_spec_1.expect)(diagnostics).to.be.lengthOf(0);
31
- });
32
- it('is not allowed as a standalone variable', () => {
33
- //this test depends on token locations, so use the lexer to generate those locations.
34
- let { tokens } = Lexer_1.Lexer.scan(`sub Main()\n else = true\nend sub`);
35
- let { diagnostics } = Parser_1.Parser.parse(tokens);
36
- (0, chai_config_spec_1.expect)(diagnostics).to.be.lengthOf(1);
37
- //specifically check for the error location, because the identifier location was wrong in the past
38
- (0, chai_config_spec_1.expect)(diagnostics[0].range).to.deep.include(vscode_languageserver_1.Range.create(1, 4, 1, 8));
39
- });
40
- });
41
- it('certain reserved words are allowed as local var identifiers', () => {
42
- let { tokens } = Lexer_1.Lexer.scan(`
43
- sub Main()
44
- endfor = true
45
- double = true
46
- exitfor = true
47
- float = true
48
- foreach = true
49
- integer = true
50
- longinteger = true
51
- string = true
52
- end sub
53
- `);
54
- let { diagnostics } = Parser_1.Parser.parse(tokens);
55
- (0, chai_config_spec_1.expect)(diagnostics).to.be.lengthOf(0);
56
- });
57
- it('most reserved words are not allowed as local var identifiers', () => {
58
- let statementList = [];
59
- [...TokenKind_1.DisallowedLocalIdentifiersText].filter(x => x === 'if').forEach((disallowedIdentifier) => {
60
- //use the lexer to generate tokens because there are many different TokenKind types represented in this list
61
- let { tokens } = Lexer_1.Lexer.scan(`
62
- sub main()
63
- ${disallowedIdentifier} = true
64
- end sub
65
- `);
66
- let { statements, diagnostics } = Parser_1.Parser.parse(tokens);
67
- if (diagnostics.length === 0) {
68
- console.log(TokenKind_1.DisallowedLocalIdentifiersText);
69
- throw new Error(`'${disallowedIdentifier}' cannot be used as an identifier, but was not detected as an error`);
70
- }
71
- statementList.push(statements);
72
- });
73
- });
74
- it('allows certain TokenKinds to be treated as local variables', () => {
75
- //a few additional keywords that we don't have tokenKinds for
76
- (0, testHelpers_spec_1.expectZeroDiagnostics)(Parser_1.Parser.parse(`
77
- sub main()
78
- Void = true
79
- Number = true
80
- Boolean = true
81
- Integer = true
82
- LongInteger = true
83
- Float = true
84
- Double = true
85
- String = true
86
- Object = true
87
- Interface = true
88
- Dynamic = true
89
- Class = true
90
- Namespace = true
91
- end sub
92
- `));
93
- });
94
- it('allows certain TokenKinds as object properties', () => {
95
- let kinds = [
96
- TokenKind_1.TokenKind.As,
97
- TokenKind_1.TokenKind.And,
98
- TokenKind_1.TokenKind.Box,
99
- TokenKind_1.TokenKind.CreateObject,
100
- TokenKind_1.TokenKind.Dim,
101
- TokenKind_1.TokenKind.Then,
102
- TokenKind_1.TokenKind.Else,
103
- TokenKind_1.TokenKind.End,
104
- TokenKind_1.TokenKind.EndFunction,
105
- TokenKind_1.TokenKind.EndFor,
106
- TokenKind_1.TokenKind.EndIf,
107
- TokenKind_1.TokenKind.EndSub,
108
- TokenKind_1.TokenKind.EndWhile,
109
- TokenKind_1.TokenKind.Eval,
110
- TokenKind_1.TokenKind.Exit,
111
- TokenKind_1.TokenKind.ExitFor,
112
- TokenKind_1.TokenKind.ExitWhile,
113
- TokenKind_1.TokenKind.False,
114
- TokenKind_1.TokenKind.For,
115
- TokenKind_1.TokenKind.ForEach,
116
- TokenKind_1.TokenKind.Function,
117
- TokenKind_1.TokenKind.GetGlobalAA,
118
- TokenKind_1.TokenKind.GetLastRunCompileError,
119
- TokenKind_1.TokenKind.GetLastRunRunTimeError,
120
- TokenKind_1.TokenKind.Goto,
121
- TokenKind_1.TokenKind.If,
122
- TokenKind_1.TokenKind.Invalid,
123
- TokenKind_1.TokenKind.Let,
124
- TokenKind_1.TokenKind.Next,
125
- TokenKind_1.TokenKind.Not,
126
- TokenKind_1.TokenKind.ObjFun,
127
- TokenKind_1.TokenKind.Or,
128
- TokenKind_1.TokenKind.Pos,
129
- TokenKind_1.TokenKind.Print,
130
- TokenKind_1.TokenKind.Rem,
131
- TokenKind_1.TokenKind.Return,
132
- TokenKind_1.TokenKind.Step,
133
- TokenKind_1.TokenKind.Stop,
134
- TokenKind_1.TokenKind.Sub,
135
- TokenKind_1.TokenKind.Tab,
136
- TokenKind_1.TokenKind.To,
137
- TokenKind_1.TokenKind.True,
138
- TokenKind_1.TokenKind.Type,
139
- TokenKind_1.TokenKind.While,
140
- TokenKind_1.TokenKind.Void,
141
- TokenKind_1.TokenKind.Boolean,
142
- TokenKind_1.TokenKind.Integer,
143
- TokenKind_1.TokenKind.LongInteger,
144
- TokenKind_1.TokenKind.Float,
145
- TokenKind_1.TokenKind.Double,
146
- TokenKind_1.TokenKind.String,
147
- TokenKind_1.TokenKind.Object,
148
- TokenKind_1.TokenKind.Interface,
149
- TokenKind_1.TokenKind.Dynamic,
150
- TokenKind_1.TokenKind.Void,
151
- TokenKind_1.TokenKind.As
152
- ].map(x => x.toLowerCase());
153
- for (let kind of kinds) {
154
- let { tokens } = Lexer_1.Lexer.scan(`
155
- obj = {
156
- ${kind}: true
157
- }
158
- obj.${kind} = false
159
- theValue = obj.${kind}
160
- `);
161
- let { diagnostics } = Parser_1.Parser.parse(tokens);
162
- if (diagnostics.length > 0) {
163
- throw new Error(`Using "${kind}" as object property. Expected no diagnostics, but received: ${JSON.stringify(diagnostics)}`);
164
- }
165
- (0, chai_config_spec_1.expect)(diagnostics).to.be.lengthOf(0);
166
- }
167
- });
168
- it('allows whitelisted reserved words as object properties', () => {
169
- //use the lexer to generate token list because...this list is huge.
170
- let { tokens } = Lexer_1.Lexer.scan(`
171
- sub Main()
172
- person = {}
173
- person.and = true
174
- person.box = true
175
- person.createobject = true
176
- person.dim = true
177
- person.double = true
178
- person.each = true
179
- person.else = true
180
- person.elseif = true
181
- person.end = true
182
- person.endfor = true
183
- person.endfunction = true
184
- person.endif = true
185
- person.endsub = true
186
- person.endwhile = true
187
- person.eval = true
188
- person.exit = true
189
- person.exitfor = true
190
- person.exitwhile = true
191
- person.false = true
192
- person.float = true
193
- person.for = true
194
- person.foreach = true
195
- person.function = true
196
- person.getglobalaa = true
197
- person.getlastruncompileerror = true
198
- person.getlastrunruntimeerror = true
199
- person.goto = true
200
- person.if = true
201
- person.integer = true
202
- person.invalid = true
203
- person.let = true
204
- person.line_num = true
205
- person.longinteger = true
206
- person.next = true
207
- person.not = true
208
- person.objfun = true
209
- person.or = true
210
- person.pos = true
211
- person.print = true
212
- 'this one is broken
213
- 'person.rem = true
214
- person.return = true
215
- person.run = true
216
- person.step = true
217
- person.stop = true
218
- person.string = true
219
- person.sub = true
220
- person.tab = true
221
- person.then = true
222
- person.to = true
223
- person.true = true
224
- person.type = true
225
- person.while = true
226
- end sub
227
- `);
228
- let { diagnostics } = Parser_1.Parser.parse(tokens);
229
- (0, chai_config_spec_1.expect)(JSON.stringify(diagnostics[0])).not.to.exist;
230
- (0, chai_config_spec_1.expect)(diagnostics).to.be.lengthOf(0);
231
- });
232
- it('allows rem as a property name only in certain situations', () => {
233
- let { tokens } = Lexer_1.Lexer.scan(`
234
- function main ()
235
- person = {
236
- rem: 1
237
- }
238
- person = {
239
- name: "bob": rem: 2
240
- }
241
- person = {
242
- rem: 3: name: "bob"
243
- }
244
- person.rem = 4
245
- end function
246
- `);
247
- let { diagnostics, statements } = Parser_1.Parser.parse(tokens);
248
- (0, chai_config_spec_1.expect)(diagnostics).to.exist.and.be.lengthOf(0, 'Error count should be 0');
249
- (0, chai_config_spec_1.expect)(statements[0].func.body.statements[0].value.elements[0].text).to.equal('rem: 1');
250
- (0, chai_config_spec_1.expect)(statements[0].func.body.statements[1].value.elements[1].text).to.equal('rem: 2');
251
- (0, chai_config_spec_1.expect)(statements[0].func.body.statements[2].value.elements[0].text).to.equal('rem: 3: name: "bob"');
252
- (0, chai_config_spec_1.expect)(statements[0].func.body.statements[3].name.text).to.equal('rem');
253
- });
254
- it('handles quoted AA keys', () => {
255
- var _a;
256
- let { tokens } = Lexer_1.Lexer.scan(`
257
- function main(arg as string)
258
- twoDimensional = {
259
- "has-second-layer": true,
260
- level: 1
261
- secondLayer: {
262
- level: 2
263
- }
264
- }
265
- end function
266
- `);
267
- let { statements, diagnostics } = Parser_1.Parser.parse(tokens);
268
- let element = statements[0].func.body.statements[0].value.elements[0];
269
- (0, chai_config_spec_1.expect)((_a = diagnostics[0]) === null || _a === void 0 ? void 0 : _a.message).not.to.exist;
270
- (0, chai_config_spec_1.expect)(element.keyToken.text).to.equal('"has-second-layer"');
271
- });
272
- it('extracts property names for completion', () => {
273
- const { tokens } = Lexer_1.Lexer.scan(`
274
- function main(arg as string)
275
- aa1 = {
276
- "sprop1": 0,
277
- prop1: 1
278
- prop2: {
279
- prop3: 2
280
- }
281
- }
282
- aa2 = {
283
- prop4: {
284
- prop5: 5,
285
- "sprop2": 0,
286
- prop6: 6
287
- },
288
- prop7: 7
289
- }
290
- calling({
291
- prop8: 8,
292
- prop9: 9
293
- })
294
- aa1.field1 = 1
295
- aa1.field2.field3 = 2
296
- calling(aa2.field4, 3 + aa2.field5.field6)
297
- end function
298
- `);
299
- const expected = [
300
- 'field1', 'field2', 'field3', 'field4', 'field5', 'field6',
301
- 'prop1', 'prop2', 'prop3', 'prop4', 'prop5', 'prop6', 'prop7', 'prop8', 'prop9'
302
- ];
303
- const parser = Parser_1.Parser.parse(tokens);
304
- const { propertyHints: initialHints } = parser.references;
305
- (0, chai_config_spec_1.expect)(Object.keys(initialHints).sort()).to.deep.equal(expected, 'Initial hints');
306
- parser.invalidateReferences();
307
- const { propertyHints: refreshedHints } = parser.references;
308
- (0, chai_config_spec_1.expect)(Object.keys(refreshedHints).sort()).to.deep.equal(expected, 'Refreshed hints');
309
- });
310
- it('extracts property names matching JavaScript reserved names', () => {
311
- const { tokens } = Lexer_1.Lexer.scan(`
312
- function main(arg as string)
313
- aa1 = {
314
- "constructor": 0,
315
- constructor: 1
316
- valueOf: {
317
- toString: 2
318
- }
319
- }
320
- aa1.constructor = 1
321
- aa1.valueOf.toString = 2
322
- end function
323
- `);
324
- const expected = [
325
- 'constructor', 'tostring', 'valueof'
326
- ];
327
- const parser = Parser_1.Parser.parse(tokens);
328
- const { propertyHints: initialHints } = parser.references;
329
- (0, chai_config_spec_1.expect)(Object.keys(initialHints).sort()).to.deep.equal(expected, 'Initial hints');
330
- parser.invalidateReferences();
331
- const { propertyHints: refreshedHints } = parser.references;
332
- (0, chai_config_spec_1.expect)(Object.keys(refreshedHints).sort()).to.deep.equal(expected, 'Refreshed hints');
333
- });
334
- });
335
- //# sourceMappingURL=Misc.spec.js.map