brighterscript 0.66.0-alpha.0 → 0.66.0-alpha.10

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 (383) hide show
  1. package/CHANGELOG.md +223 -10
  2. package/README.md +13 -3
  3. package/bsconfig.schema.json +15 -0
  4. package/dist/ActionPipeline.d.ts +10 -0
  5. package/dist/ActionPipeline.js +40 -0
  6. package/dist/ActionPipeline.js.map +1 -0
  7. package/dist/AstValidationSegmenter.d.ts +25 -0
  8. package/dist/AstValidationSegmenter.js +150 -0
  9. package/dist/AstValidationSegmenter.js.map +1 -0
  10. package/dist/BsConfig.d.ts +13 -4
  11. package/dist/BusyStatusTracker.d.ts +31 -0
  12. package/dist/BusyStatusTracker.js +83 -0
  13. package/dist/BusyStatusTracker.js.map +1 -0
  14. package/dist/Cache.js +3 -3
  15. package/dist/Cache.js.map +1 -1
  16. package/dist/CacheVerifier.d.ts +0 -1
  17. package/dist/CodeActionUtil.d.ts +2 -2
  18. package/dist/CommentFlagProcessor.d.ts +4 -3
  19. package/dist/CommentFlagProcessor.js.map +1 -1
  20. package/dist/DiagnosticCollection.js +8 -5
  21. package/dist/DiagnosticCollection.js.map +1 -1
  22. package/dist/DiagnosticMessages.d.ts +34 -4
  23. package/dist/DiagnosticMessages.js +59 -4
  24. package/dist/DiagnosticMessages.js.map +1 -1
  25. package/dist/FunctionScope.d.ts +1 -1
  26. package/dist/LanguageServer.d.ts +23 -1
  27. package/dist/LanguageServer.js +139 -57
  28. package/dist/LanguageServer.js.map +1 -1
  29. package/dist/Logger.d.ts +3 -2
  30. package/dist/Logger.js +10 -2
  31. package/dist/Logger.js.map +1 -1
  32. package/dist/PluginInterface.d.ts +11 -2
  33. package/dist/PluginInterface.js +69 -10
  34. package/dist/PluginInterface.js.map +1 -1
  35. package/dist/Program.d.ts +138 -49
  36. package/dist/Program.js +656 -340
  37. package/dist/Program.js.map +1 -1
  38. package/dist/ProgramBuilder.d.ts +10 -4
  39. package/dist/ProgramBuilder.js +83 -66
  40. package/dist/ProgramBuilder.js.map +1 -1
  41. package/dist/Scope.d.ts +52 -49
  42. package/dist/Scope.js +312 -247
  43. package/dist/Scope.js.map +1 -1
  44. package/dist/SymbolTable.d.ts +35 -14
  45. package/dist/SymbolTable.js +89 -26
  46. package/dist/SymbolTable.js.map +1 -1
  47. package/dist/Throttler.d.ts +12 -0
  48. package/dist/Throttler.js +39 -0
  49. package/dist/Throttler.js.map +1 -1
  50. package/dist/XmlScope.d.ts +7 -4
  51. package/dist/XmlScope.js +52 -12
  52. package/dist/XmlScope.js.map +1 -1
  53. package/dist/astUtils/{AstEditor.d.ts → Editor.d.ts} +6 -1
  54. package/dist/astUtils/{AstEditor.js → Editor.js} +9 -3
  55. package/dist/astUtils/Editor.js.map +1 -0
  56. package/dist/astUtils/{AstEditor.spec.js → Editor.spec.js} +10 -6
  57. package/dist/astUtils/Editor.spec.js.map +1 -0
  58. package/dist/astUtils/creators.d.ts +3 -1
  59. package/dist/astUtils/creators.js +14 -4
  60. package/dist/astUtils/creators.js.map +1 -1
  61. package/dist/astUtils/reflection.d.ts +37 -9
  62. package/dist/astUtils/reflection.js +83 -14
  63. package/dist/astUtils/reflection.js.map +1 -1
  64. package/dist/astUtils/reflection.spec.js +87 -5
  65. package/dist/astUtils/reflection.spec.js.map +1 -1
  66. package/dist/astUtils/visitors.d.ts +14 -3
  67. package/dist/astUtils/visitors.js +22 -2
  68. package/dist/astUtils/visitors.js.map +1 -1
  69. package/dist/astUtils/visitors.spec.js +58 -7
  70. package/dist/astUtils/visitors.spec.js.map +1 -1
  71. package/dist/bscPlugin/BscPlugin.d.ts +11 -4
  72. package/dist/bscPlugin/BscPlugin.js +26 -6
  73. package/dist/bscPlugin/BscPlugin.js.map +1 -1
  74. package/dist/bscPlugin/CallExpressionInfo.d.ts +3 -3
  75. package/dist/bscPlugin/CallExpressionInfo.js.map +1 -1
  76. package/dist/bscPlugin/FileWriter.d.ts +6 -0
  77. package/dist/bscPlugin/FileWriter.js +24 -0
  78. package/dist/bscPlugin/FileWriter.js.map +1 -0
  79. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +8 -8
  80. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
  81. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +4 -4
  82. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
  83. package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +50 -1
  84. package/dist/bscPlugin/completions/CompletionsProcessor.js +442 -23
  85. package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
  86. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +1737 -0
  87. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +1 -0
  88. package/dist/bscPlugin/fileProviders/FileProvider.d.ts +9 -0
  89. package/dist/bscPlugin/fileProviders/FileProvider.js +51 -0
  90. package/dist/bscPlugin/fileProviders/FileProvider.js.map +1 -0
  91. package/dist/bscPlugin/hover/HoverProcessor.d.ts +7 -3
  92. package/dist/bscPlugin/hover/HoverProcessor.js +133 -103
  93. package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
  94. package/dist/bscPlugin/hover/HoverProcessor.spec.js +241 -29
  95. package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
  96. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +1 -0
  97. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +43 -0
  98. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
  99. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +22 -0
  100. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -1
  101. package/dist/bscPlugin/serialize/BslibInjector.spec.js +19 -0
  102. package/dist/bscPlugin/serialize/BslibInjector.spec.js.map +1 -0
  103. package/dist/bscPlugin/serialize/BslibManager.d.ts +9 -0
  104. package/dist/bscPlugin/serialize/BslibManager.js +40 -0
  105. package/dist/bscPlugin/serialize/BslibManager.js.map +1 -0
  106. package/dist/bscPlugin/serialize/FileSerializer.d.ts +9 -0
  107. package/dist/bscPlugin/serialize/FileSerializer.js +72 -0
  108. package/dist/bscPlugin/serialize/FileSerializer.js.map +1 -0
  109. package/dist/bscPlugin/transpile/{BrsFilePreTranspileProcessor.d.ts → BrsFileTranspileProcessor.d.ts} +4 -2
  110. package/dist/bscPlugin/transpile/{BrsFilePreTranspileProcessor.js → BrsFileTranspileProcessor.js} +29 -5
  111. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +1 -0
  112. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.d.ts +1 -0
  113. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js +41 -0
  114. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js.map +1 -0
  115. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.d.ts +2 -2
  116. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js.map +1 -1
  117. package/dist/bscPlugin/validation/BrsFileValidator.d.ts +0 -4
  118. package/dist/bscPlugin/validation/BrsFileValidator.js +35 -65
  119. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
  120. package/dist/bscPlugin/validation/BrsFileValidator.spec.js +1 -1
  121. package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +1 -1
  122. package/dist/bscPlugin/validation/ProgramValidator.d.ts +3 -3
  123. package/dist/bscPlugin/validation/ProgramValidator.js +6 -6
  124. package/dist/bscPlugin/validation/ProgramValidator.js.map +1 -1
  125. package/dist/bscPlugin/validation/ScopeValidator.d.ts +28 -7
  126. package/dist/bscPlugin/validation/ScopeValidator.js +393 -205
  127. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
  128. package/dist/bscPlugin/validation/ScopeValidator.spec.d.ts +1 -0
  129. package/dist/bscPlugin/validation/ScopeValidator.spec.js +2038 -0
  130. package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -0
  131. package/dist/bscPlugin/validation/XmlFileValidator.js +2 -2
  132. package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -1
  133. package/dist/cli.js +104 -13
  134. package/dist/cli.js.map +1 -1
  135. package/dist/deferred.d.ts +3 -3
  136. package/dist/deferred.js.map +1 -1
  137. package/dist/diagnosticUtils.d.ts +8 -2
  138. package/dist/diagnosticUtils.js +45 -16
  139. package/dist/diagnosticUtils.js.map +1 -1
  140. package/dist/examples/plugins/removePrint.js +1 -1
  141. package/dist/examples/plugins/removePrint.js.map +1 -1
  142. package/dist/files/AssetFile.d.ts +26 -0
  143. package/dist/files/AssetFile.js +26 -0
  144. package/dist/files/AssetFile.js.map +1 -0
  145. package/dist/files/BrsFile.Class.spec.js +383 -56
  146. package/dist/files/BrsFile.Class.spec.js.map +1 -1
  147. package/dist/files/BrsFile.d.ts +73 -46
  148. package/dist/files/BrsFile.js +370 -534
  149. package/dist/files/BrsFile.js.map +1 -1
  150. package/dist/files/BrsFile.spec.js +1139 -682
  151. package/dist/files/BrsFile.spec.js.map +1 -1
  152. package/dist/files/Factory.d.ts +25 -0
  153. package/dist/files/Factory.js +22 -0
  154. package/dist/files/Factory.js.map +1 -0
  155. package/dist/files/File.d.ts +106 -0
  156. package/dist/files/File.js +16 -0
  157. package/dist/files/File.js.map +1 -0
  158. package/dist/files/LazyFileData.d.ts +20 -0
  159. package/dist/files/LazyFileData.js +54 -0
  160. package/dist/files/LazyFileData.js.map +1 -0
  161. package/dist/files/LazyFileData.spec.d.ts +1 -0
  162. package/dist/files/LazyFileData.spec.js +27 -0
  163. package/dist/files/LazyFileData.spec.js.map +1 -0
  164. package/dist/files/XmlFile.d.ts +56 -23
  165. package/dist/files/XmlFile.js +88 -60
  166. package/dist/files/XmlFile.js.map +1 -1
  167. package/dist/files/XmlFile.spec.js +63 -91
  168. package/dist/files/XmlFile.spec.js.map +1 -1
  169. package/dist/files/tests/imports.spec.js +21 -8
  170. package/dist/files/tests/imports.spec.js.map +1 -1
  171. package/dist/files/tests/optionalChaning.spec.js +14 -14
  172. package/dist/files/tests/optionalChaning.spec.js.map +1 -1
  173. package/dist/globalCallables.js +88 -84
  174. package/dist/globalCallables.js.map +1 -1
  175. package/dist/index.d.ts +9 -1
  176. package/dist/index.js +9 -1
  177. package/dist/index.js.map +1 -1
  178. package/dist/interfaces.d.ts +436 -81
  179. package/dist/interfaces.js +13 -2
  180. package/dist/interfaces.js.map +1 -1
  181. package/dist/lexer/Lexer.d.ts +12 -0
  182. package/dist/lexer/Lexer.js +28 -8
  183. package/dist/lexer/Lexer.js.map +1 -1
  184. package/dist/lexer/Lexer.spec.js +40 -0
  185. package/dist/lexer/Lexer.spec.js.map +1 -1
  186. package/dist/lexer/Token.d.ts +4 -0
  187. package/dist/lexer/Token.js.map +1 -1
  188. package/dist/lexer/TokenKind.d.ts +5 -0
  189. package/dist/lexer/TokenKind.js +14 -2
  190. package/dist/lexer/TokenKind.js.map +1 -1
  191. package/dist/parser/AstNode.d.ts +9 -2
  192. package/dist/parser/AstNode.js +16 -0
  193. package/dist/parser/AstNode.js.map +1 -1
  194. package/dist/parser/BrsTranspileState.d.ts +3 -2
  195. package/dist/parser/BrsTranspileState.js +3 -2
  196. package/dist/parser/BrsTranspileState.js.map +1 -1
  197. package/dist/parser/Expression.d.ts +21 -5
  198. package/dist/parser/Expression.js +128 -35
  199. package/dist/parser/Expression.js.map +1 -1
  200. package/dist/parser/Parser.Class.spec.js +103 -1
  201. package/dist/parser/Parser.Class.spec.js.map +1 -1
  202. package/dist/parser/Parser.d.ts +7 -0
  203. package/dist/parser/Parser.js +117 -21
  204. package/dist/parser/Parser.js.map +1 -1
  205. package/dist/parser/Parser.spec.js +557 -5
  206. package/dist/parser/Parser.spec.js.map +1 -1
  207. package/dist/parser/SGParser.d.ts +4 -4
  208. package/dist/parser/SGParser.js +3 -3
  209. package/dist/parser/SGParser.js.map +1 -1
  210. package/dist/parser/SGParser.spec.js +2 -2
  211. package/dist/parser/SGParser.spec.js.map +1 -1
  212. package/dist/parser/SGTypes.d.ts +2 -2
  213. package/dist/parser/Statement.d.ts +37 -12
  214. package/dist/parser/Statement.js +153 -46
  215. package/dist/parser/Statement.js.map +1 -1
  216. package/dist/parser/tests/Parser.spec.js +2 -1
  217. package/dist/parser/tests/Parser.spec.js.map +1 -1
  218. package/dist/parser/tests/controlFlow/For.spec.js +16 -8
  219. package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
  220. package/dist/parser/tests/controlFlow/ForEach.spec.js +12 -6
  221. package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
  222. package/dist/parser/tests/controlFlow/While.spec.js +8 -4
  223. package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
  224. package/dist/parser/tests/expression/Call.spec.js +4 -4
  225. package/dist/parser/tests/expression/Call.spec.js.map +1 -1
  226. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +29 -29
  227. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
  228. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js +10 -10
  229. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js.map +1 -1
  230. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js +24 -24
  231. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js.map +1 -1
  232. package/dist/parser/tests/expression/TemplateStringExpression.spec.js +75 -36
  233. package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
  234. package/dist/parser/tests/expression/TernaryExpression.spec.js +36 -36
  235. package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
  236. package/dist/parser/tests/expression/UnaryExpression.spec.d.ts +1 -0
  237. package/dist/parser/tests/expression/UnaryExpression.spec.js +52 -0
  238. package/dist/parser/tests/expression/UnaryExpression.spec.js.map +1 -0
  239. package/dist/parser/tests/statement/ConstStatement.spec.js +71 -22
  240. package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -1
  241. package/dist/parser/tests/statement/Continue.spec.js +2 -2
  242. package/dist/parser/tests/statement/Continue.spec.js.map +1 -1
  243. package/dist/parser/tests/statement/Enum.spec.js +38 -285
  244. package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
  245. package/dist/parser/tests/statement/For.spec.js +6 -6
  246. package/dist/parser/tests/statement/For.spec.js.map +1 -1
  247. package/dist/parser/tests/statement/ForEach.spec.js +4 -4
  248. package/dist/parser/tests/statement/ForEach.spec.js.map +1 -1
  249. package/dist/parser/tests/statement/InterfaceStatement.spec.js +26 -10
  250. package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
  251. package/dist/parser/tests/statement/PrintStatement.spec.js +16 -13
  252. package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
  253. package/dist/parser/tests/statement/ReturnStatement.spec.js +5 -3
  254. package/dist/parser/tests/statement/ReturnStatement.spec.js.map +1 -1
  255. package/dist/parser/tests/statement/Set.spec.js +26 -13
  256. package/dist/parser/tests/statement/Set.spec.js.map +1 -1
  257. package/dist/preprocessor/Manifest.d.ts +1 -1
  258. package/dist/preprocessor/Manifest.js +2 -2
  259. package/dist/preprocessor/Manifest.js.map +1 -1
  260. package/dist/roku-types/data.json +243 -293
  261. package/dist/roku-types/index.d.ts +17 -38
  262. package/dist/types/ArrayType.d.ts +4 -1
  263. package/dist/types/ArrayType.js +46 -6
  264. package/dist/types/ArrayType.js.map +1 -1
  265. package/dist/types/ArrayType.spec.js +32 -3
  266. package/dist/types/ArrayType.spec.js.map +1 -1
  267. package/dist/types/AssociativeArrayType.d.ts +11 -0
  268. package/dist/types/AssociativeArrayType.js +52 -0
  269. package/dist/types/AssociativeArrayType.js.map +1 -0
  270. package/dist/types/BaseFunctionType.d.ts +9 -0
  271. package/dist/types/BaseFunctionType.js +25 -0
  272. package/dist/types/BaseFunctionType.js.map +1 -0
  273. package/dist/types/BooleanType.d.ts +2 -1
  274. package/dist/types/BooleanType.js +8 -2
  275. package/dist/types/BooleanType.js.map +1 -1
  276. package/dist/types/BscType.d.ts +10 -6
  277. package/dist/types/BscType.js +69 -16
  278. package/dist/types/BscType.js.map +1 -1
  279. package/dist/types/BscTypeKind.d.ts +3 -0
  280. package/dist/types/BscTypeKind.js +3 -0
  281. package/dist/types/BscTypeKind.js.map +1 -1
  282. package/dist/types/BuiltInInterfaceAdder.d.ts +23 -0
  283. package/dist/types/BuiltInInterfaceAdder.js +157 -0
  284. package/dist/types/BuiltInInterfaceAdder.js.map +1 -0
  285. package/dist/types/BuiltInInterfaceAdder.spec.d.ts +1 -0
  286. package/dist/types/BuiltInInterfaceAdder.spec.js +116 -0
  287. package/dist/types/BuiltInInterfaceAdder.spec.js.map +1 -0
  288. package/dist/types/ClassType.d.ts +10 -4
  289. package/dist/types/ClassType.js +32 -5
  290. package/dist/types/ClassType.js.map +1 -1
  291. package/dist/types/ClassType.spec.js +5 -3
  292. package/dist/types/ClassType.spec.js.map +1 -1
  293. package/dist/types/ComponentType.d.ts +26 -0
  294. package/dist/types/ComponentType.js +83 -0
  295. package/dist/types/ComponentType.js.map +1 -0
  296. package/dist/types/DoubleType.d.ts +2 -1
  297. package/dist/types/DoubleType.js +9 -2
  298. package/dist/types/DoubleType.js.map +1 -1
  299. package/dist/types/DynamicType.d.ts +2 -2
  300. package/dist/types/DynamicType.js +3 -1
  301. package/dist/types/DynamicType.js.map +1 -1
  302. package/dist/types/EnumType.d.ts +24 -6
  303. package/dist/types/EnumType.js +29 -7
  304. package/dist/types/EnumType.js.map +1 -1
  305. package/dist/types/FloatType.d.ts +2 -1
  306. package/dist/types/FloatType.js +9 -2
  307. package/dist/types/FloatType.js.map +1 -1
  308. package/dist/types/FunctionType.d.ts +8 -20
  309. package/dist/types/FunctionType.js +17 -45
  310. package/dist/types/FunctionType.js.map +1 -1
  311. package/dist/types/InheritableType.d.ts +7 -4
  312. package/dist/types/InheritableType.js +67 -3
  313. package/dist/types/InheritableType.js.map +1 -1
  314. package/dist/types/IntegerType.d.ts +2 -1
  315. package/dist/types/IntegerType.js +9 -2
  316. package/dist/types/IntegerType.js.map +1 -1
  317. package/dist/types/InterfaceType.d.ts +6 -4
  318. package/dist/types/InterfaceType.js +8 -11
  319. package/dist/types/InterfaceType.js.map +1 -1
  320. package/dist/types/InterfaceType.spec.js +30 -2
  321. package/dist/types/InterfaceType.spec.js.map +1 -1
  322. package/dist/types/InvalidType.d.ts +2 -1
  323. package/dist/types/InvalidType.js +7 -1
  324. package/dist/types/InvalidType.js.map +1 -1
  325. package/dist/types/LongIntegerType.d.ts +2 -1
  326. package/dist/types/LongIntegerType.js +9 -2
  327. package/dist/types/LongIntegerType.js.map +1 -1
  328. package/dist/types/NamespaceType.d.ts +2 -1
  329. package/dist/types/NamespaceType.js +3 -0
  330. package/dist/types/NamespaceType.js.map +1 -1
  331. package/dist/types/ObjectType.d.ts +2 -2
  332. package/dist/types/ObjectType.js +5 -10
  333. package/dist/types/ObjectType.js.map +1 -1
  334. package/dist/types/ReferenceType.d.ts +15 -3
  335. package/dist/types/ReferenceType.js +173 -24
  336. package/dist/types/ReferenceType.js.map +1 -1
  337. package/dist/types/ReferenceType.spec.js +21 -6
  338. package/dist/types/ReferenceType.spec.js.map +1 -1
  339. package/dist/types/StringType.d.ts +2 -1
  340. package/dist/types/StringType.js +9 -2
  341. package/dist/types/StringType.js.map +1 -1
  342. package/dist/types/TypedFunctionType.d.ts +33 -0
  343. package/dist/types/TypedFunctionType.js +106 -0
  344. package/dist/types/TypedFunctionType.js.map +1 -0
  345. package/dist/types/TypedFunctionType.spec.d.ts +1 -0
  346. package/dist/types/TypedFunctionType.spec.js +122 -0
  347. package/dist/types/TypedFunctionType.spec.js.map +1 -0
  348. package/dist/types/UninitializedType.d.ts +2 -1
  349. package/dist/types/UninitializedType.js +1 -1
  350. package/dist/types/UninitializedType.js.map +1 -1
  351. package/dist/types/UnionType.d.ts +4 -2
  352. package/dist/types/UnionType.js +36 -4
  353. package/dist/types/UnionType.js.map +1 -1
  354. package/dist/types/UnionType.spec.js +46 -19
  355. package/dist/types/UnionType.spec.js.map +1 -1
  356. package/dist/types/VoidType.d.ts +2 -1
  357. package/dist/types/VoidType.js +7 -2
  358. package/dist/types/VoidType.js.map +1 -1
  359. package/dist/types/helper.spec.js +15 -0
  360. package/dist/types/helper.spec.js.map +1 -1
  361. package/dist/types/helpers.d.ts +5 -0
  362. package/dist/types/helpers.js +50 -3
  363. package/dist/types/helpers.js.map +1 -1
  364. package/dist/types/index.d.ts +1 -1
  365. package/dist/types/index.js +1 -1
  366. package/dist/types/index.js.map +1 -1
  367. package/dist/util.d.ts +71 -15
  368. package/dist/util.js +578 -150
  369. package/dist/util.js.map +1 -1
  370. package/dist/validators/ClassValidator.d.ts +0 -1
  371. package/dist/validators/ClassValidator.js +0 -22
  372. package/dist/validators/ClassValidator.js.map +1 -1
  373. package/package.json +3 -2
  374. package/dist/astUtils/AstEditor.js.map +0 -1
  375. package/dist/astUtils/AstEditor.spec.js.map +0 -1
  376. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +0 -1
  377. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js +0 -31
  378. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js.map +0 -1
  379. package/dist/types/FunctionType.spec.js +0 -23
  380. package/dist/types/FunctionType.spec.js.map +0 -1
  381. /package/dist/astUtils/{AstEditor.spec.d.ts → Editor.spec.d.ts} +0 -0
  382. /package/dist/bscPlugin/{transpile/BrsFilePreTranspileProcessor.spec.d.ts → completions/CompletionsProcessor.spec.d.ts} +0 -0
  383. /package/dist/{types/FunctionType.spec.d.ts → bscPlugin/serialize/BslibInjector.spec.d.ts} +0 -0
@@ -64,6 +64,27 @@ describe('BrsFile BrighterScript classes', () => {
64
64
  DiagnosticMessages_1.DiagnosticMessages.classConstructorMissingSuperCall()
65
65
  ]);
66
66
  });
67
+ it('allows class named `optional`', () => {
68
+ program.setFile('source/main.bs', `
69
+ class optional
70
+ thing = 1
71
+ end class
72
+ `);
73
+ program.validate();
74
+ (0, testHelpers_spec_1.expectZeroDiagnostics)(program);
75
+ });
76
+ it('supports optional fields', () => {
77
+ program.setFile('source/main.bs', `
78
+ class Movie
79
+ name as string
80
+ optional subtitles as string
81
+ public optional isRepeatEnabled as boolean
82
+ private optional wasPlayed
83
+ end class
84
+ `);
85
+ program.validate();
86
+ (0, testHelpers_spec_1.expectZeroDiagnostics)(program);
87
+ });
67
88
  it('access modifier is option for override', () => {
68
89
  let file = program.setFile({ src: `${testHelpers_spec_2.rootDir}/source/main.bs`, dest: 'source/main.bs' }, `
69
90
  class Animal
@@ -143,7 +164,7 @@ describe('BrsFile BrighterScript classes', () => {
143
164
  end sub
144
165
  end class
145
166
  class Duck extends Bird
146
- sub new()
167
+ sub new(name)
147
168
  thing = { m: "m"}
148
169
  print thing.m
149
170
  name = "Donald" + "Duck"
@@ -157,18 +178,20 @@ describe('BrsFile BrighterScript classes', () => {
157
178
  it('allows non-`m` expressions and statements before the super call', () => {
158
179
  program.setFile('source/main.bs', `
159
180
  class Bird
160
- sub new(name)
181
+ name as string
182
+ sub new(name as string)
183
+ m.name = name
161
184
  end sub
162
185
  end class
163
186
  class Duck extends Bird
164
187
  sub new()
165
188
  m.name = m.name + "Duck"
166
- super()
189
+ super("Flappy")
167
190
  end sub
168
191
  end class
169
192
  `);
170
193
  program.validate();
171
- (0, testHelpers_spec_1.expectDiagnostics)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.classConstructorIllegalUseOfMBeforeSuperCall()), { range: vscode_languageserver_1.Range.create(7, 24, 7, 25) }), Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.classConstructorIllegalUseOfMBeforeSuperCall()), { range: vscode_languageserver_1.Range.create(7, 33, 7, 34) })]);
194
+ (0, testHelpers_spec_1.expectDiagnostics)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.classConstructorIllegalUseOfMBeforeSuperCall()), { range: vscode_languageserver_1.Range.create(9, 24, 9, 25) }), Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.classConstructorIllegalUseOfMBeforeSuperCall()), { range: vscode_languageserver_1.Range.create(9, 33, 9, 34) })]);
172
195
  });
173
196
  });
174
197
  describe('transpile', () => {
@@ -184,22 +207,22 @@ describe('BrsFile BrighterScript classes', () => {
184
207
  end class
185
208
  `);
186
209
  (0, chai_config_spec_1.expect)(file.ast.statements[1].body[0].func.body.statements[0].expression.callee.name.text).to.eql('super');
187
- await program.transpile([], testHelpers_spec_2.stagingDir);
210
+ await program.getTranspiledFileContents(file.srcPath);
188
211
  (0, chai_config_spec_1.expect)(file.ast.statements[1].body[0].func.body.statements[0].expression.callee.name.text).to.eql('super');
189
212
  });
190
- it('follows correct sequence for property initializers', () => {
191
- testTranspile(`
213
+ it('follows correct sequence for property initializers', async () => {
214
+ await testTranspile(`
192
215
  class Animal
193
216
  species1 = "Animal"
194
217
  sub new()
195
- print "From Animal: " + m.species
218
+ print "From Animal: " + m.species1
196
219
  end sub
197
220
  end class
198
221
  class Duck extends Animal
199
222
  species2 = "Duck"
200
223
  sub new()
201
224
  super()
202
- print "From Duck: " + m.species
225
+ print "From Duck: " + m.species2
203
226
  end sub
204
227
  end class
205
228
  `, `
@@ -207,7 +230,7 @@ describe('BrsFile BrighterScript classes', () => {
207
230
  instance = {}
208
231
  instance.new = sub()
209
232
  m.species1 = "Animal"
210
- print "From Animal: " + m.species
233
+ print "From Animal: " + m.species1
211
234
  end sub
212
235
  return instance
213
236
  end function
@@ -222,7 +245,7 @@ describe('BrsFile BrighterScript classes', () => {
222
245
  instance.new = sub()
223
246
  m.super0_new()
224
247
  m.species2 = "Duck"
225
- print "From Duck: " + m.species
248
+ print "From Duck: " + m.species2
226
249
  end sub
227
250
  return instance
228
251
  end function
@@ -233,8 +256,8 @@ describe('BrsFile BrighterScript classes', () => {
233
256
  end function
234
257
  `, 'trim', 'source/main.bs');
235
258
  });
236
- it('allows comments as first line of constructor', () => {
237
- testTranspile(`
259
+ it('allows comments as first line of constructor', async () => {
260
+ await testTranspile(`
238
261
  class Animal
239
262
  end class
240
263
  class Duck extends Animal
@@ -271,8 +294,8 @@ describe('BrsFile BrighterScript classes', () => {
271
294
  end function
272
295
  `);
273
296
  });
274
- it('does not inject a call to super if one exists', () => {
275
- testTranspile(`
297
+ it('does not inject a call to super if one exists', async () => {
298
+ await testTranspile(`
276
299
  class Animal
277
300
  end class
278
301
  class Duck extends Animal
@@ -309,8 +332,8 @@ describe('BrsFile BrighterScript classes', () => {
309
332
  end function
310
333
  `);
311
334
  });
312
- it('handles class inheritance inferred constructor calls', () => {
313
- testTranspile(`
335
+ it('handles class inheritance inferred constructor calls', async () => {
336
+ await testTranspile(`
314
337
  class Animal
315
338
  className1 = "Animal"
316
339
  end class
@@ -363,8 +386,8 @@ describe('BrsFile BrighterScript classes', () => {
363
386
  end function
364
387
  `, undefined, 'source/main.bs');
365
388
  });
366
- it('works with namespaces', () => {
367
- testTranspile(`
389
+ it('works with namespaces', async () => {
390
+ await testTranspile(`
368
391
  namespace Birds.WaterFowl
369
392
  class Duck
370
393
  end class
@@ -398,8 +421,8 @@ describe('BrsFile BrighterScript classes', () => {
398
421
  end function
399
422
  `, undefined, 'source/main.bs');
400
423
  });
401
- it('works for simple class', () => {
402
- testTranspile(`
424
+ it('works for simple class', async () => {
425
+ await testTranspile(`
403
426
  class Duck
404
427
  end class
405
428
  `, `
@@ -416,8 +439,8 @@ describe('BrsFile BrighterScript classes', () => {
416
439
  end function
417
440
  `, undefined, 'source/main.bs');
418
441
  });
419
- it('registers the constructor and properly handles its parameters', () => {
420
- testTranspile(`
442
+ it('registers the constructor and properly handles its parameters', async () => {
443
+ await testTranspile(`
421
444
  class Duck
422
445
  sub new(name as string, age as integer)
423
446
  end sub
@@ -436,11 +459,14 @@ describe('BrsFile BrighterScript classes', () => {
436
459
  end function
437
460
  `, undefined, 'source/main.bs');
438
461
  });
439
- it('properly handles child class constructor override and super calls', () => {
440
- testTranspile(`
462
+ it('properly handles child class constructor override and super calls', async () => {
463
+ await testTranspile(`
441
464
  class Animal
442
465
  sub new(name as string)
443
466
  end sub
467
+
468
+ sub DoSomething()
469
+ end sub
444
470
  end class
445
471
 
446
472
  class Duck extends Animal
@@ -454,6 +480,8 @@ describe('BrsFile BrighterScript classes', () => {
454
480
  instance = {}
455
481
  instance.new = sub(name as string)
456
482
  end sub
483
+ instance.DoSomething = sub()
484
+ end sub
457
485
  return instance
458
486
  end function
459
487
  function Animal(name as string)
@@ -477,8 +505,8 @@ describe('BrsFile BrighterScript classes', () => {
477
505
  end function
478
506
  `, undefined, 'source/main.bs');
479
507
  });
480
- it('transpiles super in nested blocks', () => {
481
- testTranspile(`
508
+ it('transpiles super in nested blocks', async () => {
509
+ await testTranspile(`
482
510
  class Creature
483
511
  sub new(name as string)
484
512
  end sub
@@ -532,7 +560,7 @@ describe('BrsFile BrighterScript classes', () => {
532
560
  end function
533
561
  `, 'trim', 'source/main.bs');
534
562
  });
535
- it('properly transpiles classes from outside current namespace', () => {
563
+ it('properly transpiles classes from outside current namespace', async () => {
536
564
  addFile('source/Animals.bs', `
537
565
  namespace Animals
538
566
  class Duck
@@ -541,7 +569,7 @@ describe('BrsFile BrighterScript classes', () => {
541
569
  class Bird
542
570
  end class
543
571
  `);
544
- testTranspile(`
572
+ await testTranspile(`
545
573
  namespace Animals
546
574
  sub init()
547
575
  donaldDuck = new Duck()
@@ -557,8 +585,8 @@ describe('BrsFile BrighterScript classes', () => {
557
585
  end sub
558
586
  `, undefined, 'source/main.bs');
559
587
  });
560
- it('properly transpiles new statement for missing class ', () => {
561
- testTranspile(`
588
+ it('properly transpiles new statement for missing class ', async () => {
589
+ await testTranspile(`
562
590
  sub main()
563
591
  bob = new Human()
564
592
  end sub
@@ -568,14 +596,14 @@ describe('BrsFile BrighterScript classes', () => {
568
596
  end sub
569
597
  `, undefined, 'source/main.bs', false);
570
598
  });
571
- it('new keyword transpiles correctly', () => {
599
+ it('new keyword transpiles correctly', async () => {
572
600
  addFile('source/Animal.bs', `
573
601
  class Animal
574
602
  sub new(name as string)
575
603
  end sub
576
604
  end class
577
605
  `);
578
- testTranspile(`
606
+ await testTranspile(`
579
607
  sub main()
580
608
  a = new Animal("donald")
581
609
  end sub
@@ -585,8 +613,8 @@ describe('BrsFile BrighterScript classes', () => {
585
613
  end sub
586
614
  `, undefined, 'source/main.bs');
587
615
  });
588
- it('calls super ', () => {
589
- const { file } = testTranspile(`
616
+ it('calls super ', async () => {
617
+ const { file } = await testTranspile(`
590
618
  class Parent
591
619
  sub new()
592
620
  end sub
@@ -625,8 +653,8 @@ describe('BrsFile BrighterScript classes', () => {
625
653
  const constructor = file.ast.statements[0].body[0];
626
654
  (0, chai_config_spec_1.expect)(constructor.func.body.statements).to.be.lengthOf(0);
627
655
  });
628
- it('adds field initializers', () => {
629
- const { file } = testTranspile(`
656
+ it('adds field initializers', async () => {
657
+ const { file } = await testTranspile(`
630
658
  class Person
631
659
  sub new()
632
660
  end sub
@@ -650,8 +678,8 @@ describe('BrsFile BrighterScript classes', () => {
650
678
  const constructor = file.ast.statements[0].body[0];
651
679
  (0, chai_config_spec_1.expect)(constructor.func.body.statements).to.be.lengthOf(0);
652
680
  });
653
- it('does not screw up local variable references', () => {
654
- testTranspile(`
681
+ it('does not screw up local variable references', async () => {
682
+ await testTranspile(`
655
683
  class Animal
656
684
  sub new(name as string)
657
685
  m.name = name
@@ -758,8 +786,8 @@ describe('BrsFile BrighterScript classes', () => {
758
786
  end sub
759
787
  `, 'trim', 'source/main.bs');
760
788
  });
761
- it('calculates the proper super index', () => {
762
- testTranspile(`
789
+ it('calculates the proper super index', async () => {
790
+ await testTranspile(`
763
791
  class Duck
764
792
  public sub walk(meters as integer)
765
793
  print "Walked " + meters.ToStr() + " meters"
@@ -807,6 +835,305 @@ describe('BrsFile BrighterScript classes', () => {
807
835
  end function
808
836
  `, 'trim', 'source/main.bs');
809
837
  });
838
+ it('adds namespacing to constructors on field definitions', async () => {
839
+ await testTranspile(`
840
+ namespace MyNS
841
+ class KlassOne
842
+ other = new KlassTwo()
843
+ end class
844
+
845
+ class KlassTwo
846
+ end class
847
+ end namespace
848
+ `, `
849
+ function __MyNS_KlassOne_builder()
850
+ instance = {}
851
+ instance.new = sub()
852
+ m.other = MyNS_KlassTwo()
853
+ end sub
854
+ return instance
855
+ end function
856
+ function MyNS_KlassOne()
857
+ instance = __MyNS_KlassOne_builder()
858
+ instance.new()
859
+ return instance
860
+ end function
861
+ function __MyNS_KlassTwo_builder()
862
+ instance = {}
863
+ instance.new = sub()
864
+ end sub
865
+ return instance
866
+ end function
867
+ function MyNS_KlassTwo()
868
+ instance = __MyNS_KlassTwo_builder()
869
+ instance.new()
870
+ return instance
871
+ end function
872
+ `, 'trim', 'source/main.bs');
873
+ });
874
+ it('works with enums as field initial values inside a namespace', async () => {
875
+ await testTranspile(`
876
+ namespace MyNS
877
+ class HasEnumKlass
878
+ enumValue = MyEnum.A
879
+ end class
880
+ enum MyEnum
881
+ A = "A"
882
+ B = "B"
883
+ end enum
884
+ end namespace
885
+ `, `
886
+ function __MyNS_HasEnumKlass_builder()
887
+ instance = {}
888
+ instance.new = sub()
889
+ m.enumValue = "A"
890
+ end sub
891
+ return instance
892
+ end function
893
+ function MyNS_HasEnumKlass()
894
+ instance = __MyNS_HasEnumKlass_builder()
895
+ instance.new()
896
+ return instance
897
+ end function
898
+ `, 'trim', 'source/main.bs');
899
+ });
900
+ it('allows enums as super args inside a namespace', async () => {
901
+ await testTranspile(`
902
+ namespace MyNS
903
+ class SubKlass extends SuperKlass
904
+ sub new()
905
+ super(MyEnum.B)
906
+ end sub
907
+ end class
908
+
909
+ class SuperKlass
910
+ sub new(enumVal as MyEnum)
911
+ print enumVal
912
+ end sub
913
+ end class
914
+
915
+ enum MyEnum
916
+ A = "A"
917
+ B = "B"
918
+ end enum
919
+ end namespace
920
+ `, `
921
+ function __MyNS_SubKlass_builder()
922
+ instance = __MyNS_SuperKlass_builder()
923
+ instance.super0_new = instance.new
924
+ instance.new = sub()
925
+ m.super0_new("B")
926
+ end sub
927
+ return instance
928
+ end function
929
+ function MyNS_SubKlass()
930
+ instance = __MyNS_SubKlass_builder()
931
+ instance.new()
932
+ return instance
933
+ end function
934
+ function __MyNS_SuperKlass_builder()
935
+ instance = {}
936
+ instance.new = sub(enumVal as dynamic)
937
+ print enumVal
938
+ end sub
939
+ return instance
940
+ end function
941
+ function MyNS_SuperKlass(enumVal as dynamic)
942
+ instance = __MyNS_SuperKlass_builder()
943
+ instance.new(enumVal)
944
+ return instance
945
+ end function
946
+ `, 'trim', 'source/main.bs');
947
+ });
948
+ it('works with enums as values referenced in a namespace directly', async () => {
949
+ await testTranspile(`
950
+ namespace MyNS
951
+ class HasEnumKlass
952
+ myArray = [true, true] as boolean[]
953
+ sub new()
954
+ m.myArray[MyEnum.A] = true
955
+ m.myArray[MyEnum.B] = false
956
+ end sub
957
+ end class
958
+ enum MyEnum
959
+ A = 0
960
+ B = 1
961
+ end enum
962
+ end namespace
963
+ `, `
964
+ function __MyNS_HasEnumKlass_builder()
965
+ instance = {}
966
+ instance.new = sub()
967
+ m.myArray = [
968
+ true
969
+ true
970
+ ]
971
+ m.myArray[0] = true
972
+ m.myArray[1] = false
973
+ end sub
974
+ return instance
975
+ end function
976
+ function MyNS_HasEnumKlass()
977
+ instance = __MyNS_HasEnumKlass_builder()
978
+ instance.new()
979
+ return instance
980
+ end function
981
+ `, 'trim', 'source/main.bs');
982
+ });
983
+ it('works with enums as values referenced in a namespace with namespace', async () => {
984
+ await testTranspile(`
985
+ namespace MyNS
986
+ class HasEnumKlass
987
+ myArray = [true, true] as boolean[]
988
+ sub new()
989
+ m.myArray[MyNS.MyEnum.A] = true
990
+ m.myArray[MyNS.MyEnum.B] = false
991
+ end sub
992
+ end class
993
+ enum MyEnum
994
+ A = 0
995
+ B = 1
996
+ end enum
997
+ end namespace
998
+ `, `
999
+ function __MyNS_HasEnumKlass_builder()
1000
+ instance = {}
1001
+ instance.new = sub()
1002
+ m.myArray = [
1003
+ true
1004
+ true
1005
+ ]
1006
+ m.myArray[0] = true
1007
+ m.myArray[1] = false
1008
+ end sub
1009
+ return instance
1010
+ end function
1011
+ function MyNS_HasEnumKlass()
1012
+ instance = __MyNS_HasEnumKlass_builder()
1013
+ instance.new()
1014
+ return instance
1015
+ end function
1016
+ `, 'trim', 'source/main.bs');
1017
+ });
1018
+ it('allows namespaced class function as function parameters', async () => {
1019
+ await testTranspile(`
1020
+ namespace Alpha
1021
+ function foo()
1022
+ return 1
1023
+ end function
1024
+
1025
+ function callSomeFunc(f as function)
1026
+ return f()
1027
+ end function
1028
+
1029
+ sub callFoo()
1030
+ callSomeFunc(foo)
1031
+ end sub
1032
+ end namespace
1033
+ `, `
1034
+ function Alpha_foo()
1035
+ return 1
1036
+ end function
1037
+
1038
+ function Alpha_callSomeFunc(f as function)
1039
+ return f()
1040
+ end function
1041
+
1042
+ sub Alpha_callFoo()
1043
+ Alpha_callSomeFunc(Alpha_foo)
1044
+ end sub
1045
+ `, 'trim', 'source/main.bs');
1046
+ });
1047
+ it('allows namespaced class constructors as function parameters', async () => {
1048
+ await testTranspile(`
1049
+ namespace Alpha
1050
+ class Button
1051
+ end class
1052
+
1053
+ function callSomeFunc(f as function)
1054
+ return f()
1055
+ end function
1056
+
1057
+ sub makeButton()
1058
+ callSomeFunc(Button)
1059
+ end sub
1060
+ end namespace
1061
+ `, `
1062
+ function __Alpha_Button_builder()
1063
+ instance = {}
1064
+ instance.new = sub()
1065
+ end sub
1066
+ return instance
1067
+ end function
1068
+ function Alpha_Button()
1069
+ instance = __Alpha_Button_builder()
1070
+ instance.new()
1071
+ return instance
1072
+ end function
1073
+
1074
+ function Alpha_callSomeFunc(f as function)
1075
+ return f()
1076
+ end function
1077
+
1078
+ sub Alpha_makeButton()
1079
+ Alpha_callSomeFunc(Alpha_Button)
1080
+ end sub
1081
+ `, 'trim', 'source/main.bs');
1082
+ });
1083
+ it('allows class constructors as functions in array', async () => {
1084
+ await testTranspile(`
1085
+ namespace Alpha
1086
+ class Button
1087
+ end class
1088
+
1089
+ class ButtonContainer
1090
+ private button = new Alpha.Button()
1091
+
1092
+ sub new()
1093
+ m.init()
1094
+ end sub
1095
+
1096
+ sub init()
1097
+ button = new Alpha.Button()
1098
+ items = [m.button, button, Alpha.Button]
1099
+ end sub
1100
+ end class
1101
+ end namespace
1102
+ `, `
1103
+ function __Alpha_Button_builder()
1104
+ instance = {}
1105
+ instance.new = sub()
1106
+ end sub
1107
+ return instance
1108
+ end function
1109
+ function Alpha_Button()
1110
+ instance = __Alpha_Button_builder()
1111
+ instance.new()
1112
+ return instance
1113
+ end function
1114
+ function __Alpha_ButtonContainer_builder()
1115
+ instance = {}
1116
+ instance.new = sub()
1117
+ m.button = Alpha_Button()
1118
+ m.init()
1119
+ end sub
1120
+ instance.init = sub()
1121
+ button = Alpha_Button()
1122
+ items = [
1123
+ m.button
1124
+ Alpha_button
1125
+ Alpha_Button
1126
+ ]
1127
+ end sub
1128
+ return instance
1129
+ end function
1130
+ function Alpha_ButtonContainer()
1131
+ instance = __Alpha_ButtonContainer_builder()
1132
+ instance.new()
1133
+ return instance
1134
+ end function
1135
+ `, 'trim', 'source/main.bs');
1136
+ });
810
1137
  });
811
1138
  it('detects using `new` keyword on non-classes', () => {
812
1139
  program.setFile('source/main.bs', `
@@ -898,9 +1225,9 @@ describe('BrsFile BrighterScript classes', () => {
898
1225
  end function
899
1226
  end class
900
1227
  `);
901
- await program.transpile([], testHelpers_spec_2.stagingDir);
1228
+ await program.build({ stagingDir: testHelpers_spec_2.stagingDir });
902
1229
  fsExtra.emptyDirSync(testHelpers_spec_2.stagingDir);
903
- await program.transpile([], testHelpers_spec_2.stagingDir);
1230
+ await program.build({ stagingDir: testHelpers_spec_2.stagingDir });
904
1231
  (0, chai_config_spec_1.expect)(fsExtra.readFileSync((0, util_1.standardizePath) `${testHelpers_spec_2.stagingDir}/source/lib.brs`).toString().trimEnd()).to.eql((0, testHelpers_spec_1.trim) `
905
1232
  function __Being_builder()
906
1233
  instance = {}
@@ -1137,7 +1464,7 @@ describe('BrsFile BrighterScript classes', () => {
1137
1464
  `);
1138
1465
  program.validate();
1139
1466
  (0, testHelpers_spec_1.expectDiagnostics)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.cannotFindName('GroundedBird', 'Vertibrates.GroundedBird')), { relatedInformation: [{
1140
- message: `Not defined in scope 'source'`
1467
+ message: `In scope 'source'`
1141
1468
  }] })]);
1142
1469
  });
1143
1470
  it('namespaced parent class from inside namespace', () => {
@@ -1224,8 +1551,8 @@ describe('BrsFile BrighterScript classes', () => {
1224
1551
  end class
1225
1552
  `);
1226
1553
  program.validate();
1227
- (0, testHelpers_spec_1.expectDiagnostics)(program, [
1228
- DiagnosticMessages_1.DiagnosticMessages.duplicateClassDeclaration('source', 'Animal')
1554
+ (0, testHelpers_spec_1.expectDiagnosticsIncludes)(program, [
1555
+ DiagnosticMessages_1.DiagnosticMessages.nameCollision('Class', 'Class', 'Animal')
1229
1556
  ]);
1230
1557
  });
1231
1558
  it('catches duplicate namespace-level class declarations', () => {
@@ -1238,8 +1565,8 @@ describe('BrsFile BrighterScript classes', () => {
1238
1565
  end namespace
1239
1566
  `);
1240
1567
  program.validate();
1241
- (0, testHelpers_spec_1.expectDiagnostics)(program, [
1242
- DiagnosticMessages_1.DiagnosticMessages.duplicateClassDeclaration('source', 'NameA.NameB.Animal')
1568
+ (0, testHelpers_spec_1.expectDiagnosticsIncludes)(program, [
1569
+ DiagnosticMessages_1.DiagnosticMessages.nameCollision('Class', 'Class', 'Animal').message
1243
1570
  ]);
1244
1571
  });
1245
1572
  it('catches namespaced class name which is the same as a global class', () => {
@@ -1253,7 +1580,7 @@ describe('BrsFile BrighterScript classes', () => {
1253
1580
  `);
1254
1581
  program.validate();
1255
1582
  (0, testHelpers_spec_1.expectDiagnostics)(program, [
1256
- DiagnosticMessages_1.DiagnosticMessages.namespacedClassCannotShareNamewithNonNamespacedClass('Animal').message
1583
+ DiagnosticMessages_1.DiagnosticMessages.nameCollision('Class', 'Class', 'Animal').message
1257
1584
  ]);
1258
1585
  });
1259
1586
  it('catches class with same name as function', () => {
@@ -1264,7 +1591,7 @@ describe('BrsFile BrighterScript classes', () => {
1264
1591
  end sub
1265
1592
  `);
1266
1593
  program.validate();
1267
- (0, testHelpers_spec_1.expectDiagnostics)(program, [
1594
+ (0, testHelpers_spec_1.expectDiagnosticsIncludes)(program, [
1268
1595
  DiagnosticMessages_1.DiagnosticMessages.functionCannotHaveSameNameAsClass('Animal').message
1269
1596
  ]);
1270
1597
  });
@@ -1276,7 +1603,7 @@ describe('BrsFile BrighterScript classes', () => {
1276
1603
  end sub
1277
1604
  `);
1278
1605
  program.validate();
1279
- (0, testHelpers_spec_1.expectDiagnostics)(program, [
1606
+ (0, testHelpers_spec_1.expectDiagnosticsIncludes)(program, [
1280
1607
  DiagnosticMessages_1.DiagnosticMessages.functionCannotHaveSameNameAsClass('animal').message
1281
1608
  ]);
1282
1609
  });
@@ -1321,7 +1648,7 @@ describe('BrsFile BrighterScript classes', () => {
1321
1648
  program.validate();
1322
1649
  (0, testHelpers_spec_1.expectZeroDiagnostics)(program);
1323
1650
  });
1324
- it('computes correct super index for grandchild class', () => {
1651
+ it('computes correct super index for grandchild class', async () => {
1325
1652
  program.setFile('source/main.bs', `
1326
1653
  sub Main()
1327
1654
  c = new App.ClassC()
@@ -1335,7 +1662,7 @@ describe('BrsFile BrighterScript classes', () => {
1335
1662
  end class
1336
1663
  end namespace
1337
1664
  `);
1338
- testTranspile(`
1665
+ await testTranspile(`
1339
1666
  namespace App
1340
1667
  class ClassC extends ClassB
1341
1668
  sub new()
@@ -1359,12 +1686,12 @@ describe('BrsFile BrighterScript classes', () => {
1359
1686
  end function
1360
1687
  `, 'trim', 'source/App.ClassC.bs');
1361
1688
  });
1362
- it('computes correct super index for namespaced child class and global parent class', () => {
1689
+ it('computes correct super index for namespaced child class and global parent class', async () => {
1363
1690
  program.setFile('source/ClassA.bs', `
1364
1691
  class ClassA
1365
1692
  end class
1366
1693
  `);
1367
- testTranspile(`
1694
+ await testTranspile(`
1368
1695
  namespace App
1369
1696
  class ClassB extends ClassA
1370
1697
  end class
@@ -1418,7 +1745,7 @@ describe('BrsFile BrighterScript classes', () => {
1418
1745
  `);
1419
1746
  program.validate();
1420
1747
  });
1421
- it.skip('detects calling class constructors with too many parameters', () => {
1748
+ it('detects calling class constructors with too many parameters', () => {
1422
1749
  program.setFile('source/main.bs', `
1423
1750
  class Parameterless
1424
1751
  sub new()