brighterscript 1.0.0-alpha.50 → 1.0.0-alpha.51

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 (482) hide show
  1. package/README.md +3 -0
  2. package/bsconfig.schema.json +75 -0
  3. package/dist/BsConfig.d.ts +90 -5
  4. package/dist/CodeActionUtil.d.ts +17 -0
  5. package/dist/CodeActionUtil.js.map +1 -1
  6. package/dist/CommentFlagProcessor.d.ts +16 -12
  7. package/dist/CommentFlagProcessor.js +141 -59
  8. package/dist/CommentFlagProcessor.js.map +1 -1
  9. package/dist/CrossScopeValidator.js +13 -5
  10. package/dist/CrossScopeValidator.js.map +1 -1
  11. package/dist/DiagnosticManager.d.ts +1 -0
  12. package/dist/DiagnosticManager.js +25 -9
  13. package/dist/DiagnosticManager.js.map +1 -1
  14. package/dist/DiagnosticMessages.d.ts +61 -17
  15. package/dist/DiagnosticMessages.js +78 -24
  16. package/dist/DiagnosticMessages.js.map +1 -1
  17. package/dist/LanguageServer.d.ts +39 -2
  18. package/dist/LanguageServer.js +142 -5
  19. package/dist/LanguageServer.js.map +1 -1
  20. package/dist/Program.d.ts +62 -1
  21. package/dist/Program.js +185 -13
  22. package/dist/Program.js.map +1 -1
  23. package/dist/ProgramBuilder.d.ts +1 -8
  24. package/dist/ProgramBuilder.js +31 -11
  25. package/dist/ProgramBuilder.js.map +1 -1
  26. package/dist/Scope.d.ts +87 -6
  27. package/dist/Scope.js +76 -31
  28. package/dist/Scope.js.map +1 -1
  29. package/dist/ScopeNamespaceLookup.d.ts +73 -0
  30. package/dist/ScopeNamespaceLookup.js +242 -0
  31. package/dist/ScopeNamespaceLookup.js.map +1 -0
  32. package/dist/SymbolTable.d.ts +9 -2
  33. package/dist/SymbolTable.js +24 -14
  34. package/dist/SymbolTable.js.map +1 -1
  35. package/dist/astUtils/CachedLookups.js +3 -0
  36. package/dist/astUtils/CachedLookups.js.map +1 -1
  37. package/dist/astUtils/reflection.d.ts +4 -1
  38. package/dist/astUtils/reflection.js +24 -4
  39. package/dist/astUtils/reflection.js.map +1 -1
  40. package/dist/astUtils/visitors.d.ts +2 -1
  41. package/dist/astUtils/visitors.js.map +1 -1
  42. package/dist/bscPlugin/BscPlugin.d.ts +4 -2
  43. package/dist/bscPlugin/BscPlugin.js +10 -2
  44. package/dist/bscPlugin/BscPlugin.js.map +1 -1
  45. package/dist/bscPlugin/CallExpressionInfo.d.ts +1 -1
  46. package/dist/bscPlugin/CallExpressionInfo.js +1 -2
  47. package/dist/bscPlugin/CallExpressionInfo.js.map +1 -1
  48. package/dist/bscPlugin/FileWriter.d.ts +13 -0
  49. package/dist/bscPlugin/FileWriter.js +56 -1
  50. package/dist/bscPlugin/FileWriter.js.map +1 -1
  51. package/dist/bscPlugin/codeActions/CodeActionsProcessor.d.ts +106 -5
  52. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +630 -126
  53. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
  54. package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.d.ts +17 -0
  55. package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.js +66 -0
  56. package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.js.map +1 -0
  57. package/dist/bscPlugin/codeActions/codeActionHelpers.d.ts +18 -0
  58. package/dist/bscPlugin/codeActions/codeActionHelpers.js +31 -0
  59. package/dist/bscPlugin/codeActions/codeActionHelpers.js.map +1 -0
  60. package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +1 -1
  61. package/dist/bscPlugin/completions/CompletionsProcessor.js +5 -5
  62. package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
  63. package/dist/bscPlugin/definition/DefinitionProvider.js +8 -0
  64. package/dist/bscPlugin/definition/DefinitionProvider.js.map +1 -1
  65. package/dist/bscPlugin/hover/HoverProcessor.js +11 -3
  66. package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
  67. package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.d.ts +7 -0
  68. package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.js +77 -0
  69. package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.js.map +1 -0
  70. package/dist/bscPlugin/serialize/FileSerializer.d.ts +1 -1
  71. package/dist/bscPlugin/serialize/FileSerializer.js +12 -7
  72. package/dist/bscPlugin/serialize/FileSerializer.js.map +1 -1
  73. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.d.ts +7 -0
  74. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js +87 -1
  75. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +1 -1
  76. package/dist/bscPlugin/validation/BrsFileValidator.d.ts +14 -0
  77. package/dist/bscPlugin/validation/BrsFileValidator.js +97 -21
  78. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
  79. package/dist/bscPlugin/validation/ScopeValidator.d.ts +17 -0
  80. package/dist/bscPlugin/validation/ScopeValidator.js +162 -4
  81. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
  82. package/dist/bscPlugin/validation/XmlFileValidator.js +14 -0
  83. package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -1
  84. package/dist/cli.js +13 -0
  85. package/dist/cli.js.map +1 -1
  86. package/dist/diagnosticUtils.d.ts +51 -1
  87. package/dist/diagnosticUtils.js +222 -1
  88. package/dist/diagnosticUtils.js.map +1 -1
  89. package/dist/files/BrsFile.d.ts +18 -2
  90. package/dist/files/BrsFile.js +87 -6
  91. package/dist/files/BrsFile.js.map +1 -1
  92. package/dist/files/XmlFile.js +2 -1
  93. package/dist/files/XmlFile.js.map +1 -1
  94. package/dist/interfaces.d.ts +68 -23
  95. package/dist/interfaces.js.map +1 -1
  96. package/dist/lexer/Lexer.js +4 -5
  97. package/dist/lexer/Lexer.js.map +1 -1
  98. package/dist/lexer/Token.d.ts +1 -1
  99. package/dist/lexer/TokenKind.d.ts +8 -0
  100. package/dist/lexer/TokenKind.js +21 -1
  101. package/dist/lexer/TokenKind.js.map +1 -1
  102. package/dist/lsp/LspProject.d.ts +49 -1
  103. package/dist/lsp/Project.d.ts +33 -1
  104. package/dist/lsp/Project.js +129 -4
  105. package/dist/lsp/Project.js.map +1 -1
  106. package/dist/lsp/ProjectManager.d.ts +48 -2
  107. package/dist/lsp/ProjectManager.js +152 -9
  108. package/dist/lsp/ProjectManager.js.map +1 -1
  109. package/dist/lsp/worker/WorkerThreadProject.d.ts +27 -2
  110. package/dist/lsp/worker/WorkerThreadProject.js +16 -0
  111. package/dist/lsp/worker/WorkerThreadProject.js.map +1 -1
  112. package/dist/parser/AstNode.d.ts +3 -1
  113. package/dist/parser/AstNode.js +2 -0
  114. package/dist/parser/AstNode.js.map +1 -1
  115. package/dist/parser/Expression.d.ts +54 -5
  116. package/dist/parser/Expression.js +112 -7
  117. package/dist/parser/Expression.js.map +1 -1
  118. package/dist/parser/Parser.d.ts +24 -1
  119. package/dist/parser/Parser.js +180 -41
  120. package/dist/parser/Parser.js.map +1 -1
  121. package/dist/parser/SGParser.d.ts +1 -0
  122. package/dist/parser/SGParser.js +9 -0
  123. package/dist/parser/SGParser.js.map +1 -1
  124. package/dist/parser/Statement.d.ts +6 -1
  125. package/dist/parser/Statement.js +22 -14
  126. package/dist/parser/Statement.js.map +1 -1
  127. package/dist/parser/TranspileState.d.ts +4 -2
  128. package/dist/parser/TranspileState.js +10 -4
  129. package/dist/parser/TranspileState.js.map +1 -1
  130. package/dist/roku-types/data.json +210 -3
  131. package/dist/types/ArrayType.js +6 -1
  132. package/dist/types/ArrayType.js.map +1 -1
  133. package/dist/types/BooleanType.js +1 -1
  134. package/dist/types/BooleanType.js.map +1 -1
  135. package/dist/types/CallFuncableType.d.ts +1 -1
  136. package/dist/types/ClassType.js +3 -0
  137. package/dist/types/ClassType.js.map +1 -1
  138. package/dist/types/ComponentType.js +3 -0
  139. package/dist/types/ComponentType.js.map +1 -1
  140. package/dist/types/EnumType.js +3 -0
  141. package/dist/types/EnumType.js.map +1 -1
  142. package/dist/types/IntersectionType.js +3 -0
  143. package/dist/types/IntersectionType.js.map +1 -1
  144. package/dist/types/ReferenceType.js +6 -0
  145. package/dist/types/ReferenceType.js.map +1 -1
  146. package/dist/types/TypeStatementType.d.ts +1 -0
  147. package/dist/types/TypeStatementType.js +12 -1
  148. package/dist/types/TypeStatementType.js.map +1 -1
  149. package/dist/types/TypedFunctionType.js +20 -10
  150. package/dist/types/TypedFunctionType.js.map +1 -1
  151. package/dist/types/UnionType.js +3 -0
  152. package/dist/types/UnionType.js.map +1 -1
  153. package/dist/types/helpers.js +6 -0
  154. package/dist/types/helpers.js.map +1 -1
  155. package/dist/util.d.ts +42 -3
  156. package/dist/util.js +131 -7
  157. package/dist/util.js.map +1 -1
  158. package/package.json +24 -26
  159. package/dist/astUtils/CachedLookups.spec.d.ts +0 -1
  160. package/dist/astUtils/CachedLookups.spec.js +0 -39
  161. package/dist/astUtils/CachedLookups.spec.js.map +0 -1
  162. package/dist/astUtils/Editor.spec.d.ts +0 -1
  163. package/dist/astUtils/Editor.spec.js +0 -258
  164. package/dist/astUtils/Editor.spec.js.map +0 -1
  165. package/dist/astUtils/creators.spec.d.ts +0 -1
  166. package/dist/astUtils/creators.spec.js +0 -21
  167. package/dist/astUtils/creators.spec.js.map +0 -1
  168. package/dist/astUtils/reflection.spec.d.ts +0 -1
  169. package/dist/astUtils/reflection.spec.js +0 -392
  170. package/dist/astUtils/reflection.spec.js.map +0 -1
  171. package/dist/astUtils/stackedVisitor.spec.d.ts +0 -1
  172. package/dist/astUtils/stackedVisitor.spec.js +0 -79
  173. package/dist/astUtils/stackedVisitor.spec.js.map +0 -1
  174. package/dist/astUtils/visitors.spec.d.ts +0 -1
  175. package/dist/astUtils/visitors.spec.js +0 -1432
  176. package/dist/astUtils/visitors.spec.js.map +0 -1
  177. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.d.ts +0 -1
  178. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +0 -311
  179. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +0 -1
  180. package/dist/bscPlugin/completions/CompletionsProcessor.spec.d.ts +0 -1
  181. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +0 -2512
  182. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +0 -1
  183. package/dist/bscPlugin/definition/DefinitionProvider.spec.d.ts +0 -1
  184. package/dist/bscPlugin/definition/DefinitionProvider.spec.js +0 -87
  185. package/dist/bscPlugin/definition/DefinitionProvider.spec.js.map +0 -1
  186. package/dist/bscPlugin/hover/HoverProcessor.spec.d.ts +0 -1
  187. package/dist/bscPlugin/hover/HoverProcessor.spec.js +0 -991
  188. package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +0 -1
  189. package/dist/bscPlugin/references/ReferencesProvider.spec.d.ts +0 -1
  190. package/dist/bscPlugin/references/ReferencesProvider.spec.js +0 -51
  191. package/dist/bscPlugin/references/ReferencesProvider.spec.js.map +0 -1
  192. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.d.ts +0 -1
  193. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +0 -564
  194. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +0 -1
  195. package/dist/bscPlugin/serialize/BslibInjector.spec.d.ts +0 -1
  196. package/dist/bscPlugin/serialize/BslibInjector.spec.js +0 -33
  197. package/dist/bscPlugin/serialize/BslibInjector.spec.js.map +0 -1
  198. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.d.ts +0 -1
  199. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.js +0 -291
  200. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.js.map +0 -1
  201. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.d.ts +0 -1
  202. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.js +0 -245
  203. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.js.map +0 -1
  204. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.d.ts +0 -1
  205. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js +0 -75
  206. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js.map +0 -1
  207. package/dist/bscPlugin/validation/BrsFileValidator.spec.d.ts +0 -1
  208. package/dist/bscPlugin/validation/BrsFileValidator.spec.js +0 -1517
  209. package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +0 -1
  210. package/dist/bscPlugin/validation/ScopeValidator.spec.d.ts +0 -1
  211. package/dist/bscPlugin/validation/ScopeValidator.spec.js +0 -6135
  212. package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +0 -1
  213. package/dist/common/Sequencer.spec.d.ts +0 -1
  214. package/dist/common/Sequencer.spec.js +0 -75
  215. package/dist/common/Sequencer.spec.js.map +0 -1
  216. package/dist/files/BrsFile.Class.spec.d.ts +0 -1
  217. package/dist/files/BrsFile.Class.spec.js +0 -2035
  218. package/dist/files/BrsFile.Class.spec.js.map +0 -1
  219. package/dist/files/BrsFile.spec.d.ts +0 -1
  220. package/dist/files/BrsFile.spec.js +0 -5848
  221. package/dist/files/BrsFile.spec.js.map +0 -1
  222. package/dist/files/LazyFileData.spec.d.ts +0 -1
  223. package/dist/files/LazyFileData.spec.js +0 -27
  224. package/dist/files/LazyFileData.spec.js.map +0 -1
  225. package/dist/files/XmlFile.spec.d.ts +0 -1
  226. package/dist/files/XmlFile.spec.js +0 -1173
  227. package/dist/files/XmlFile.spec.js.map +0 -1
  228. package/dist/files/tests/imports.spec.d.ts +0 -1
  229. package/dist/files/tests/imports.spec.js +0 -251
  230. package/dist/files/tests/imports.spec.js.map +0 -1
  231. package/dist/files/tests/optionalChaning.spec.d.ts +0 -1
  232. package/dist/files/tests/optionalChaning.spec.js +0 -152
  233. package/dist/files/tests/optionalChaning.spec.js.map +0 -1
  234. package/dist/lexer/Character.spec.d.ts +0 -1
  235. package/dist/lexer/Character.spec.js +0 -27
  236. package/dist/lexer/Character.spec.js.map +0 -1
  237. package/dist/lexer/Lexer.spec.d.ts +0 -1
  238. package/dist/lexer/Lexer.spec.js +0 -1345
  239. package/dist/lexer/Lexer.spec.js.map +0 -1
  240. package/dist/lsp/ActionQueue.spec.d.ts +0 -1
  241. package/dist/lsp/ActionQueue.spec.js +0 -80
  242. package/dist/lsp/ActionQueue.spec.js.map +0 -1
  243. package/dist/lsp/DocumentManager.spec.d.ts +0 -1
  244. package/dist/lsp/DocumentManager.spec.js +0 -103
  245. package/dist/lsp/DocumentManager.spec.js.map +0 -1
  246. package/dist/lsp/PathFilterer.spec.d.ts +0 -1
  247. package/dist/lsp/PathFilterer.spec.js +0 -182
  248. package/dist/lsp/PathFilterer.spec.js.map +0 -1
  249. package/dist/lsp/Project.spec.d.ts +0 -1
  250. package/dist/lsp/Project.spec.js +0 -267
  251. package/dist/lsp/Project.spec.js.map +0 -1
  252. package/dist/lsp/ProjectManager.spec.d.ts +0 -1
  253. package/dist/lsp/ProjectManager.spec.js +0 -913
  254. package/dist/lsp/ProjectManager.spec.js.map +0 -1
  255. package/dist/lsp/worker/MessageHandler.spec.d.ts +0 -1
  256. package/dist/lsp/worker/MessageHandler.spec.js +0 -64
  257. package/dist/lsp/worker/MessageHandler.spec.js.map +0 -1
  258. package/dist/lsp/worker/WorkerPool.spec.d.ts +0 -1
  259. package/dist/lsp/worker/WorkerPool.spec.js +0 -59
  260. package/dist/lsp/worker/WorkerPool.spec.js.map +0 -1
  261. package/dist/lsp/worker/WorkerThreadProject.spec.d.ts +0 -2
  262. package/dist/lsp/worker/WorkerThreadProject.spec.js +0 -71
  263. package/dist/lsp/worker/WorkerThreadProject.spec.js.map +0 -1
  264. package/dist/parser/AstNode.spec.d.ts +0 -1
  265. package/dist/parser/AstNode.spec.js +0 -1455
  266. package/dist/parser/AstNode.spec.js.map +0 -1
  267. package/dist/parser/BrightScriptDocParser.spec.d.ts +0 -1
  268. package/dist/parser/BrightScriptDocParser.spec.js +0 -310
  269. package/dist/parser/BrightScriptDocParser.spec.js.map +0 -1
  270. package/dist/parser/Expression.spec.d.ts +0 -1
  271. package/dist/parser/Expression.spec.js +0 -40
  272. package/dist/parser/Expression.spec.js.map +0 -1
  273. package/dist/parser/Parser.Class.spec.d.ts +0 -1
  274. package/dist/parser/Parser.Class.spec.js +0 -520
  275. package/dist/parser/Parser.Class.spec.js.map +0 -1
  276. package/dist/parser/Parser.spec.d.ts +0 -6
  277. package/dist/parser/Parser.spec.js +0 -2802
  278. package/dist/parser/Parser.spec.js.map +0 -1
  279. package/dist/parser/SGParser.spec.d.ts +0 -1
  280. package/dist/parser/SGParser.spec.js +0 -130
  281. package/dist/parser/SGParser.spec.js.map +0 -1
  282. package/dist/parser/Statement.spec.d.ts +0 -1
  283. package/dist/parser/Statement.spec.js +0 -191
  284. package/dist/parser/Statement.spec.js.map +0 -1
  285. package/dist/parser/tests/Parser.spec.d.ts +0 -12
  286. package/dist/parser/tests/Parser.spec.js +0 -29
  287. package/dist/parser/tests/Parser.spec.js.map +0 -1
  288. package/dist/parser/tests/controlFlow/For.spec.d.ts +0 -1
  289. package/dist/parser/tests/controlFlow/For.spec.js +0 -169
  290. package/dist/parser/tests/controlFlow/For.spec.js.map +0 -1
  291. package/dist/parser/tests/controlFlow/ForEach.spec.d.ts +0 -1
  292. package/dist/parser/tests/controlFlow/ForEach.spec.js +0 -140
  293. package/dist/parser/tests/controlFlow/ForEach.spec.js.map +0 -1
  294. package/dist/parser/tests/controlFlow/If.spec.d.ts +0 -1
  295. package/dist/parser/tests/controlFlow/If.spec.js +0 -694
  296. package/dist/parser/tests/controlFlow/If.spec.js.map +0 -1
  297. package/dist/parser/tests/controlFlow/While.spec.d.ts +0 -1
  298. package/dist/parser/tests/controlFlow/While.spec.js +0 -114
  299. package/dist/parser/tests/controlFlow/While.spec.js.map +0 -1
  300. package/dist/parser/tests/expression/Additive.spec.d.ts +0 -1
  301. package/dist/parser/tests/expression/Additive.spec.js +0 -107
  302. package/dist/parser/tests/expression/Additive.spec.js.map +0 -1
  303. package/dist/parser/tests/expression/ArrayLiterals.spec.d.ts +0 -1
  304. package/dist/parser/tests/expression/ArrayLiterals.spec.js +0 -304
  305. package/dist/parser/tests/expression/ArrayLiterals.spec.js.map +0 -1
  306. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.d.ts +0 -1
  307. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +0 -342
  308. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +0 -1
  309. package/dist/parser/tests/expression/Boolean.spec.d.ts +0 -1
  310. package/dist/parser/tests/expression/Boolean.spec.js +0 -90
  311. package/dist/parser/tests/expression/Boolean.spec.js.map +0 -1
  312. package/dist/parser/tests/expression/Call.spec.d.ts +0 -1
  313. package/dist/parser/tests/expression/Call.spec.js +0 -252
  314. package/dist/parser/tests/expression/Call.spec.js.map +0 -1
  315. package/dist/parser/tests/expression/Exponential.spec.d.ts +0 -1
  316. package/dist/parser/tests/expression/Exponential.spec.js +0 -37
  317. package/dist/parser/tests/expression/Exponential.spec.js.map +0 -1
  318. package/dist/parser/tests/expression/Function.spec.d.ts +0 -1
  319. package/dist/parser/tests/expression/Function.spec.js +0 -412
  320. package/dist/parser/tests/expression/Function.spec.js.map +0 -1
  321. package/dist/parser/tests/expression/Indexing.spec.d.ts +0 -1
  322. package/dist/parser/tests/expression/Indexing.spec.js +0 -302
  323. package/dist/parser/tests/expression/Indexing.spec.js.map +0 -1
  324. package/dist/parser/tests/expression/Multiplicative.spec.d.ts +0 -1
  325. package/dist/parser/tests/expression/Multiplicative.spec.js +0 -67
  326. package/dist/parser/tests/expression/Multiplicative.spec.js.map +0 -1
  327. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.d.ts +0 -1
  328. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +0 -346
  329. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +0 -1
  330. package/dist/parser/tests/expression/PrefixUnary.spec.d.ts +0 -1
  331. package/dist/parser/tests/expression/PrefixUnary.spec.js +0 -111
  332. package/dist/parser/tests/expression/PrefixUnary.spec.js.map +0 -1
  333. package/dist/parser/tests/expression/Primary.spec.d.ts +0 -1
  334. package/dist/parser/tests/expression/Primary.spec.js +0 -165
  335. package/dist/parser/tests/expression/Primary.spec.js.map +0 -1
  336. package/dist/parser/tests/expression/RegexLiteralExpression.spec.d.ts +0 -1
  337. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js +0 -171
  338. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js.map +0 -1
  339. package/dist/parser/tests/expression/Relational.spec.d.ts +0 -1
  340. package/dist/parser/tests/expression/Relational.spec.js +0 -83
  341. package/dist/parser/tests/expression/Relational.spec.js.map +0 -1
  342. package/dist/parser/tests/expression/SourceLiteralExpression.spec.d.ts +0 -1
  343. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js +0 -201
  344. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js.map +0 -1
  345. package/dist/parser/tests/expression/TemplateStringExpression.spec.d.ts +0 -1
  346. package/dist/parser/tests/expression/TemplateStringExpression.spec.js +0 -389
  347. package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +0 -1
  348. package/dist/parser/tests/expression/TernaryExpression.spec.d.ts +0 -1
  349. package/dist/parser/tests/expression/TernaryExpression.spec.js +0 -878
  350. package/dist/parser/tests/expression/TernaryExpression.spec.js.map +0 -1
  351. package/dist/parser/tests/expression/TypeExpression.spec.d.ts +0 -1
  352. package/dist/parser/tests/expression/TypeExpression.spec.js +0 -126
  353. package/dist/parser/tests/expression/TypeExpression.spec.js.map +0 -1
  354. package/dist/parser/tests/expression/UnaryExpression.spec.d.ts +0 -1
  355. package/dist/parser/tests/expression/UnaryExpression.spec.js +0 -52
  356. package/dist/parser/tests/expression/UnaryExpression.spec.js.map +0 -1
  357. package/dist/parser/tests/statement/AssignmentOperators.spec.d.ts +0 -1
  358. package/dist/parser/tests/statement/AssignmentOperators.spec.js +0 -79
  359. package/dist/parser/tests/statement/AssignmentOperators.spec.js.map +0 -1
  360. package/dist/parser/tests/statement/ConstStatement.spec.d.ts +0 -1
  361. package/dist/parser/tests/statement/ConstStatement.spec.js +0 -500
  362. package/dist/parser/tests/statement/ConstStatement.spec.js.map +0 -1
  363. package/dist/parser/tests/statement/Continue.spec.d.ts +0 -1
  364. package/dist/parser/tests/statement/Continue.spec.js +0 -119
  365. package/dist/parser/tests/statement/Continue.spec.js.map +0 -1
  366. package/dist/parser/tests/statement/Declaration.spec.d.ts +0 -1
  367. package/dist/parser/tests/statement/Declaration.spec.js +0 -114
  368. package/dist/parser/tests/statement/Declaration.spec.js.map +0 -1
  369. package/dist/parser/tests/statement/Dim.spec.d.ts +0 -1
  370. package/dist/parser/tests/statement/Dim.spec.js +0 -80
  371. package/dist/parser/tests/statement/Dim.spec.js.map +0 -1
  372. package/dist/parser/tests/statement/Enum.spec.d.ts +0 -1
  373. package/dist/parser/tests/statement/Enum.spec.js +0 -744
  374. package/dist/parser/tests/statement/Enum.spec.js.map +0 -1
  375. package/dist/parser/tests/statement/For.spec.d.ts +0 -1
  376. package/dist/parser/tests/statement/For.spec.js +0 -45
  377. package/dist/parser/tests/statement/For.spec.js.map +0 -1
  378. package/dist/parser/tests/statement/ForEach.spec.d.ts +0 -1
  379. package/dist/parser/tests/statement/ForEach.spec.js +0 -36
  380. package/dist/parser/tests/statement/ForEach.spec.js.map +0 -1
  381. package/dist/parser/tests/statement/Function.spec.d.ts +0 -1
  382. package/dist/parser/tests/statement/Function.spec.js +0 -343
  383. package/dist/parser/tests/statement/Function.spec.js.map +0 -1
  384. package/dist/parser/tests/statement/Goto.spec.d.ts +0 -1
  385. package/dist/parser/tests/statement/Goto.spec.js +0 -51
  386. package/dist/parser/tests/statement/Goto.spec.js.map +0 -1
  387. package/dist/parser/tests/statement/Increment.spec.d.ts +0 -1
  388. package/dist/parser/tests/statement/Increment.spec.js +0 -120
  389. package/dist/parser/tests/statement/Increment.spec.js.map +0 -1
  390. package/dist/parser/tests/statement/InterfaceStatement.spec.d.ts +0 -1
  391. package/dist/parser/tests/statement/InterfaceStatement.spec.js +0 -110
  392. package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +0 -1
  393. package/dist/parser/tests/statement/LibraryStatement.spec.d.ts +0 -1
  394. package/dist/parser/tests/statement/LibraryStatement.spec.js +0 -74
  395. package/dist/parser/tests/statement/LibraryStatement.spec.js.map +0 -1
  396. package/dist/parser/tests/statement/Misc.spec.d.ts +0 -1
  397. package/dist/parser/tests/statement/Misc.spec.js +0 -292
  398. package/dist/parser/tests/statement/Misc.spec.js.map +0 -1
  399. package/dist/parser/tests/statement/PrintStatement.spec.d.ts +0 -1
  400. package/dist/parser/tests/statement/PrintStatement.spec.js +0 -200
  401. package/dist/parser/tests/statement/PrintStatement.spec.js.map +0 -1
  402. package/dist/parser/tests/statement/ReturnStatement.spec.d.ts +0 -1
  403. package/dist/parser/tests/statement/ReturnStatement.spec.js +0 -97
  404. package/dist/parser/tests/statement/ReturnStatement.spec.js.map +0 -1
  405. package/dist/parser/tests/statement/Set.spec.d.ts +0 -1
  406. package/dist/parser/tests/statement/Set.spec.js +0 -232
  407. package/dist/parser/tests/statement/Set.spec.js.map +0 -1
  408. package/dist/parser/tests/statement/Stop.spec.d.ts +0 -1
  409. package/dist/parser/tests/statement/Stop.spec.js +0 -38
  410. package/dist/parser/tests/statement/Stop.spec.js.map +0 -1
  411. package/dist/parser/tests/statement/Throw.spec.d.ts +0 -1
  412. package/dist/parser/tests/statement/Throw.spec.js +0 -38
  413. package/dist/parser/tests/statement/Throw.spec.js.map +0 -1
  414. package/dist/parser/tests/statement/TryCatch.spec.d.ts +0 -1
  415. package/dist/parser/tests/statement/TryCatch.spec.js +0 -151
  416. package/dist/parser/tests/statement/TryCatch.spec.js.map +0 -1
  417. package/dist/preprocessor/Manifest.spec.d.ts +0 -1
  418. package/dist/preprocessor/Manifest.spec.js +0 -80
  419. package/dist/preprocessor/Manifest.spec.js.map +0 -1
  420. package/dist/types/ArrayType.spec.d.ts +0 -1
  421. package/dist/types/ArrayType.spec.js +0 -58
  422. package/dist/types/ArrayType.spec.js.map +0 -1
  423. package/dist/types/BooleanType.spec.d.ts +0 -1
  424. package/dist/types/BooleanType.spec.js +0 -18
  425. package/dist/types/BooleanType.spec.js.map +0 -1
  426. package/dist/types/BuiltInInterfaceAdder.spec.d.ts +0 -1
  427. package/dist/types/BuiltInInterfaceAdder.spec.js +0 -115
  428. package/dist/types/BuiltInInterfaceAdder.spec.js.map +0 -1
  429. package/dist/types/ClassType.spec.d.ts +0 -1
  430. package/dist/types/ClassType.spec.js +0 -76
  431. package/dist/types/ClassType.spec.js.map +0 -1
  432. package/dist/types/DoubleType.spec.d.ts +0 -1
  433. package/dist/types/DoubleType.spec.js +0 -20
  434. package/dist/types/DoubleType.spec.js.map +0 -1
  435. package/dist/types/DynamicType.spec.d.ts +0 -1
  436. package/dist/types/DynamicType.spec.js +0 -23
  437. package/dist/types/DynamicType.spec.js.map +0 -1
  438. package/dist/types/EnumType.spec.d.ts +0 -1
  439. package/dist/types/EnumType.spec.js +0 -33
  440. package/dist/types/EnumType.spec.js.map +0 -1
  441. package/dist/types/FloatType.spec.d.ts +0 -1
  442. package/dist/types/FloatType.spec.js +0 -12
  443. package/dist/types/FloatType.spec.js.map +0 -1
  444. package/dist/types/IntegerType.spec.d.ts +0 -1
  445. package/dist/types/IntegerType.spec.js +0 -16
  446. package/dist/types/IntegerType.spec.js.map +0 -1
  447. package/dist/types/InterfaceType.spec.d.ts +0 -1
  448. package/dist/types/InterfaceType.spec.js +0 -227
  449. package/dist/types/InterfaceType.spec.js.map +0 -1
  450. package/dist/types/IntersectionType.spec.d.ts +0 -1
  451. package/dist/types/IntersectionType.spec.js +0 -150
  452. package/dist/types/IntersectionType.spec.js.map +0 -1
  453. package/dist/types/InvalidType.spec.d.ts +0 -1
  454. package/dist/types/InvalidType.spec.js +0 -16
  455. package/dist/types/InvalidType.spec.js.map +0 -1
  456. package/dist/types/LongIntegerType.spec.d.ts +0 -1
  457. package/dist/types/LongIntegerType.spec.js +0 -18
  458. package/dist/types/LongIntegerType.spec.js.map +0 -1
  459. package/dist/types/ObjectType.spec.d.ts +0 -1
  460. package/dist/types/ObjectType.spec.js +0 -12
  461. package/dist/types/ObjectType.spec.js.map +0 -1
  462. package/dist/types/ReferenceType.spec.d.ts +0 -1
  463. package/dist/types/ReferenceType.spec.js +0 -151
  464. package/dist/types/ReferenceType.spec.js.map +0 -1
  465. package/dist/types/StringType.spec.d.ts +0 -1
  466. package/dist/types/StringType.spec.js +0 -12
  467. package/dist/types/StringType.spec.js.map +0 -1
  468. package/dist/types/TypedFunctionType.spec.d.ts +0 -1
  469. package/dist/types/TypedFunctionType.spec.js +0 -122
  470. package/dist/types/TypedFunctionType.spec.js.map +0 -1
  471. package/dist/types/UnionType.spec.d.ts +0 -1
  472. package/dist/types/UnionType.spec.js +0 -205
  473. package/dist/types/UnionType.spec.js.map +0 -1
  474. package/dist/types/VoidType.spec.d.ts +0 -1
  475. package/dist/types/VoidType.spec.js +0 -12
  476. package/dist/types/VoidType.spec.js.map +0 -1
  477. package/dist/types/helper.spec.d.ts +0 -1
  478. package/dist/types/helper.spec.js +0 -174
  479. package/dist/types/helper.spec.js.map +0 -1
  480. package/dist/types/roFunctionType.spec.d.ts +0 -1
  481. package/dist/types/roFunctionType.spec.js +0 -20
  482. package/dist/types/roFunctionType.spec.js.map +0 -1
@@ -1,878 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- /* eslint-disable @typescript-eslint/no-for-in-array */
4
- const chai_config_spec_1 = require("../../../chai-config.spec");
5
- const DiagnosticMessages_1 = require("../../../DiagnosticMessages");
6
- const TokenKind_1 = require("../../../lexer/TokenKind");
7
- const Parser_1 = require("../../Parser");
8
- const Parser_spec_1 = require("../Parser.spec");
9
- const Statement_1 = require("../../Statement");
10
- const Expression_1 = require("../../Expression");
11
- const Program_1 = require("../../../Program");
12
- const testHelpers_spec_1 = require("../../../testHelpers.spec");
13
- describe('ternary expressions', () => {
14
- it('throws exception when used in brightscript scope', () => {
15
- var _a;
16
- let { diagnostics } = Parser_1.Parser.parse(`a = true ? "human" : "Zombie"`, { mode: Parser_1.ParseMode.BrightScript });
17
- (0, chai_config_spec_1.expect)((_a = diagnostics[0]) === null || _a === void 0 ? void 0 : _a.message).to.equal(DiagnosticMessages_1.DiagnosticMessages.bsFeatureNotSupportedInBrsFiles('ternary operator').message);
18
- });
19
- it('cannot be used as a statement', () => {
20
- let { diagnostics } = Parser_1.Parser.parse([
21
- (0, Parser_spec_1.token)(TokenKind_1.TokenKind.True, 'true'),
22
- (0, Parser_spec_1.token)(TokenKind_1.TokenKind.Question, '?'),
23
- (0, Parser_spec_1.token)(TokenKind_1.TokenKind.StringLiteral, 'Human'),
24
- (0, Parser_spec_1.token)(TokenKind_1.TokenKind.Colon, ':'),
25
- (0, Parser_spec_1.token)(TokenKind_1.TokenKind.StringLiteral, 'Zombie'),
26
- Parser_spec_1.EOF
27
- ], { mode: Parser_1.ParseMode.BrighterScript });
28
- (0, chai_config_spec_1.expect)(diagnostics).not.to.be.empty;
29
- });
30
- it(`cannot be used as a statement`, () => {
31
- (0, chai_config_spec_1.expect)(parseBs(`true ? true : "zombie"`).diagnostics).not.to.be.empty;
32
- (0, chai_config_spec_1.expect)(parseBs(`false ? true : "zombie"`).diagnostics).not.to.be.empty;
33
- (0, chai_config_spec_1.expect)(parseBs(`len("person") = 10 ? true : "zombie"`).diagnostics).not.to.be.empty;
34
- (0, chai_config_spec_1.expect)(parseBs(`m.getResponse() ? true : "zombie"`).diagnostics).not.to.be.empty;
35
- });
36
- it(`supports boolean expression condition`, () => {
37
- let { ast, diagnostics } = parseBs(`being = isZombie = false ? "human" : "zombie"`);
38
- (0, chai_config_spec_1.expect)(ast.statements[0]).to.be.instanceof(Statement_1.AssignmentStatement);
39
- (0, chai_config_spec_1.expect)(ast.statements[0].value).to.be.instanceof(Expression_1.TernaryExpression);
40
- (0, testHelpers_spec_1.expectZeroDiagnostics)(diagnostics);
41
- });
42
- it(`supports function condition`, () => {
43
- let { ast, diagnostics } = parseBs(`a = user.getAccount() ? "logged in" : "not logged in"`);
44
- (0, chai_config_spec_1.expect)(ast.statements[0]).to.be.instanceof(Statement_1.AssignmentStatement);
45
- (0, chai_config_spec_1.expect)(ast.statements[0].value).to.be.instanceof(Expression_1.TernaryExpression);
46
- (0, testHelpers_spec_1.expectZeroDiagnostics)(diagnostics);
47
- });
48
- it(`supports various tests with primitive values:`, () => {
49
- (0, testHelpers_spec_1.expectZeroDiagnostics)(parseBs(`result = true ? "human" : "zombie"`));
50
- (0, testHelpers_spec_1.expectZeroDiagnostics)(parseBs(`result = false ? "human" : "zombie"`));
51
- (0, testHelpers_spec_1.expectZeroDiagnostics)(parseBs(`result = len("person") = 10 ? "human" : "zombie"`));
52
- (0, testHelpers_spec_1.expectZeroDiagnostics)(parseBs(`result = m.getResponse() ? "human" : "zombie"`));
53
- (0, testHelpers_spec_1.expectZeroDiagnostics)(parseBs(`result = m.myZombies[3].hasEaten = true ? "human" : "zombie"`));
54
- });
55
- it(`supports simple consequents`, () => {
56
- (0, testHelpers_spec_1.expectZeroDiagnostics)(parseBs(`result = true ? true : "zombie"`));
57
- (0, testHelpers_spec_1.expectZeroDiagnostics)(parseBs(`result = true ? false : "zombie"`));
58
- (0, testHelpers_spec_1.expectZeroDiagnostics)(parseBs(`result = true ? len("person") = 10 : "zombie"`));
59
- (0, testHelpers_spec_1.expectZeroDiagnostics)(parseBs(`result = true ? m.getResponse() : "zombie"`));
60
- (0, testHelpers_spec_1.expectZeroDiagnostics)(parseBs(`result = true ? m.myZombies[3].hasEaten = true : "zombie"`));
61
- (0, testHelpers_spec_1.expectZeroDiagnostics)(parseBs(`result = true ? getZombieName : "zombie"`));
62
- });
63
- it(`supports simple alternates`, () => {
64
- (0, testHelpers_spec_1.expectZeroDiagnostics)(parseBs(`result = true ? "zombie": true`));
65
- (0, testHelpers_spec_1.expectZeroDiagnostics)(parseBs(`result = true ? "zombie": false`));
66
- (0, testHelpers_spec_1.expectZeroDiagnostics)(parseBs(`result = true ? "zombie": len("person") = 10`));
67
- (0, testHelpers_spec_1.expectZeroDiagnostics)(parseBs(`result = true ? "zombie": m.getResponse()`));
68
- (0, testHelpers_spec_1.expectZeroDiagnostics)(parseBs(`result = true ? "zombie": m.myZombies[3].hasEaten = true`));
69
- (0, testHelpers_spec_1.expectZeroDiagnostics)(parseBs(`result = true ? "zombie": getZombieName`));
70
- (0, testHelpers_spec_1.expectZeroDiagnostics)(parseBs(`result = true ? "zombie": true`));
71
- });
72
- it('supports multi-line and comments', () => {
73
- (0, testHelpers_spec_1.expectZeroDiagnostics)(parseBs(`result = true ? \n"zombie"\n: \ntrue`));
74
- (0, testHelpers_spec_1.expectZeroDiagnostics)(parseBs(`result = true ? "zombie"\n: \ntrue`));
75
- (0, testHelpers_spec_1.expectZeroDiagnostics)(parseBs(`result = true ? \n"zombie": \ntrue`));
76
- (0, testHelpers_spec_1.expectZeroDiagnostics)(parseBs(`result = true ? \n"zombie"\n: true`));
77
- (0, testHelpers_spec_1.expectZeroDiagnostics)(parseBs(`result = true ? "zombie"\n: \ntrue`));
78
- (0, testHelpers_spec_1.expectZeroDiagnostics)(parseBs(`result = true ? "zombie": \ntrue`));
79
- (0, testHelpers_spec_1.expectZeroDiagnostics)(parseBs(`result = true ? \n\n\n"zombie": \n\n\n\ntrue`));
80
- //with comments
81
- (0, testHelpers_spec_1.expectZeroDiagnostics)(parseBs(`result = true ?'comment\n"zombie"'comment\n:'comment\nntrue`));
82
- });
83
- describe('in assignment', () => {
84
- it(`simple case`, () => {
85
- let { ast, diagnostics } = parseBs(`a = true ? "human" : "zombie"`);
86
- (0, testHelpers_spec_1.expectZeroDiagnostics)(diagnostics);
87
- (0, chai_config_spec_1.expect)(ast.statements[0]).instanceof(Statement_1.AssignmentStatement);
88
- });
89
- it(`multi line arrays case`, () => {
90
- let { ast, diagnostics } = parseBs(`
91
- a = true ? [
92
- "one"
93
- "two"
94
- "three"
95
- ] : [
96
- "one"
97
- "two"
98
- "three"
99
- ]
100
- `);
101
- (0, testHelpers_spec_1.expectZeroDiagnostics)(diagnostics);
102
- (0, chai_config_spec_1.expect)(ast.statements[0]).instanceof(Statement_1.AssignmentStatement);
103
- });
104
- it(`single line assoc array`, () => {
105
- let { ast, diagnostics } = parseBs(`a = true ? {"a":"a"} : {}`);
106
- (0, testHelpers_spec_1.expectZeroDiagnostics)(diagnostics);
107
- (0, chai_config_spec_1.expect)(ast.statements[0]).instanceof(Statement_1.AssignmentStatement);
108
- });
109
- it(`multi line assoc array`, () => {
110
- let { ast, diagnostics } = parseBs(`
111
- a = true ? {"a":"a"} : {
112
- "b": "test"
113
- }`);
114
- (0, testHelpers_spec_1.expectZeroDiagnostics)(diagnostics);
115
- (0, chai_config_spec_1.expect)(ast.statements[0]).instanceof(Statement_1.AssignmentStatement);
116
- });
117
- it(`multi line assoc array - both sides`, () => {
118
- let { ast, diagnostics } = parseBs(`
119
- a = true ? {
120
- "a":"a"
121
- "b":"b"
122
- } : {
123
- "b": "test"
124
- }
125
- `);
126
- (0, testHelpers_spec_1.expectZeroDiagnostics)(diagnostics);
127
- (0, chai_config_spec_1.expect)(ast.statements[0]).instanceof(Statement_1.AssignmentStatement);
128
- });
129
- it(`in func call with array args`, () => {
130
- let { ast, diagnostics } = parseBs(`m.eatBrains(a.count() > 10 ? ["a","B"] : ["c", "d"])`);
131
- (0, testHelpers_spec_1.expectZeroDiagnostics)(diagnostics);
132
- (0, chai_config_spec_1.expect)(ast.statements[0]).instanceof(Statement_1.ExpressionStatement);
133
- (0, chai_config_spec_1.expect)(ast.statements[0].expression).instanceof(Expression_1.CallExpression);
134
- let callExpression = ast.statements[0].expression;
135
- (0, chai_config_spec_1.expect)(callExpression.args.length).to.equal(1);
136
- (0, chai_config_spec_1.expect)(callExpression.args[0]).instanceof(Expression_1.TernaryExpression);
137
- });
138
- it(`in func call with aa args`, () => {
139
- let { ast, diagnostics } = parseBs(`m.eatBrains(a.count() > 10 ? {"a":1} : {"b": ["c", "d"]})`);
140
- (0, testHelpers_spec_1.expectZeroDiagnostics)(diagnostics);
141
- (0, chai_config_spec_1.expect)(ast.statements[0]).instanceof(Statement_1.ExpressionStatement);
142
- (0, chai_config_spec_1.expect)(ast.statements[0].expression).instanceof(Expression_1.CallExpression);
143
- let callExpression = ast.statements[0].expression;
144
- (0, chai_config_spec_1.expect)(callExpression.args.length).to.equal(1);
145
- (0, chai_config_spec_1.expect)(callExpression.args[0]).instanceof(Expression_1.TernaryExpression);
146
- });
147
- it(`in simple func call`, () => {
148
- let { ast, diagnostics } = parseBs(`m.eatBrains(a = true ? "a" : "b")`);
149
- (0, testHelpers_spec_1.expectZeroDiagnostics)(diagnostics);
150
- (0, chai_config_spec_1.expect)(ast.statements[0]).instanceof(Statement_1.ExpressionStatement);
151
- (0, chai_config_spec_1.expect)(ast.statements[0].expression).instanceof(Expression_1.CallExpression);
152
- let callExpression = ast.statements[0].expression;
153
- (0, chai_config_spec_1.expect)(callExpression.args.length).to.equal(1);
154
- (0, chai_config_spec_1.expect)(callExpression.args[0]).instanceof(Expression_1.TernaryExpression);
155
- });
156
- it(`in func call with more args`, () => {
157
- let { ast, diagnostics } = parseBs(`m.eatBrains(a = true ? "a" : "b", true, 12)`);
158
- (0, testHelpers_spec_1.expectZeroDiagnostics)(diagnostics);
159
- (0, chai_config_spec_1.expect)(ast.statements[0]).instanceof(Statement_1.ExpressionStatement);
160
- (0, chai_config_spec_1.expect)(ast.statements[0].expression).instanceof(Expression_1.CallExpression);
161
- let callExpression = ast.statements[0].expression;
162
- (0, chai_config_spec_1.expect)(callExpression.args.length).to.equal(3);
163
- (0, chai_config_spec_1.expect)(callExpression.args[0]).instanceof(Expression_1.TernaryExpression);
164
- });
165
- it(`in func call with more args, and comparing value`, () => {
166
- let { ast, diagnostics } = parseBs(`m.eatBrains((a = true ? "a" : "b").count() = 3, true, 12)`);
167
- (0, testHelpers_spec_1.expectZeroDiagnostics)(diagnostics);
168
- (0, chai_config_spec_1.expect)(ast.statements[0]).instanceof(Statement_1.ExpressionStatement);
169
- (0, chai_config_spec_1.expect)(ast.statements[0].expression).instanceof(Expression_1.CallExpression);
170
- let callExpression = ast.statements[0].expression;
171
- (0, chai_config_spec_1.expect)(callExpression.args.length).to.equal(3);
172
- });
173
- it(`in array`, () => {
174
- let { ast, diagnostics } = parseBs(`a = [a = true ? {"a":"a"} : {"b":"b"}, "c"]`);
175
- (0, testHelpers_spec_1.expectZeroDiagnostics)(diagnostics);
176
- (0, chai_config_spec_1.expect)(ast.statements[0]).instanceof(Statement_1.AssignmentStatement);
177
- (0, chai_config_spec_1.expect)(ast.statements[0].value).instanceof(Expression_1.ArrayLiteralExpression);
178
- let literalExpression = ast.statements[0].value;
179
- (0, chai_config_spec_1.expect)(literalExpression.elements[0]).instanceOf(Expression_1.TernaryExpression);
180
- (0, chai_config_spec_1.expect)(literalExpression.elements[1]).instanceOf(Expression_1.LiteralExpression);
181
- });
182
- it(`in aa`, () => {
183
- let { ast, diagnostics } = parseBs(`a = {"v1": a = true ? {"a":"a"} : {"b":"b"}, "v2": "c"}`);
184
- (0, testHelpers_spec_1.expectZeroDiagnostics)(diagnostics);
185
- (0, chai_config_spec_1.expect)(ast.statements[0]).instanceof(Statement_1.AssignmentStatement);
186
- (0, chai_config_spec_1.expect)(ast.statements[0].value).instanceof(Expression_1.AALiteralExpression);
187
- let literalExpression = ast.statements[0].value;
188
- (0, chai_config_spec_1.expect)(literalExpression.elements[0].tokens.key.text).is.equal('"v1"');
189
- (0, chai_config_spec_1.expect)(literalExpression.elements[0].value).instanceOf(Expression_1.TernaryExpression);
190
- (0, chai_config_spec_1.expect)(literalExpression.elements[1].tokens.key.text).is.equal('"v2"');
191
- (0, chai_config_spec_1.expect)(literalExpression.elements[1].value).instanceOf(Expression_1.LiteralExpression);
192
- });
193
- it(`in for each`, () => {
194
- let { ast, diagnostics } = parseBs(`for each person in isZombieMode ? zombies : humans
195
- ? "person is " ; person
196
- end for
197
- `);
198
- (0, testHelpers_spec_1.expectZeroDiagnostics)(diagnostics);
199
- (0, chai_config_spec_1.expect)(ast.statements[0]).instanceof(Statement_1.ForEachStatement);
200
- (0, chai_config_spec_1.expect)(ast.statements[0].target).instanceof(Expression_1.TernaryExpression);
201
- });
202
- it('creates TernaryExpression with missing alternate', () => {
203
- const { ast } = parseBs(`
204
- print name = "bob" ? "human":
205
- `);
206
- const expr = ast.statements[0].expressions[0];
207
- (0, chai_config_spec_1.expect)(expr).to.be.instanceof(Expression_1.TernaryExpression);
208
- (0, chai_config_spec_1.expect)(expr).property('alternate').to.be.undefined;
209
- (0, chai_config_spec_1.expect)(expr).property('consequent').not.to.be.undefined;
210
- });
211
- it('creates TernaryExpression with missing consequent', () => {
212
- const { ast } = parseBs(`
213
- print name = "bob" ? : "human"
214
- `);
215
- const expr = ast.statements[0].expressions[0];
216
- (0, chai_config_spec_1.expect)(expr).to.be.instanceof(Expression_1.TernaryExpression);
217
- (0, chai_config_spec_1.expect)(expr).property('consequent').to.be.undefined;
218
- (0, chai_config_spec_1.expect)(expr).property('alternate').not.to.be.undefined;
219
- });
220
- });
221
- describe('transpile', () => {
222
- let rootDir = process.cwd();
223
- let program;
224
- let testTranspile = (0, testHelpers_spec_1.getTestTranspile)(() => [program, rootDir]);
225
- beforeEach(() => {
226
- program = new Program_1.Program({ rootDir: rootDir });
227
- });
228
- afterEach(() => {
229
- program.dispose();
230
- });
231
- it('transpiles top-level ternary expression', async () => {
232
- await testTranspile(`
233
- a += true ? 1 : 2
234
- `, `
235
- if true then
236
- a += 1
237
- else
238
- a += 2
239
- end if
240
- `, undefined, undefined, false);
241
- });
242
- it('transpiles ternary in RHS of AssignmentStatement to IfStatement', async () => {
243
- await testTranspile(`
244
- sub main()
245
- a = true ? 1 : 2
246
- end sub
247
- `, `
248
- sub main()
249
- if true then
250
- a = 1
251
- else
252
- a = 2
253
- end if
254
- end sub
255
- `);
256
- });
257
- it('transpiles ternary in RHS of incrementor AssignmentStatement to IfStatement', async () => {
258
- await testTranspile(`
259
- sub main()
260
- a = 1
261
- a += true ? 1 : 2
262
- end sub
263
- `, `
264
- sub main()
265
- a = 1
266
- if true then
267
- a += 1
268
- else
269
- a += 2
270
- end if
271
- end sub
272
- `);
273
- });
274
- it('transpiles ternary in RHS of DottedSetStatement to IfStatement', async () => {
275
- await testTranspile(`
276
- sub main()
277
- m.a = true ? 1 : 2
278
- end sub
279
- `, `
280
- sub main()
281
- if true then
282
- m.a = 1
283
- else
284
- m.a = 2
285
- end if
286
- end sub
287
- `);
288
- });
289
- it('transpiles ternary in RHS of incrementor DottedSetStatement to IfStatement', async () => {
290
- await testTranspile(`
291
- sub main()
292
- m.a += true ? 1 : 2
293
- end sub
294
- `, `
295
- sub main()
296
- if true then
297
- m.a += 1
298
- else
299
- m.a += 2
300
- end if
301
- end sub
302
- `);
303
- });
304
- it('transpiles ternary in RHS of IndexedSetStatement to IfStatement', async () => {
305
- await testTranspile(`
306
- sub main()
307
- m["a"] = true ? 1 : 2
308
- end sub
309
- `, `
310
- sub main()
311
- if true then
312
- m["a"] = 1
313
- else
314
- m["a"] = 2
315
- end if
316
- end sub
317
- `);
318
- });
319
- it('transpiles ternary in RHS of incrementor IndexedSetStatement to IfStatement', async () => {
320
- await testTranspile(`
321
- sub main()
322
- m["a"] += true ? 1 : 2
323
- end sub
324
- `, `
325
- sub main()
326
- if true then
327
- m["a"] += 1
328
- else
329
- m["a"] += 2
330
- end if
331
- end sub
332
- `);
333
- });
334
- it('uses the proper prefix when aliased package is installed', async () => {
335
- program.setFile('source/roku_modules/rokucommunity_bslib/bslib.brs', '');
336
- await testTranspile(`
337
- sub main()
338
- user = {}
339
- result = [
340
- user = invalid ? "no user" : "logged in"
341
- ]
342
- end sub
343
- `, `
344
- sub main()
345
- user = {}
346
- result = [
347
- rokucommunity_bslib_ternary(user = invalid, "no user", "logged in")
348
- ]
349
- end sub
350
- `);
351
- });
352
- it('simple consequents', async () => {
353
- await testTranspile(`
354
- sub main()
355
- user = {}
356
- a = user = invalid ? "no user" : "logged in"
357
- end sub
358
- `, `
359
- sub main()
360
- user = {}
361
- if user = invalid then
362
- a = "no user"
363
- else
364
- a = "logged in"
365
- end if
366
- end sub
367
- `);
368
- await testTranspile(`
369
- sub main()
370
- user = {}
371
- a = user = invalid ? 1 : "logged in"
372
- end sub
373
- `, `
374
- sub main()
375
- user = {}
376
- if user = invalid then
377
- a = 1
378
- else
379
- a = "logged in"
380
- end if
381
- end sub
382
- `);
383
- await testTranspile(`
384
- sub main()
385
- user = {}
386
- a = user = invalid ? 1.2 : "logged in"
387
- end sub
388
- `, `
389
- sub main()
390
- user = {}
391
- if user = invalid then
392
- a = 1.2
393
- else
394
- a = "logged in"
395
- end if
396
- end sub
397
- `);
398
- await testTranspile(`
399
- sub main()
400
- user = {}
401
- a = user = invalid ? {} : "logged in"
402
- end sub
403
- `, `
404
- sub main()
405
- user = {}
406
- if user = invalid then
407
- a = {}
408
- else
409
- a = "logged in"
410
- end if
411
- end sub
412
- `);
413
- await testTranspile(`
414
- sub main()
415
- user = {}
416
- a = user = invalid ? [] : "logged in"
417
- end sub
418
- `, `
419
- sub main()
420
- user = {}
421
- if user = invalid then
422
- a = []
423
- else
424
- a = "logged in"
425
- end if
426
- end sub
427
- `);
428
- });
429
- it('simple alternates', async () => {
430
- await testTranspile(`
431
- sub main()
432
- user = {}
433
- a = user = invalid ? "logged in" : "no user"
434
- end sub
435
- `, `
436
- sub main()
437
- user = {}
438
- if user = invalid then
439
- a = "logged in"
440
- else
441
- a = "no user"
442
- end if
443
- end sub
444
- `);
445
- await testTranspile(`
446
- sub main()
447
- user = {}
448
- a = user = invalid ? "logged in" : 1
449
- end sub
450
- `, `
451
- sub main()
452
- user = {}
453
- if user = invalid then
454
- a = "logged in"
455
- else
456
- a = 1
457
- end if
458
- end sub
459
- `);
460
- await testTranspile(`
461
- sub main()
462
- user = {}
463
- a = user = invalid ? "logged in" : 1.2
464
- end sub
465
- `, `
466
- sub main()
467
- user = {}
468
- if user = invalid then
469
- a = "logged in"
470
- else
471
- a = 1.2
472
- end if
473
- end sub
474
- `);
475
- await testTranspile(`
476
- sub main()
477
- user = {}
478
- a = user = invalid ? "logged in" : []
479
- end sub
480
- `, `
481
- sub main()
482
- user = {}
483
- if user = invalid then
484
- a = "logged in"
485
- else
486
- a = []
487
- end if
488
- end sub
489
- `);
490
- await testTranspile(`
491
- sub main()
492
- user = {}
493
- a = user = invalid ? "logged in" : {}
494
- end sub
495
- `, `
496
- sub main()
497
- user = {}
498
- if user = invalid then
499
- a = "logged in"
500
- else
501
- a = {}
502
- end if
503
- end sub
504
- `);
505
- });
506
- it('does not capture restricted OS functions', async () => {
507
- await testTranspile(`
508
- sub main()
509
- test(true ? invalid : [
510
- createObject("roDeviceInfo")
511
- type(true)
512
- GetGlobalAA()
513
- box(1)
514
- run("file.brs", invalid)
515
- eval("print 1")
516
- GetLastRunCompileError()
517
- GetLastRunRuntimeError()
518
- Tab(1)
519
- Pos(0)
520
- ])
521
- end sub
522
- sub test(p1)
523
- end sub
524
- `, `
525
- sub main()
526
- test((function(__bsCondition)
527
- if __bsCondition then
528
- return invalid
529
- else
530
- return [
531
- createObject("roDeviceInfo")
532
- type(true)
533
- GetGlobalAA()
534
- box(1)
535
- run("file.brs", invalid)
536
- eval("print 1")
537
- GetLastRunCompileError()
538
- GetLastRunRuntimeError()
539
- Tab(1)
540
- Pos(0)
541
- ]
542
- end if
543
- end function)(true))
544
- end sub
545
-
546
- sub test(p1)
547
- end sub
548
- `);
549
- });
550
- it('complex conditions do not cause scope capture', async () => {
551
- await testTranspile(`
552
- sub main()
553
- a = str(123) = "123" ? true : false
554
- end sub
555
- `, `
556
- sub main()
557
- if str(123) = "123" then
558
- a = true
559
- else
560
- a = false
561
- end if
562
- end sub
563
- `);
564
- await testTranspile(`
565
- sub main()
566
- a = m.top.service.IsTrue() ? true : false
567
- end sub
568
- `, `
569
- sub main()
570
- if m.top.service.IsTrue() then
571
- a = true
572
- else
573
- a = false
574
- end if
575
- end sub
576
- `);
577
- await testTranspile(`
578
- sub test(param1)
579
- end sub
580
-
581
- sub main()
582
- a = test(test(test(test(m.fifth()[123].truthy(1))))) ? true : false
583
- end sub
584
- `, `
585
- sub test(param1)
586
- end sub
587
-
588
- sub main()
589
- if test(test(test(test(m.fifth()[123].truthy(1))))) then
590
- a = true
591
- else
592
- a = false
593
- end if
594
- end sub
595
- `);
596
- });
597
- it('captures scope for function call conseqent', async () => {
598
- await testTranspile(`
599
- sub main()
600
- zombie = {}
601
- result = [
602
- zombie.getName() <> invalid ? zombie.GetName() : "zombie"
603
- ]
604
- end sub
605
- `, `
606
- sub main()
607
- zombie = {}
608
- result = [
609
- (function(__bsCondition, zombie)
610
- if __bsCondition then
611
- return zombie.GetName()
612
- else
613
- return "zombie"
614
- end if
615
- end function)(zombie.getName() <> invalid, zombie)
616
- ]
617
- end sub
618
- `);
619
- });
620
- it('captures scope for function call alternate', async () => {
621
- await testTranspile(`
622
- sub main()
623
- zombie = {}
624
- result = [
625
- zombie.getName() = invalid ? "zombie" : zombie.GetName()
626
- ]
627
- end sub
628
- `, `
629
- sub main()
630
- zombie = {}
631
- result = [
632
- (function(__bsCondition, zombie)
633
- if __bsCondition then
634
- return "zombie"
635
- else
636
- return zombie.GetName()
637
- end if
638
- end function)(zombie.getName() = invalid, zombie)
639
- ]
640
- end sub
641
- `);
642
- });
643
- it('captures scope for complex consequent', async () => {
644
- await testTranspile(`
645
- sub main()
646
- settings = {}
647
- result = [
648
- {} ? m.defaults.getAccount(settings.name) : "no"
649
- ]
650
- end sub
651
- `, `
652
- sub main()
653
- settings = {}
654
- result = [
655
- (function(__bsCondition, m, settings)
656
- if __bsCondition then
657
- return m.defaults.getAccount(settings.name)
658
- else
659
- return "no"
660
- end if
661
- end function)({}, m, settings)
662
- ]
663
- end sub
664
- `);
665
- });
666
- it('ignores enum variable names for scope capturing', async () => {
667
- await testTranspile(`
668
- enum Direction
669
- up = "up"
670
- down = "down"
671
- end enum
672
- sub main()
673
- d = Direction.up
674
- result = [
675
- d = Direction.up ? Direction.up : false
676
- ]
677
- end sub
678
- `, `
679
- sub main()
680
- d = "up"
681
- result = [
682
- (function(__bsCondition)
683
- if __bsCondition then
684
- return "up"
685
- else
686
- return false
687
- end if
688
- end function)(d = "up")
689
- ]
690
- end sub
691
- `);
692
- });
693
- it('ignores const variable names for scope capturing', async () => {
694
- await testTranspile(`
695
- enum Direction
696
- up = "up"
697
- down = "down"
698
- end enum
699
- const UP = "up"
700
- sub main()
701
- d = Direction.up
702
- result = [
703
- d = Direction.up ? UP : Direction.down
704
- ]
705
- end sub
706
- `, `
707
- sub main()
708
- d = "up"
709
- result = [
710
- (function(__bsCondition)
711
- if __bsCondition then
712
- return "up"
713
- else
714
- return "down"
715
- end if
716
- end function)(d = "up")
717
- ]
718
- end sub
719
- `);
720
- });
721
- it('supports scope-captured outer, and simple inner', async () => {
722
- await testTranspile(`
723
- sub main()
724
- zombie = {}
725
- human = {}
726
- result = zombie <> invalid ? zombie.Attack(human <> invalid ? human: zombie) : "zombie"
727
- end sub
728
- `, `
729
- sub main()
730
- zombie = {}
731
- human = {}
732
- if zombie <> invalid then
733
- result = zombie.Attack(bslib_ternary(human <> invalid, human, zombie))
734
- else
735
- result = "zombie"
736
- end if
737
- end sub
738
- `);
739
- });
740
- it('supports nested ternary in assignment', async () => {
741
- await testTranspile(`
742
- sub main()
743
- result = true ? (false ? "one" : "two") : "three"
744
- end sub
745
- `, `
746
- sub main()
747
- if true then
748
- if false then
749
- result = "one"
750
- else
751
- result = "two"
752
- end if
753
- else
754
- result = "three"
755
- end if
756
- end sub
757
- `);
758
- });
759
- it('supports nested ternary in DottedSet', async () => {
760
- await testTranspile(`
761
- sub main()
762
- m.result = true ? (false ? "one" : "two") : "three"
763
- end sub
764
- `, `
765
- sub main()
766
- if true then
767
- if false then
768
- m.result = "one"
769
- else
770
- m.result = "two"
771
- end if
772
- else
773
- m.result = "three"
774
- end if
775
- end sub
776
- `);
777
- });
778
- it('supports nested ternary in IndexedSet', async () => {
779
- await testTranspile(`
780
- sub main()
781
- m["result"] = true ? (false ? "one" : "two") : "three"
782
- end sub
783
- `, `
784
- sub main()
785
- if true then
786
- if false then
787
- m["result"] = "one"
788
- else
789
- m["result"] = "two"
790
- end if
791
- else
792
- m["result"] = "three"
793
- end if
794
- end sub
795
- `);
796
- });
797
- it('supports ternary in indexedSet key', async () => {
798
- await testTranspile(`
799
- sub main()
800
- m[m.isShiftPressed ? "a" : "b"] = 0
801
- m[m.useAltKey ? m.altKey : m.key] = 1
802
- end sub
803
- `, `
804
- sub main()
805
- m[bslib_ternary(m.isShiftPressed, "a", "b")] = 0
806
- m[(function(__bsCondition, m)
807
- if __bsCondition then
808
- return m.altKey
809
- else
810
- return m.key
811
- end if
812
- end function)(m.useAltKey, m)] = 1
813
- end sub
814
- `);
815
- });
816
- it('supports scope-captured outer, and simple inner', async () => {
817
- await testTranspile(`
818
- sub main()
819
- zombie = {}
820
- human = {}
821
- result = [
822
- zombie <> invalid ? zombie.Attack(human <> invalid ? human: zombie) : "zombie"
823
- ]
824
- end sub
825
- `, `
826
- sub main()
827
- zombie = {}
828
- human = {}
829
- result = [
830
- (function(__bsCondition, human, zombie)
831
- if __bsCondition then
832
- return zombie.Attack(bslib_ternary(human <> invalid, human, zombie))
833
- else
834
- return "zombie"
835
- end if
836
- end function)(zombie <> invalid, human, zombie)
837
- ]
838
- end sub
839
- `);
840
- });
841
- it('uses scope capture for property access', async () => {
842
- await testTranspile(`
843
- sub main()
844
- person = {}
845
- result = [
846
- person <> invalid ? person.name : "John Doe"
847
- ]
848
- end sub
849
- `, `
850
- sub main()
851
- person = {}
852
- result = [
853
- (function(__bsCondition, person)
854
- if __bsCondition then
855
- return person.name
856
- else
857
- return "John Doe"
858
- end if
859
- end function)(person <> invalid, person)
860
- ]
861
- end sub
862
- `);
863
- });
864
- it('uses `invalid` in place of missing consequent ', async () => {
865
- await testTranspile(`print name = "bob" ? :"zombie"`, `print bslib_ternary(name = "bob", invalid, "zombie")`, 'none', undefined, false);
866
- });
867
- it('uses `invalid` in place of missing alternate ', async () => {
868
- await testTranspile(`print name = "bob" ? "human"`, `print bslib_ternary(name = "bob", "human", invalid)`, 'none', undefined, false);
869
- });
870
- it('uses `invalid` in place of missing alternate and consequent ', async () => {
871
- await testTranspile(`print name = "bob" ?:`, `print bslib_ternary(name = "bob", invalid, invalid)`, 'none', undefined, false);
872
- });
873
- });
874
- });
875
- function parseBs(text) {
876
- return Parser_1.Parser.parse(text, { mode: Parser_1.ParseMode.BrighterScript });
877
- }
878
- //# sourceMappingURL=TernaryExpression.spec.js.map