brighterscript 0.66.0-alpha.8 → 0.67.0

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 (472) hide show
  1. package/CHANGELOG.md +120 -71
  2. package/README.md +14 -418
  3. package/dist/BsConfig.d.ts +25 -2
  4. package/dist/Cache.js +3 -3
  5. package/dist/Cache.js.map +1 -1
  6. package/dist/CodeActionUtil.d.ts +3 -3
  7. package/dist/CodeActionUtil.js.map +1 -1
  8. package/dist/CommentFlagProcessor.d.ts +3 -4
  9. package/dist/CommentFlagProcessor.js +4 -3
  10. package/dist/CommentFlagProcessor.js.map +1 -1
  11. package/dist/DependencyGraph.js +8 -8
  12. package/dist/DependencyGraph.js.map +1 -1
  13. package/dist/DiagnosticFilterer.d.ts +8 -4
  14. package/dist/DiagnosticFilterer.js +71 -38
  15. package/dist/DiagnosticFilterer.js.map +1 -1
  16. package/dist/DiagnosticMessages.d.ts +15 -36
  17. package/dist/DiagnosticMessages.js +15 -61
  18. package/dist/DiagnosticMessages.js.map +1 -1
  19. package/dist/DiagnosticSeverityAdjuster.js +3 -0
  20. package/dist/DiagnosticSeverityAdjuster.js.map +1 -1
  21. package/dist/FunctionScope.d.ts +2 -3
  22. package/dist/FunctionScope.js +0 -3
  23. package/dist/FunctionScope.js.map +1 -1
  24. package/dist/LanguageServer.d.ts +1 -2
  25. package/dist/LanguageServer.js +29 -35
  26. package/dist/LanguageServer.js.map +1 -1
  27. package/dist/Logger.d.ts +5 -9
  28. package/dist/Logger.js +18 -22
  29. package/dist/Logger.js.map +1 -1
  30. package/dist/PluginInterface.d.ts +13 -15
  31. package/dist/PluginInterface.js +16 -70
  32. package/dist/PluginInterface.js.map +1 -1
  33. package/dist/Program.d.ts +105 -138
  34. package/dist/Program.js +479 -702
  35. package/dist/Program.js.map +1 -1
  36. package/dist/ProgramBuilder.d.ts +8 -19
  37. package/dist/ProgramBuilder.js +82 -87
  38. package/dist/ProgramBuilder.js.map +1 -1
  39. package/dist/Scope.d.ts +56 -46
  40. package/dist/Scope.js +281 -217
  41. package/dist/Scope.js.map +1 -1
  42. package/dist/Stopwatch.js +1 -1
  43. package/dist/Stopwatch.js.map +1 -1
  44. package/dist/SymbolTable.d.ts +12 -68
  45. package/dist/SymbolTable.js +28 -213
  46. package/dist/SymbolTable.js.map +1 -1
  47. package/dist/XmlScope.d.ts +5 -7
  48. package/dist/XmlScope.js +36 -76
  49. package/dist/XmlScope.js.map +1 -1
  50. package/dist/astUtils/{Editor.d.ts → AstEditor.d.ts} +1 -6
  51. package/dist/astUtils/{Editor.js → AstEditor.js} +3 -9
  52. package/dist/astUtils/AstEditor.js.map +1 -0
  53. package/dist/astUtils/{Editor.spec.js → AstEditor.spec.js} +6 -10
  54. package/dist/astUtils/AstEditor.spec.js.map +1 -0
  55. package/dist/astUtils/creators.d.ts +8 -19
  56. package/dist/astUtils/creators.js +22 -54
  57. package/dist/astUtils/creators.js.map +1 -1
  58. package/dist/astUtils/creators.spec.js +0 -10
  59. package/dist/astUtils/creators.spec.js.map +1 -1
  60. package/dist/astUtils/reflection.d.ts +45 -81
  61. package/dist/astUtils/reflection.js +157 -220
  62. package/dist/astUtils/reflection.js.map +1 -1
  63. package/dist/astUtils/reflection.spec.js +19 -96
  64. package/dist/astUtils/reflection.spec.js.map +1 -1
  65. package/dist/astUtils/stackedVisitor.spec.js.map +1 -1
  66. package/dist/astUtils/visitors.d.ts +14 -18
  67. package/dist/astUtils/visitors.js +9 -22
  68. package/dist/astUtils/visitors.js.map +1 -1
  69. package/dist/astUtils/visitors.spec.js +9 -62
  70. package/dist/astUtils/visitors.spec.js.map +1 -1
  71. package/dist/astUtils/xml.d.ts +9 -9
  72. package/dist/astUtils/xml.js +6 -6
  73. package/dist/astUtils/xml.js.map +1 -1
  74. package/dist/bscPlugin/BscPlugin.d.ts +8 -11
  75. package/dist/bscPlugin/BscPlugin.js +21 -29
  76. package/dist/bscPlugin/BscPlugin.js.map +1 -1
  77. package/dist/bscPlugin/CallExpressionInfo.d.ts +6 -5
  78. package/dist/bscPlugin/CallExpressionInfo.js +2 -2
  79. package/dist/bscPlugin/CallExpressionInfo.js.map +1 -1
  80. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +11 -11
  81. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
  82. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +4 -4
  83. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
  84. package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +1 -49
  85. package/dist/bscPlugin/completions/CompletionsProcessor.js +23 -424
  86. package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
  87. package/dist/bscPlugin/definition/DefinitionProvider.d.ts +13 -0
  88. package/dist/bscPlugin/definition/DefinitionProvider.js +200 -0
  89. package/dist/bscPlugin/definition/DefinitionProvider.js.map +1 -0
  90. package/dist/bscPlugin/definition/DefinitionProvider.spec.js +87 -0
  91. package/dist/bscPlugin/definition/DefinitionProvider.spec.js.map +1 -0
  92. package/dist/bscPlugin/hover/HoverProcessor.d.ts +3 -7
  93. package/dist/bscPlugin/hover/HoverProcessor.js +88 -128
  94. package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
  95. package/dist/bscPlugin/hover/HoverProcessor.spec.js +24 -336
  96. package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
  97. package/dist/bscPlugin/references/ReferencesProvider.d.ts +12 -0
  98. package/dist/bscPlugin/references/ReferencesProvider.js +56 -0
  99. package/dist/bscPlugin/references/ReferencesProvider.js.map +1 -0
  100. package/dist/bscPlugin/references/ReferencesProvider.spec.js +51 -0
  101. package/dist/bscPlugin/references/ReferencesProvider.spec.js.map +1 -0
  102. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +0 -1
  103. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +5 -49
  104. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
  105. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +0 -22
  106. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -1
  107. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.d.ts +7 -0
  108. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.js +22 -0
  109. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.js.map +1 -0
  110. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.js +290 -0
  111. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.js.map +1 -0
  112. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.d.ts +7 -0
  113. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.js +26 -0
  114. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.js.map +1 -0
  115. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.js +245 -0
  116. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.js.map +1 -0
  117. package/dist/bscPlugin/symbols/symbolUtils.d.ts +5 -0
  118. package/dist/bscPlugin/symbols/symbolUtils.js +140 -0
  119. package/dist/bscPlugin/symbols/symbolUtils.js.map +1 -0
  120. package/dist/bscPlugin/transpile/{BrsFileTranspileProcessor.d.ts → BrsFilePreTranspileProcessor.d.ts} +2 -4
  121. package/dist/bscPlugin/transpile/{BrsFileTranspileProcessor.js → BrsFilePreTranspileProcessor.js} +15 -36
  122. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +1 -0
  123. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js +46 -0
  124. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js.map +1 -0
  125. package/dist/bscPlugin/validation/BrsFileValidator.d.ts +1 -0
  126. package/dist/bscPlugin/validation/BrsFileValidator.js +30 -41
  127. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
  128. package/dist/bscPlugin/validation/BrsFileValidator.spec.js +2 -2
  129. package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +1 -1
  130. package/dist/bscPlugin/validation/ProgramValidator.d.ts +3 -3
  131. package/dist/bscPlugin/validation/ProgramValidator.js +6 -6
  132. package/dist/bscPlugin/validation/ProgramValidator.js.map +1 -1
  133. package/dist/bscPlugin/validation/ScopeValidator.d.ts +6 -28
  134. package/dist/bscPlugin/validation/ScopeValidator.js +166 -387
  135. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
  136. package/dist/bscPlugin/validation/XmlFileValidator.js +9 -9
  137. package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -1
  138. package/dist/diagnosticUtils.d.ts +2 -3
  139. package/dist/diagnosticUtils.js +5 -5
  140. package/dist/diagnosticUtils.js.map +1 -1
  141. package/dist/examples/plugins/removePrint.js +1 -1
  142. package/dist/examples/plugins/removePrint.js.map +1 -1
  143. package/dist/files/BrsFile.Class.spec.js +143 -114
  144. package/dist/files/BrsFile.Class.spec.js.map +1 -1
  145. package/dist/files/BrsFile.d.ts +61 -83
  146. package/dist/files/BrsFile.js +552 -607
  147. package/dist/files/BrsFile.js.map +1 -1
  148. package/dist/files/BrsFile.spec.js +1365 -1201
  149. package/dist/files/BrsFile.spec.js.map +1 -1
  150. package/dist/files/XmlFile.d.ts +28 -56
  151. package/dist/files/XmlFile.js +103 -89
  152. package/dist/files/XmlFile.js.map +1 -1
  153. package/dist/files/XmlFile.spec.js +179 -122
  154. package/dist/files/XmlFile.spec.js.map +1 -1
  155. package/dist/files/tests/imports.spec.js +19 -29
  156. package/dist/files/tests/imports.spec.js.map +1 -1
  157. package/dist/files/tests/optionalChaning.spec.js +14 -14
  158. package/dist/files/tests/optionalChaning.spec.js.map +1 -1
  159. package/dist/globalCallables.js +83 -88
  160. package/dist/globalCallables.js.map +1 -1
  161. package/dist/index.d.ts +1 -9
  162. package/dist/index.js +1 -9
  163. package/dist/index.js.map +1 -1
  164. package/dist/interfaces.d.ts +173 -423
  165. package/dist/interfaces.js +0 -24
  166. package/dist/interfaces.js.map +1 -1
  167. package/dist/lexer/Lexer.d.ts +9 -15
  168. package/dist/lexer/Lexer.js +35 -46
  169. package/dist/lexer/Lexer.js.map +1 -1
  170. package/dist/lexer/Lexer.spec.js +48 -40
  171. package/dist/lexer/Lexer.spec.js.map +1 -1
  172. package/dist/lexer/Token.d.ts +1 -5
  173. package/dist/lexer/Token.js +1 -1
  174. package/dist/lexer/Token.js.map +1 -1
  175. package/dist/lexer/TokenKind.d.ts +0 -6
  176. package/dist/lexer/TokenKind.js +2 -14
  177. package/dist/lexer/TokenKind.js.map +1 -1
  178. package/dist/logging.d.ts +9 -0
  179. package/dist/logging.js +16 -0
  180. package/dist/logging.js.map +1 -0
  181. package/dist/parser/AstNode.d.ts +6 -90
  182. package/dist/parser/AstNode.js +5 -96
  183. package/dist/parser/AstNode.js.map +1 -1
  184. package/dist/parser/AstNode.spec.js.map +1 -1
  185. package/dist/parser/BrsTranspileState.d.ts +3 -4
  186. package/dist/parser/BrsTranspileState.js +2 -3
  187. package/dist/parser/BrsTranspileState.js.map +1 -1
  188. package/dist/parser/Expression.d.ts +114 -137
  189. package/dist/parser/Expression.js +244 -373
  190. package/dist/parser/Expression.js.map +1 -1
  191. package/dist/parser/Parser.Class.spec.js +19 -46
  192. package/dist/parser/Parser.Class.spec.js.map +1 -1
  193. package/dist/parser/Parser.d.ts +18 -14
  194. package/dist/parser/Parser.js +196 -175
  195. package/dist/parser/Parser.js.map +1 -1
  196. package/dist/parser/Parser.spec.d.ts +0 -2
  197. package/dist/parser/Parser.spec.js +10 -674
  198. package/dist/parser/Parser.spec.js.map +1 -1
  199. package/dist/parser/SGParser.d.ts +6 -44
  200. package/dist/parser/SGParser.js +198 -194
  201. package/dist/parser/SGParser.js.map +1 -1
  202. package/dist/parser/SGParser.spec.js +11 -14
  203. package/dist/parser/SGParser.spec.js.map +1 -1
  204. package/dist/parser/SGTypes.d.ts +52 -280
  205. package/dist/parser/SGTypes.js +185 -562
  206. package/dist/parser/SGTypes.js.map +1 -1
  207. package/dist/parser/Statement.d.ts +140 -172
  208. package/dist/parser/Statement.js +201 -337
  209. package/dist/parser/Statement.js.map +1 -1
  210. package/dist/parser/Statement.spec.js.map +1 -1
  211. package/dist/parser/TranspileState.d.ts +3 -2
  212. package/dist/parser/TranspileState.js +8 -10
  213. package/dist/parser/TranspileState.js.map +1 -1
  214. package/dist/parser/tests/Parser.spec.js +3 -5
  215. package/dist/parser/tests/Parser.spec.js.map +1 -1
  216. package/dist/parser/tests/controlFlow/For.spec.js +8 -16
  217. package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
  218. package/dist/parser/tests/controlFlow/ForEach.spec.js +6 -12
  219. package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
  220. package/dist/parser/tests/controlFlow/While.spec.js +4 -8
  221. package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
  222. package/dist/parser/tests/expression/Call.spec.js +4 -4
  223. package/dist/parser/tests/expression/Call.spec.js.map +1 -1
  224. package/dist/parser/tests/expression/Indexing.spec.js +25 -0
  225. package/dist/parser/tests/expression/Indexing.spec.js.map +1 -1
  226. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +73 -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 +47 -35
  233. package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
  234. package/dist/parser/tests/expression/TernaryExpression.spec.js +83 -36
  235. package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
  236. package/dist/parser/tests/expression/UnaryExpression.spec.js +2 -2
  237. package/dist/parser/tests/expression/UnaryExpression.spec.js.map +1 -1
  238. package/dist/parser/tests/statement/ConstStatement.spec.js +26 -27
  239. package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -1
  240. package/dist/parser/tests/statement/Continue.spec.js +2 -2
  241. package/dist/parser/tests/statement/Continue.spec.js.map +1 -1
  242. package/dist/parser/tests/statement/Dim.spec.js.map +1 -1
  243. package/dist/parser/tests/statement/Enum.spec.js +393 -90
  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/Function.spec.js +1 -1
  250. package/dist/parser/tests/statement/Function.spec.js.map +1 -1
  251. package/dist/parser/tests/statement/InterfaceStatement.spec.js +18 -18
  252. package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
  253. package/dist/parser/tests/statement/Misc.spec.js.map +1 -1
  254. package/dist/parser/tests/statement/PrintStatement.spec.js +13 -16
  255. package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
  256. package/dist/parser/tests/statement/ReturnStatement.spec.js +3 -5
  257. package/dist/parser/tests/statement/ReturnStatement.spec.js.map +1 -1
  258. package/dist/parser/tests/statement/Set.spec.js +13 -26
  259. package/dist/parser/tests/statement/Set.spec.js.map +1 -1
  260. package/dist/parser/tests/statement/Throw.spec.js.map +1 -1
  261. package/dist/parser/tests/statement/TryCatch.spec.js.map +1 -1
  262. package/dist/preprocessor/Chunk.js +1 -2
  263. package/dist/preprocessor/Chunk.js.map +1 -1
  264. package/dist/preprocessor/Preprocessor.d.ts +3 -4
  265. package/dist/preprocessor/Preprocessor.js +3 -3
  266. package/dist/preprocessor/Preprocessor.js.map +1 -1
  267. package/dist/preprocessor/PreprocessorParser.js +8 -1
  268. package/dist/preprocessor/PreprocessorParser.js.map +1 -1
  269. package/dist/roku-types/data.json +293 -243
  270. package/dist/roku-types/index.d.ts +38 -17
  271. package/dist/types/ArrayType.d.ts +4 -9
  272. package/dist/types/ArrayType.js +24 -72
  273. package/dist/types/ArrayType.js.map +1 -1
  274. package/dist/types/ArrayType.spec.js +10 -39
  275. package/dist/types/ArrayType.spec.js.map +1 -1
  276. package/dist/types/BooleanType.d.ts +4 -8
  277. package/dist/types/BooleanType.js +8 -19
  278. package/dist/types/BooleanType.js.map +1 -1
  279. package/dist/types/BooleanType.spec.js +3 -9
  280. package/dist/types/BooleanType.spec.js.map +1 -1
  281. package/dist/types/BscType.d.ts +2 -29
  282. package/dist/types/BscType.js +0 -113
  283. package/dist/types/BscType.js.map +1 -1
  284. package/dist/types/CustomType.d.ts +9 -0
  285. package/dist/types/CustomType.js +32 -0
  286. package/dist/types/CustomType.js.map +1 -0
  287. package/dist/types/DoubleType.d.ts +4 -8
  288. package/dist/types/DoubleType.js +20 -23
  289. package/dist/types/DoubleType.js.map +1 -1
  290. package/dist/types/DoubleType.spec.js +3 -11
  291. package/dist/types/DoubleType.spec.js.map +1 -1
  292. package/dist/types/DynamicType.d.ts +3 -9
  293. package/dist/types/DynamicType.js +2 -18
  294. package/dist/types/DynamicType.js.map +1 -1
  295. package/dist/types/DynamicType.spec.js +4 -15
  296. package/dist/types/DynamicType.spec.js.map +1 -1
  297. package/dist/types/FloatType.d.ts +4 -8
  298. package/dist/types/FloatType.js +20 -23
  299. package/dist/types/FloatType.js.map +1 -1
  300. package/dist/types/FloatType.spec.js +3 -3
  301. package/dist/types/FloatType.spec.js.map +1 -1
  302. package/dist/types/FunctionType.d.ts +20 -10
  303. package/dist/types/FunctionType.js +52 -27
  304. package/dist/types/FunctionType.js.map +1 -1
  305. package/dist/types/FunctionType.spec.js +23 -0
  306. package/dist/types/FunctionType.spec.js.map +1 -0
  307. package/dist/types/IntegerType.d.ts +4 -8
  308. package/dist/types/IntegerType.js +20 -23
  309. package/dist/types/IntegerType.js.map +1 -1
  310. package/dist/types/IntegerType.spec.js +3 -7
  311. package/dist/types/IntegerType.spec.js.map +1 -1
  312. package/dist/types/InterfaceType.d.ts +10 -12
  313. package/dist/types/InterfaceType.js +48 -23
  314. package/dist/types/InterfaceType.js.map +1 -1
  315. package/dist/types/InterfaceType.spec.js +45 -82
  316. package/dist/types/InterfaceType.spec.js.map +1 -1
  317. package/dist/types/InvalidType.d.ts +4 -7
  318. package/dist/types/InvalidType.js +8 -18
  319. package/dist/types/InvalidType.js.map +1 -1
  320. package/dist/types/InvalidType.spec.js +3 -7
  321. package/dist/types/InvalidType.spec.js.map +1 -1
  322. package/dist/types/LongIntegerType.d.ts +4 -8
  323. package/dist/types/LongIntegerType.js +20 -23
  324. package/dist/types/LongIntegerType.js.map +1 -1
  325. package/dist/types/LongIntegerType.spec.js +3 -9
  326. package/dist/types/LongIntegerType.spec.js.map +1 -1
  327. package/dist/types/ObjectType.d.ts +4 -8
  328. package/dist/types/ObjectType.js +7 -21
  329. package/dist/types/ObjectType.js.map +1 -1
  330. package/dist/types/ObjectType.spec.js +2 -2
  331. package/dist/types/ObjectType.spec.js.map +1 -1
  332. package/dist/types/StringType.d.ts +4 -11
  333. package/dist/types/StringType.js +8 -23
  334. package/dist/types/StringType.js.map +1 -1
  335. package/dist/types/StringType.spec.js +2 -2
  336. package/dist/types/StringType.spec.js.map +1 -1
  337. package/dist/types/UninitializedType.d.ts +3 -7
  338. package/dist/types/UninitializedType.js +3 -14
  339. package/dist/types/UninitializedType.js.map +1 -1
  340. package/dist/types/VoidType.d.ts +4 -8
  341. package/dist/types/VoidType.js +8 -18
  342. package/dist/types/VoidType.js.map +1 -1
  343. package/dist/types/VoidType.spec.js +2 -2
  344. package/dist/types/VoidType.spec.js.map +1 -1
  345. package/dist/util.d.ts +43 -104
  346. package/dist/util.js +243 -640
  347. package/dist/util.js.map +1 -1
  348. package/dist/validators/ClassValidator.d.ts +6 -1
  349. package/dist/validators/ClassValidator.js +61 -20
  350. package/dist/validators/ClassValidator.js.map +1 -1
  351. package/package.json +13 -12
  352. package/dist/ActionPipeline.d.ts +0 -10
  353. package/dist/ActionPipeline.js +0 -40
  354. package/dist/ActionPipeline.js.map +0 -1
  355. package/dist/AstValidationSegmenter.d.ts +0 -25
  356. package/dist/AstValidationSegmenter.js +0 -150
  357. package/dist/AstValidationSegmenter.js.map +0 -1
  358. package/dist/CacheVerifier.d.ts +0 -7
  359. package/dist/CacheVerifier.js +0 -20
  360. package/dist/CacheVerifier.js.map +0 -1
  361. package/dist/astUtils/Editor.js.map +0 -1
  362. package/dist/astUtils/Editor.spec.js.map +0 -1
  363. package/dist/bscPlugin/FileWriter.d.ts +0 -6
  364. package/dist/bscPlugin/FileWriter.js +0 -24
  365. package/dist/bscPlugin/FileWriter.js.map +0 -1
  366. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +0 -1658
  367. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +0 -1
  368. package/dist/bscPlugin/fileProviders/FileProvider.d.ts +0 -9
  369. package/dist/bscPlugin/fileProviders/FileProvider.js +0 -51
  370. package/dist/bscPlugin/fileProviders/FileProvider.js.map +0 -1
  371. package/dist/bscPlugin/serialize/BslibInjector.spec.js +0 -19
  372. package/dist/bscPlugin/serialize/BslibInjector.spec.js.map +0 -1
  373. package/dist/bscPlugin/serialize/BslibManager.d.ts +0 -9
  374. package/dist/bscPlugin/serialize/BslibManager.js +0 -40
  375. package/dist/bscPlugin/serialize/BslibManager.js.map +0 -1
  376. package/dist/bscPlugin/serialize/FileSerializer.d.ts +0 -9
  377. package/dist/bscPlugin/serialize/FileSerializer.js +0 -72
  378. package/dist/bscPlugin/serialize/FileSerializer.js.map +0 -1
  379. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +0 -1
  380. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js +0 -41
  381. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js.map +0 -1
  382. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.d.ts +0 -11
  383. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js +0 -53
  384. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js.map +0 -1
  385. package/dist/bscPlugin/validation/ScopeValidator.spec.js +0 -2004
  386. package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +0 -1
  387. package/dist/files/AssetFile.d.ts +0 -26
  388. package/dist/files/AssetFile.js +0 -26
  389. package/dist/files/AssetFile.js.map +0 -1
  390. package/dist/files/Factory.d.ts +0 -25
  391. package/dist/files/Factory.js +0 -22
  392. package/dist/files/Factory.js.map +0 -1
  393. package/dist/files/File.d.ts +0 -106
  394. package/dist/files/File.js +0 -16
  395. package/dist/files/File.js.map +0 -1
  396. package/dist/files/LazyFileData.d.ts +0 -20
  397. package/dist/files/LazyFileData.js +0 -54
  398. package/dist/files/LazyFileData.js.map +0 -1
  399. package/dist/files/LazyFileData.spec.js +0 -27
  400. package/dist/files/LazyFileData.spec.js.map +0 -1
  401. package/dist/parser/tests/expression/TypeExpression.spec.js +0 -127
  402. package/dist/parser/tests/expression/TypeExpression.spec.js.map +0 -1
  403. package/dist/types/AssociativeArrayType.d.ts +0 -11
  404. package/dist/types/AssociativeArrayType.js +0 -52
  405. package/dist/types/AssociativeArrayType.js.map +0 -1
  406. package/dist/types/BaseFunctionType.d.ts +0 -9
  407. package/dist/types/BaseFunctionType.js +0 -25
  408. package/dist/types/BaseFunctionType.js.map +0 -1
  409. package/dist/types/BscTypeKind.d.ts +0 -25
  410. package/dist/types/BscTypeKind.js +0 -30
  411. package/dist/types/BscTypeKind.js.map +0 -1
  412. package/dist/types/BuiltInInterfaceAdder.d.ts +0 -23
  413. package/dist/types/BuiltInInterfaceAdder.js +0 -160
  414. package/dist/types/BuiltInInterfaceAdder.js.map +0 -1
  415. package/dist/types/BuiltInInterfaceAdder.spec.d.ts +0 -1
  416. package/dist/types/BuiltInInterfaceAdder.spec.js +0 -116
  417. package/dist/types/BuiltInInterfaceAdder.spec.js.map +0 -1
  418. package/dist/types/ClassType.d.ts +0 -17
  419. package/dist/types/ClassType.js +0 -58
  420. package/dist/types/ClassType.js.map +0 -1
  421. package/dist/types/ClassType.spec.d.ts +0 -1
  422. package/dist/types/ClassType.spec.js +0 -77
  423. package/dist/types/ClassType.spec.js.map +0 -1
  424. package/dist/types/ComponentType.d.ts +0 -26
  425. package/dist/types/ComponentType.js +0 -83
  426. package/dist/types/ComponentType.js.map +0 -1
  427. package/dist/types/EnumType.d.ts +0 -40
  428. package/dist/types/EnumType.js +0 -81
  429. package/dist/types/EnumType.js.map +0 -1
  430. package/dist/types/EnumType.spec.d.ts +0 -1
  431. package/dist/types/EnumType.spec.js +0 -33
  432. package/dist/types/EnumType.spec.js.map +0 -1
  433. package/dist/types/InheritableType.d.ts +0 -28
  434. package/dist/types/InheritableType.js +0 -152
  435. package/dist/types/InheritableType.js.map +0 -1
  436. package/dist/types/NamespaceType.d.ts +0 -12
  437. package/dist/types/NamespaceType.js +0 -28
  438. package/dist/types/NamespaceType.js.map +0 -1
  439. package/dist/types/ReferenceType.d.ts +0 -63
  440. package/dist/types/ReferenceType.js +0 -423
  441. package/dist/types/ReferenceType.js.map +0 -1
  442. package/dist/types/ReferenceType.spec.d.ts +0 -1
  443. package/dist/types/ReferenceType.spec.js +0 -137
  444. package/dist/types/ReferenceType.spec.js.map +0 -1
  445. package/dist/types/TypedFunctionType.d.ts +0 -33
  446. package/dist/types/TypedFunctionType.js +0 -106
  447. package/dist/types/TypedFunctionType.js.map +0 -1
  448. package/dist/types/TypedFunctionType.spec.d.ts +0 -1
  449. package/dist/types/TypedFunctionType.spec.js +0 -122
  450. package/dist/types/TypedFunctionType.spec.js.map +0 -1
  451. package/dist/types/UnionType.d.ts +0 -20
  452. package/dist/types/UnionType.js +0 -123
  453. package/dist/types/UnionType.js.map +0 -1
  454. package/dist/types/UnionType.spec.d.ts +0 -1
  455. package/dist/types/UnionType.spec.js +0 -130
  456. package/dist/types/UnionType.spec.js.map +0 -1
  457. package/dist/types/helper.spec.d.ts +0 -1
  458. package/dist/types/helper.spec.js +0 -145
  459. package/dist/types/helper.spec.js.map +0 -1
  460. package/dist/types/helpers.d.ts +0 -24
  461. package/dist/types/helpers.js +0 -178
  462. package/dist/types/helpers.js.map +0 -1
  463. package/dist/types/index.d.ts +0 -22
  464. package/dist/types/index.js +0 -39
  465. package/dist/types/index.js.map +0 -1
  466. /package/dist/astUtils/{Editor.spec.d.ts → AstEditor.spec.d.ts} +0 -0
  467. /package/dist/bscPlugin/{completions/CompletionsProcessor.spec.d.ts → definition/DefinitionProvider.spec.d.ts} +0 -0
  468. /package/dist/bscPlugin/{serialize/BslibInjector.spec.d.ts → references/ReferencesProvider.spec.d.ts} +0 -0
  469. /package/dist/bscPlugin/{transpile/BrsFileTranspileProcessor.spec.d.ts → symbols/DocumentSymbolProcessor.spec.d.ts} +0 -0
  470. /package/dist/bscPlugin/{validation/ScopeValidator.spec.d.ts → symbols/WorkspaceSymbolProcessor.spec.d.ts} +0 -0
  471. /package/dist/{files/LazyFileData.spec.d.ts → bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.d.ts} +0 -0
  472. /package/dist/{parser/tests/expression/TypeExpression.spec.d.ts → types/FunctionType.spec.d.ts} +0 -0
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CustomType = void 0;
4
+ const reflection_1 = require("../astUtils/reflection");
5
+ class CustomType {
6
+ constructor(name) {
7
+ this.name = name;
8
+ }
9
+ toString() {
10
+ return this.name;
11
+ }
12
+ toTypeString() {
13
+ return 'object';
14
+ }
15
+ isAssignableTo(targetType) {
16
+ //TODO for now, if the custom types have the same name, assume they're the same thing
17
+ if ((0, reflection_1.isCustomType)(targetType) && targetType.name === this.name) {
18
+ return true;
19
+ }
20
+ else if ((0, reflection_1.isDynamicType)(targetType)) {
21
+ return true;
22
+ }
23
+ else {
24
+ return false;
25
+ }
26
+ }
27
+ isConvertibleTo(targetType) {
28
+ return this.isAssignableTo(targetType);
29
+ }
30
+ }
31
+ exports.CustomType = CustomType;
32
+ //# sourceMappingURL=CustomType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomType.js","sourceRoot":"","sources":["../../src/types/CustomType.ts"],"names":[],"mappings":";;;AAAA,uDAAqE;AAGrE,MAAa,UAAU;IAEnB,YAAmB,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAC/B,CAAC;IAEM,QAAQ;QACX,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAEM,YAAY;QACf,OAAO,QAAQ,CAAC;IACpB,CAAC;IAEM,cAAc,CAAC,UAAmB;QACrC,qFAAqF;QACrF,IAAI,IAAA,yBAAY,EAAC,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;YAC3D,OAAO,IAAI,CAAC;SACf;aAAM,IAAI,IAAA,0BAAa,EAAC,UAAU,CAAC,EAAE;YAClC,OAAO,IAAI,CAAC;SACf;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;IAEM,eAAe,CAAC,UAAmB;QACtC,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;CACJ;AA3BD,gCA2BC"}
@@ -1,13 +1,9 @@
1
- import { BscType } from './BscType';
2
- import { BscTypeKind } from './BscTypeKind';
3
- import type { TypeCompatibilityData } from '../interfaces';
4
- export declare class DoubleType extends BscType {
1
+ import type { BscType } from './BscType';
2
+ export declare class DoubleType implements BscType {
5
3
  typeText?: string;
6
4
  constructor(typeText?: string);
7
- readonly kind = BscTypeKind.DoubleType;
8
- static instance: DoubleType;
9
- isTypeCompatible(targetType: BscType, data?: TypeCompatibilityData): any;
5
+ isAssignableTo(targetType: BscType): boolean;
6
+ isConvertibleTo(targetType: BscType): boolean;
10
7
  toString(): string;
11
8
  toTypeString(): string;
12
- isEqual(targetType: BscType): boolean;
13
9
  }
@@ -1,27 +1,29 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DoubleType = void 0;
4
- const reflection_1 = require("../astUtils/reflection");
5
- const BscType_1 = require("./BscType");
6
- const BscTypeKind_1 = require("./BscTypeKind");
7
- const helpers_1 = require("./helpers");
8
- const BuiltInInterfaceAdder_1 = require("./BuiltInInterfaceAdder");
9
- class DoubleType extends BscType_1.BscType {
4
+ const DynamicType_1 = require("./DynamicType");
5
+ const FloatType_1 = require("./FloatType");
6
+ const IntegerType_1 = require("./IntegerType");
7
+ const LongIntegerType_1 = require("./LongIntegerType");
8
+ class DoubleType {
10
9
  constructor(typeText) {
11
- super();
12
10
  this.typeText = typeText;
13
- this.kind = BscTypeKind_1.BscTypeKind.DoubleType;
14
11
  }
15
- isTypeCompatible(targetType, data) {
16
- return ((0, reflection_1.isDynamicType)(targetType) ||
17
- (0, reflection_1.isObjectType)(targetType) ||
18
- (0, reflection_1.isIntegerType)(targetType) ||
19
- (0, reflection_1.isFloatType)(targetType) ||
20
- (0, reflection_1.isDoubleType)(targetType) ||
21
- (0, reflection_1.isLongIntegerType)(targetType) ||
22
- (0, helpers_1.isUnionTypeCompatible)(this, targetType, data) ||
23
- (0, helpers_1.isEnumTypeCompatible)(this, targetType, data) ||
24
- (0, helpers_1.isNativeInterfaceCompatibleNumber)(this, targetType, data));
12
+ isAssignableTo(targetType) {
13
+ return (targetType instanceof DoubleType ||
14
+ targetType instanceof DynamicType_1.DynamicType);
15
+ }
16
+ isConvertibleTo(targetType) {
17
+ if (targetType instanceof DynamicType_1.DynamicType ||
18
+ targetType instanceof IntegerType_1.IntegerType ||
19
+ targetType instanceof FloatType_1.FloatType ||
20
+ targetType instanceof DoubleType ||
21
+ targetType instanceof LongIntegerType_1.LongIntegerType) {
22
+ return true;
23
+ }
24
+ else {
25
+ return false;
26
+ }
25
27
  }
26
28
  toString() {
27
29
  var _a;
@@ -30,11 +32,6 @@ class DoubleType extends BscType_1.BscType {
30
32
  toTypeString() {
31
33
  return this.toString();
32
34
  }
33
- isEqual(targetType) {
34
- return (0, reflection_1.isDoubleType)(targetType);
35
- }
36
35
  }
37
36
  exports.DoubleType = DoubleType;
38
- DoubleType.instance = new DoubleType('double');
39
- BuiltInInterfaceAdder_1.BuiltInInterfaceAdder.primitiveTypeInstanceCache.set('double', DoubleType.instance);
40
37
  //# sourceMappingURL=DoubleType.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DoubleType.js","sourceRoot":"","sources":["../../src/types/DoubleType.ts"],"names":[],"mappings":";;;AAAA,uDAAkI;AAClI,uCAAoC;AACpC,+CAA4C;AAC5C,uCAA2G;AAE3G,mEAAgE;AAGhE,MAAa,UAAW,SAAQ,iBAAO;IACnC,YACW,QAAiB;QAExB,KAAK,EAAE,CAAC;QAFD,aAAQ,GAAR,QAAQ,CAAS;QAKZ,SAAI,GAAG,yBAAW,CAAC,UAAU,CAAC;IAF9C,CAAC;IAMM,gBAAgB,CAAC,UAAmB,EAAE,IAA4B;QACrE,OAAO,CACH,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,wBAAW,EAAC,UAAU,CAAC;YACvB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,8BAAiB,EAAC,UAAU,CAAC;YAC7B,IAAA,+BAAqB,EAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC;YAC7C,IAAA,8BAAoB,EAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC;YAC5C,IAAA,2CAAiC,EAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAC5D,CAAC;IACN,CAAC;IACM,QAAQ;;QACX,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,QAAQ,CAAC;IACrC,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAEM,OAAO,CAAC,UAAmB;QAC9B,OAAO,IAAA,yBAAY,EAAC,UAAU,CAAC,CAAC;IACpC,CAAC;;AAlCL,gCAoCC;AA3BiB,mBAAQ,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;AA6BtD,6CAAqB,CAAC,0BAA0B,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC"}
1
+ {"version":3,"file":"DoubleType.js","sourceRoot":"","sources":["../../src/types/DoubleType.ts"],"names":[],"mappings":";;;AACA,+CAA4C;AAC5C,2CAAwC;AACxC,+CAA4C;AAC5C,uDAAoD;AAEpD,MAAa,UAAU;IACnB,YACW,QAAiB;QAAjB,aAAQ,GAAR,QAAQ,CAAS;IACxB,CAAC;IAEE,cAAc,CAAC,UAAmB;QACrC,OAAO,CACH,UAAU,YAAY,UAAU;YAChC,UAAU,YAAY,yBAAW,CACpC,CAAC;IACN,CAAC;IAEM,eAAe,CAAC,UAAmB;QACtC,IACI,UAAU,YAAY,yBAAW;YACjC,UAAU,YAAY,yBAAW;YACjC,UAAU,YAAY,qBAAS;YAC/B,UAAU,YAAY,UAAU;YAChC,UAAU,YAAY,iCAAe,EACvC;YACE,OAAO,IAAI,CAAC;SACf;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;IACM,QAAQ;;QACX,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,QAAQ,CAAC;IACrC,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;CACJ;AAhCD,gCAgCC"}
@@ -1,20 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const chai_config_spec_1 = require("../chai-config.spec");
4
- const BooleanType_1 = require("./BooleanType");
5
4
  const DoubleType_1 = require("./DoubleType");
6
5
  const DynamicType_1 = require("./DynamicType");
7
- const IntegerType_1 = require("./IntegerType");
8
6
  describe('DoubleType', () => {
9
- it('is equal to double type', () => {
10
- (0, chai_config_spec_1.expect)(new DoubleType_1.DoubleType().isEqual(new DoubleType_1.DoubleType())).to.be.true;
11
- (0, chai_config_spec_1.expect)(new DoubleType_1.DoubleType().isEqual(new DynamicType_1.DynamicType())).to.be.false;
12
- });
13
- it('is compatible with only correct types', () => {
14
- (0, chai_config_spec_1.expect)(new DoubleType_1.DoubleType().isTypeCompatible(new DoubleType_1.DoubleType())).to.be.true;
15
- (0, chai_config_spec_1.expect)(new DoubleType_1.DoubleType().isTypeCompatible(new DynamicType_1.DynamicType())).to.be.true;
16
- (0, chai_config_spec_1.expect)(new DoubleType_1.DoubleType().isTypeCompatible(IntegerType_1.IntegerType.instance)).to.be.true;
17
- (0, chai_config_spec_1.expect)(new DoubleType_1.DoubleType().isTypeCompatible(BooleanType_1.BooleanType.instance)).to.be.false;
7
+ it('is equivalent to double types', () => {
8
+ (0, chai_config_spec_1.expect)(new DoubleType_1.DoubleType().isAssignableTo(new DoubleType_1.DoubleType())).to.be.true;
9
+ (0, chai_config_spec_1.expect)(new DoubleType_1.DoubleType().isAssignableTo(new DynamicType_1.DynamicType())).to.be.true;
18
10
  });
19
11
  });
20
12
  //# sourceMappingURL=DoubleType.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DoubleType.spec.js","sourceRoot":"","sources":["../../src/types/DoubleType.spec.ts"],"names":[],"mappings":";;AAAA,0DAA6C;AAC7C,+CAA4C;AAE5C,6CAA0C;AAC1C,+CAA4C;AAC5C,+CAA4C;AAE5C,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAExB,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QAC/B,IAAA,yBAAM,EAAC,IAAI,uBAAU,EAAE,CAAC,OAAO,CAAC,IAAI,uBAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC9D,IAAA,yBAAM,EAAC,IAAI,uBAAU,EAAE,CAAC,OAAO,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC7C,IAAA,yBAAM,EAAC,IAAI,uBAAU,EAAE,CAAC,gBAAgB,CAAC,IAAI,uBAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACvE,IAAA,yBAAM,EAAC,IAAI,uBAAU,EAAE,CAAC,gBAAgB,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACxE,IAAA,yBAAM,EAAC,IAAI,uBAAU,EAAE,CAAC,gBAAgB,CAAC,yBAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC3E,IAAA,yBAAM,EAAC,IAAI,uBAAU,EAAE,CAAC,gBAAgB,CAAC,yBAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IAChF,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"DoubleType.spec.js","sourceRoot":"","sources":["../../src/types/DoubleType.spec.ts"],"names":[],"mappings":";;AAAA,0DAA6C;AAE7C,6CAA0C;AAC1C,+CAA4C;AAE5C,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACrC,IAAA,yBAAM,EAAC,IAAI,uBAAU,EAAE,CAAC,cAAc,CAAC,IAAI,uBAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACrE,IAAA,yBAAM,EAAC,IAAI,uBAAU,EAAE,CAAC,cAAc,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC1E,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1,19 +1,13 @@
1
- import type { GetTypeOptions, TypeCompatibilityData } from '../interfaces';
2
- import { BscType } from './BscType';
3
- import { BscTypeKind } from './BscTypeKind';
4
- export declare class DynamicType extends BscType {
1
+ import type { BscType } from './BscType';
2
+ export declare class DynamicType implements BscType {
5
3
  typeText?: string;
6
4
  constructor(typeText?: string);
7
- readonly kind = BscTypeKind.DynamicType;
8
5
  static readonly instance: DynamicType;
9
- get returnType(): DynamicType;
10
6
  isAssignableTo(targetType: BscType): boolean;
11
7
  /**
12
8
  * The dynamic type is convertible to everything.
13
9
  */
14
- isTypeCompatible(targetType: BscType, data?: TypeCompatibilityData): boolean;
10
+ isConvertibleTo(targetType: BscType): boolean;
15
11
  toString(): string;
16
12
  toTypeString(): string;
17
- isEqual(targetType: BscType): boolean;
18
- getMemberType(memberName: string, options: GetTypeOptions): DynamicType;
19
13
  }
@@ -1,18 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DynamicType = void 0;
4
- const reflection_1 = require("../astUtils/reflection");
5
- const BscType_1 = require("./BscType");
6
- const BscTypeKind_1 = require("./BscTypeKind");
7
- const BuiltInInterfaceAdder_1 = require("./BuiltInInterfaceAdder");
8
- class DynamicType extends BscType_1.BscType {
4
+ class DynamicType {
9
5
  constructor(typeText) {
10
- super();
11
6
  this.typeText = typeText;
12
- this.kind = BscTypeKind_1.BscTypeKind.DynamicType;
13
- }
14
- get returnType() {
15
- return DynamicType.instance;
16
7
  }
17
8
  isAssignableTo(targetType) {
18
9
  //everything can be dynamic, so as long as a type is provided, this is true
@@ -21,7 +12,7 @@ class DynamicType extends BscType_1.BscType {
21
12
  /**
22
13
  * The dynamic type is convertible to everything.
23
14
  */
24
- isTypeCompatible(targetType, data) {
15
+ isConvertibleTo(targetType) {
25
16
  //everything can be dynamic, so as long as a type is provided, this is true
26
17
  return !!targetType;
27
18
  }
@@ -32,14 +23,7 @@ class DynamicType extends BscType_1.BscType {
32
23
  toTypeString() {
33
24
  return this.toString();
34
25
  }
35
- isEqual(targetType) {
36
- return (0, reflection_1.isDynamicType)(targetType);
37
- }
38
- getMemberType(memberName, options) {
39
- return DynamicType.instance;
40
- }
41
26
  }
42
27
  exports.DynamicType = DynamicType;
43
28
  DynamicType.instance = new DynamicType();
44
- BuiltInInterfaceAdder_1.BuiltInInterfaceAdder.primitiveTypeInstanceCache.set('dynamic', DynamicType.instance);
45
29
  //# sourceMappingURL=DynamicType.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicType.js","sourceRoot":"","sources":["../../src/types/DynamicType.ts"],"names":[],"mappings":";;;AACA,uDAAuD;AACvD,uCAAoC;AACpC,+CAA4C;AAC5C,mEAAgE;AAEhE,MAAa,WAAY,SAAQ,iBAAO;IACpC,YACW,QAAiB;QAExB,KAAK,EAAE,CAAC;QAFD,aAAQ,GAAR,QAAQ,CAAS;QAKZ,SAAI,GAAG,yBAAW,CAAC,WAAW,CAAC;IAF/C,CAAC;IAMD,IAAI,UAAU;QACV,OAAO,WAAW,CAAC,QAAQ,CAAC;IAChC,CAAC;IAEM,cAAc,CAAC,UAAmB;QACrC,2EAA2E;QAC3E,OAAO,CAAC,CAAC,UAAU,CAAC;IACxB,CAAC;IAED;;OAEG;IACI,gBAAgB,CAAC,UAAmB,EAAE,IAA4B;QACrE,2EAA2E;QAC3E,OAAO,CAAC,CAAC,UAAU,CAAC;IACxB,CAAC;IAEM,QAAQ;;QACX,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,SAAS,CAAC;IACtC,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAEM,OAAO,CAAC,UAAmB;QAC9B,OAAO,IAAA,0BAAa,EAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IAED,aAAa,CAAC,UAAkB,EAAE,OAAuB;QACrD,OAAO,WAAW,CAAC,QAAQ,CAAC;IAChC,CAAC;;AA1CL,kCA2CC;AAlC0B,oBAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;AAoCxD,6CAAqB,CAAC,0BAA0B,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC"}
1
+ {"version":3,"file":"DynamicType.js","sourceRoot":"","sources":["../../src/types/DynamicType.ts"],"names":[],"mappings":";;;AAEA,MAAa,WAAW;IACpB,YACW,QAAiB;QAAjB,aAAQ,GAAR,QAAQ,CAAS;IACxB,CAAC;IAIE,cAAc,CAAC,UAAmB;QACrC,2EAA2E;QAC3E,OAAO,CAAC,CAAC,UAAU,CAAC;IACxB,CAAC;IAED;;OAEG;IACI,eAAe,CAAC,UAAmB;QACtC,2EAA2E;QAC3E,OAAO,CAAC,CAAC,UAAU,CAAC;IACxB,CAAC;IAEM,QAAQ;;QACX,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,SAAS,CAAC;IACtC,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;;AA1BL,kCA2BC;AAtB0B,oBAAQ,GAAG,IAAI,WAAW,EAAE,CAAC"}
@@ -1,23 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const chai_config_spec_1 = require("../chai-config.spec");
4
- const BooleanType_1 = require("./BooleanType");
5
- const ClassType_1 = require("./ClassType");
6
- const DoubleType_1 = require("./DoubleType");
7
4
  const DynamicType_1 = require("./DynamicType");
8
- const IntegerType_1 = require("./IntegerType");
5
+ const StringType_1 = require("./StringType");
9
6
  describe('DynamicType', () => {
10
- it('is equal to dynamic type', () => {
11
- (0, chai_config_spec_1.expect)(new DynamicType_1.DynamicType().isEqual(new DynamicType_1.DynamicType())).to.be.true;
12
- (0, chai_config_spec_1.expect)(new DynamicType_1.DynamicType().isEqual(new DoubleType_1.DoubleType())).to.be.false;
13
- (0, chai_config_spec_1.expect)(new DynamicType_1.DynamicType().isEqual(new ClassType_1.ClassType('test'))).to.be.false;
14
- });
15
- it('is compatible with only all types', () => {
16
- (0, chai_config_spec_1.expect)(new DynamicType_1.DynamicType().isTypeCompatible(new DoubleType_1.DoubleType())).to.be.true;
17
- (0, chai_config_spec_1.expect)(new DynamicType_1.DynamicType().isTypeCompatible(new DynamicType_1.DynamicType())).to.be.true;
18
- (0, chai_config_spec_1.expect)(new DynamicType_1.DynamicType().isTypeCompatible(IntegerType_1.IntegerType.instance)).to.be.true;
19
- (0, chai_config_spec_1.expect)(new DynamicType_1.DynamicType().isTypeCompatible(BooleanType_1.BooleanType.instance)).to.be.true;
20
- (0, chai_config_spec_1.expect)(new DynamicType_1.DynamicType().isTypeCompatible(new ClassType_1.ClassType('test'))).to.be.true;
7
+ it('is equivalent to dynamic types', () => {
8
+ (0, chai_config_spec_1.expect)(new DynamicType_1.DynamicType().isAssignableTo(new StringType_1.StringType())).to.be.true;
9
+ (0, chai_config_spec_1.expect)(new DynamicType_1.DynamicType().isAssignableTo(new DynamicType_1.DynamicType())).to.be.true;
21
10
  });
22
11
  });
23
12
  //# sourceMappingURL=DynamicType.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicType.spec.js","sourceRoot":"","sources":["../../src/types/DynamicType.spec.ts"],"names":[],"mappings":";;AAAA,0DAA6C;AAC7C,+CAA4C;AAC5C,2CAAwC;AACxC,6CAA0C;AAE1C,+CAA4C;AAC5C,+CAA4C;AAE5C,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAChC,IAAA,yBAAM,EAAC,IAAI,yBAAW,EAAE,CAAC,OAAO,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAChE,IAAA,yBAAM,EAAC,IAAI,yBAAW,EAAE,CAAC,OAAO,CAAC,IAAI,uBAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAChE,IAAA,yBAAM,EAAC,IAAI,yBAAW,EAAE,CAAC,OAAO,CAAC,IAAI,qBAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QACzC,IAAA,yBAAM,EAAC,IAAI,yBAAW,EAAE,CAAC,gBAAgB,CAAC,IAAI,uBAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACxE,IAAA,yBAAM,EAAC,IAAI,yBAAW,EAAE,CAAC,gBAAgB,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACzE,IAAA,yBAAM,EAAC,IAAI,yBAAW,EAAE,CAAC,gBAAgB,CAAC,yBAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC5E,IAAA,yBAAM,EAAC,IAAI,yBAAW,EAAE,CAAC,gBAAgB,CAAC,yBAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC5E,IAAA,yBAAM,EAAC,IAAI,yBAAW,EAAE,CAAC,gBAAgB,CAAC,IAAI,qBAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACjF,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"DynamicType.spec.js","sourceRoot":"","sources":["../../src/types/DynamicType.spec.ts"],"names":[],"mappings":";;AAAA,0DAA6C;AAE7C,+CAA4C;AAC5C,6CAA0C;AAE1C,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACtC,IAAA,yBAAM,EAAC,IAAI,yBAAW,EAAE,CAAC,cAAc,CAAC,IAAI,uBAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACtE,IAAA,yBAAM,EAAC,IAAI,yBAAW,EAAE,CAAC,cAAc,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC3E,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1,13 +1,9 @@
1
- import { BscType } from './BscType';
2
- import { BscTypeKind } from './BscTypeKind';
3
- import type { TypeCompatibilityData } from '../interfaces';
4
- export declare class FloatType extends BscType {
1
+ import type { BscType } from './BscType';
2
+ export declare class FloatType implements BscType {
5
3
  typeText?: string;
6
4
  constructor(typeText?: string);
7
- readonly kind = BscTypeKind.FloatType;
8
- static instance: FloatType;
9
- isTypeCompatible(targetType: BscType, data?: TypeCompatibilityData): any;
5
+ isAssignableTo(targetType: BscType): boolean;
6
+ isConvertibleTo(targetType: BscType): boolean;
10
7
  toString(): string;
11
8
  toTypeString(): string;
12
- isEqual(targetType: BscType): boolean;
13
9
  }
@@ -1,27 +1,29 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FloatType = void 0;
4
- const reflection_1 = require("../astUtils/reflection");
5
- const BscType_1 = require("./BscType");
6
- const BscTypeKind_1 = require("./BscTypeKind");
7
- const helpers_1 = require("./helpers");
8
- const BuiltInInterfaceAdder_1 = require("./BuiltInInterfaceAdder");
9
- class FloatType extends BscType_1.BscType {
4
+ const DoubleType_1 = require("./DoubleType");
5
+ const DynamicType_1 = require("./DynamicType");
6
+ const IntegerType_1 = require("./IntegerType");
7
+ const LongIntegerType_1 = require("./LongIntegerType");
8
+ class FloatType {
10
9
  constructor(typeText) {
11
- super();
12
10
  this.typeText = typeText;
13
- this.kind = BscTypeKind_1.BscTypeKind.FloatType;
14
11
  }
15
- isTypeCompatible(targetType, data) {
16
- return ((0, reflection_1.isDynamicType)(targetType) ||
17
- (0, reflection_1.isObjectType)(targetType) ||
18
- (0, reflection_1.isIntegerType)(targetType) ||
19
- (0, reflection_1.isFloatType)(targetType) ||
20
- (0, reflection_1.isDoubleType)(targetType) ||
21
- (0, reflection_1.isLongIntegerType)(targetType) ||
22
- (0, helpers_1.isUnionTypeCompatible)(this, targetType, data) ||
23
- (0, helpers_1.isEnumTypeCompatible)(this, targetType, data) ||
24
- (0, helpers_1.isNativeInterfaceCompatibleNumber)(this, targetType, data));
12
+ isAssignableTo(targetType) {
13
+ return (targetType instanceof FloatType ||
14
+ targetType instanceof DynamicType_1.DynamicType);
15
+ }
16
+ isConvertibleTo(targetType) {
17
+ if (targetType instanceof DynamicType_1.DynamicType ||
18
+ targetType instanceof IntegerType_1.IntegerType ||
19
+ targetType instanceof FloatType ||
20
+ targetType instanceof DoubleType_1.DoubleType ||
21
+ targetType instanceof LongIntegerType_1.LongIntegerType) {
22
+ return true;
23
+ }
24
+ else {
25
+ return false;
26
+ }
25
27
  }
26
28
  toString() {
27
29
  var _a;
@@ -30,11 +32,6 @@ class FloatType extends BscType_1.BscType {
30
32
  toTypeString() {
31
33
  return this.toString();
32
34
  }
33
- isEqual(targetType) {
34
- return (0, reflection_1.isFloatType)(targetType);
35
- }
36
35
  }
37
36
  exports.FloatType = FloatType;
38
- FloatType.instance = new FloatType('float');
39
- BuiltInInterfaceAdder_1.BuiltInInterfaceAdder.primitiveTypeInstanceCache.set('float', FloatType.instance);
40
37
  //# sourceMappingURL=FloatType.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FloatType.js","sourceRoot":"","sources":["../../src/types/FloatType.ts"],"names":[],"mappings":";;;AAAA,uDAAkI;AAClI,uCAAoC;AACpC,+CAA4C;AAC5C,uCAA2G;AAC3G,mEAAgE;AAGhE,MAAa,SAAU,SAAQ,iBAAO;IAClC,YACW,QAAiB;QAExB,KAAK,EAAE,CAAC;QAFD,aAAQ,GAAR,QAAQ,CAAS;QAKZ,SAAI,GAAG,yBAAW,CAAC,SAAS,CAAC;IAF7C,CAAC;IAMM,gBAAgB,CAAC,UAAmB,EAAE,IAA4B;QACrE,OAAO,CACH,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,wBAAW,EAAC,UAAU,CAAC;YACvB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,8BAAiB,EAAC,UAAU,CAAC;YAC7B,IAAA,+BAAqB,EAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC;YAC7C,IAAA,8BAAoB,EAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC;YAC5C,IAAA,2CAAiC,EAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAC5D,CAAC;IAEN,CAAC;IAEM,QAAQ;;QACX,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,OAAO,CAAC;IACpC,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAEM,OAAO,CAAC,UAAmB;QAC9B,OAAO,IAAA,wBAAW,EAAC,UAAU,CAAC,CAAC;IACnC,CAAC;;AApCL,8BAqCC;AA5BiB,kBAAQ,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;AA8BpD,6CAAqB,CAAC,0BAA0B,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC"}
1
+ {"version":3,"file":"FloatType.js","sourceRoot":"","sources":["../../src/types/FloatType.ts"],"names":[],"mappings":";;;AACA,6CAA0C;AAC1C,+CAA4C;AAC5C,+CAA4C;AAC5C,uDAAoD;AAEpD,MAAa,SAAS;IAClB,YACW,QAAiB;QAAjB,aAAQ,GAAR,QAAQ,CAAS;IACxB,CAAC;IAEE,cAAc,CAAC,UAAmB;QACrC,OAAO,CACH,UAAU,YAAY,SAAS;YAC/B,UAAU,YAAY,yBAAW,CACpC,CAAC;IACN,CAAC;IAEM,eAAe,CAAC,UAAmB;QACtC,IACI,UAAU,YAAY,yBAAW;YACjC,UAAU,YAAY,yBAAW;YACjC,UAAU,YAAY,SAAS;YAC/B,UAAU,YAAY,uBAAU;YAChC,UAAU,YAAY,iCAAe,EACvC;YACE,OAAO,IAAI,CAAC;SACf;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;IAEM,QAAQ;;QACX,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,OAAO,CAAC;IACpC,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;CACJ;AAjCD,8BAiCC"}
@@ -4,9 +4,9 @@ const chai_config_spec_1 = require("../chai-config.spec");
4
4
  const DynamicType_1 = require("./DynamicType");
5
5
  const FloatType_1 = require("./FloatType");
6
6
  describe('FloatType', () => {
7
- it('is compatible to double types', () => {
8
- (0, chai_config_spec_1.expect)(new FloatType_1.FloatType().isTypeCompatible(new FloatType_1.FloatType())).to.be.true;
9
- (0, chai_config_spec_1.expect)(new FloatType_1.FloatType().isTypeCompatible(new DynamicType_1.DynamicType())).to.be.true;
7
+ it('is equivalent to double types', () => {
8
+ (0, chai_config_spec_1.expect)(new FloatType_1.FloatType().isAssignableTo(new FloatType_1.FloatType())).to.be.true;
9
+ (0, chai_config_spec_1.expect)(new FloatType_1.FloatType().isAssignableTo(new DynamicType_1.DynamicType())).to.be.true;
10
10
  });
11
11
  });
12
12
  //# sourceMappingURL=FloatType.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FloatType.spec.js","sourceRoot":"","sources":["../../src/types/FloatType.spec.ts"],"names":[],"mappings":";;AAAA,0DAA6C;AAE7C,+CAA4C;AAC5C,2CAAwC;AAExC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACrC,IAAA,yBAAM,EAAC,IAAI,qBAAS,EAAE,CAAC,gBAAgB,CAAC,IAAI,qBAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACrE,IAAA,yBAAM,EAAC,IAAI,qBAAS,EAAE,CAAC,gBAAgB,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC3E,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"FloatType.spec.js","sourceRoot":"","sources":["../../src/types/FloatType.spec.ts"],"names":[],"mappings":";;AAAA,0DAA6C;AAE7C,+CAA4C;AAC5C,2CAAwC;AAExC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACrC,IAAA,yBAAM,EAAC,IAAI,qBAAS,EAAE,CAAC,cAAc,CAAC,IAAI,qBAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACnE,IAAA,yBAAM,EAAC,IAAI,qBAAS,EAAE,CAAC,cAAc,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACzE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1,14 +1,24 @@
1
- import { BaseFunctionType } from './BaseFunctionType';
2
1
  import type { BscType } from './BscType';
3
- import { BscTypeKind } from './BscTypeKind';
4
- import type { TypeCompatibilityData } from '../interfaces';
5
- export declare class FunctionType extends BaseFunctionType {
6
- typeText?: string;
7
- constructor(typeText?: string);
8
- readonly kind = BscTypeKind.FunctionType;
9
- static instance: FunctionType;
10
- isTypeCompatible(targetType: BscType, data?: TypeCompatibilityData): boolean;
2
+ export declare class FunctionType implements BscType {
3
+ returnType: BscType;
4
+ constructor(returnType: BscType);
5
+ /**
6
+ * The name of the function for this type. Can be undefined
7
+ */
8
+ name: string | undefined;
9
+ /**
10
+ * Determines if this is a sub or not
11
+ */
12
+ isSub: boolean;
13
+ params: {
14
+ name: string;
15
+ type: BscType;
16
+ isOptional: boolean;
17
+ }[];
18
+ setName(name: string): this;
19
+ addParameter(name: string, type: BscType, isOptional: boolean): this;
20
+ isAssignableTo(targetType: BscType): boolean;
21
+ isConvertibleTo(targetType: BscType): boolean;
11
22
  toString(): string;
12
23
  toTypeString(): string;
13
- isEqual(targetType: BscType): boolean;
14
24
  }
@@ -1,41 +1,66 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FunctionType = void 0;
4
- const reflection_1 = require("../astUtils/reflection");
5
- const BaseFunctionType_1 = require("./BaseFunctionType");
6
- const BscTypeKind_1 = require("./BscTypeKind");
7
- const helpers_1 = require("./helpers");
8
- const BuiltInInterfaceAdder_1 = require("./BuiltInInterfaceAdder");
9
- class FunctionType extends BaseFunctionType_1.BaseFunctionType {
10
- constructor(typeText) {
11
- super();
12
- this.typeText = typeText;
13
- this.kind = BscTypeKind_1.BscTypeKind.FunctionType;
4
+ const DynamicType_1 = require("./DynamicType");
5
+ class FunctionType {
6
+ constructor(returnType) {
7
+ this.returnType = returnType;
8
+ /**
9
+ * Determines if this is a sub or not
10
+ */
11
+ this.isSub = false;
12
+ this.params = [];
14
13
  }
15
- isTypeCompatible(targetType, data) {
16
- if ((0, reflection_1.isDynamicType)(targetType) ||
17
- (0, reflection_1.isCallableType)(targetType) ||
18
- (0, reflection_1.isObjectType)(targetType) ||
19
- (0, helpers_1.isUnionTypeCompatible)(this, targetType, data)) {
14
+ setName(name) {
15
+ this.name = name;
16
+ return this;
17
+ }
18
+ addParameter(name, type, isOptional) {
19
+ this.params.push({
20
+ name: name,
21
+ type: type,
22
+ isOptional: isOptional === true ? true : false
23
+ });
24
+ return this;
25
+ }
26
+ isAssignableTo(targetType) {
27
+ if (targetType instanceof DynamicType_1.DynamicType) {
20
28
  return true;
21
29
  }
22
- return false;
30
+ else if (targetType instanceof FunctionType) {
31
+ //compare all parameters
32
+ let len = Math.max(this.params.length, targetType.params.length);
33
+ for (let i = 0; i < len; i++) {
34
+ let myParam = this.params[i];
35
+ let targetParam = targetType.params[i];
36
+ if (!myParam || !targetParam || !myParam.type.isAssignableTo(targetParam.type)) {
37
+ return false;
38
+ }
39
+ }
40
+ //compare return type
41
+ if (!this.returnType || !targetType.returnType || !this.returnType.isAssignableTo(targetType.returnType)) {
42
+ return false;
43
+ }
44
+ //made it here, all params and return type are equivalent
45
+ return true;
46
+ }
47
+ else {
48
+ return false;
49
+ }
50
+ }
51
+ isConvertibleTo(targetType) {
52
+ return this.isAssignableTo(targetType);
23
53
  }
24
54
  toString() {
25
- return this.toTypeString();
55
+ let paramTexts = [];
56
+ for (let param of this.params) {
57
+ paramTexts.push(`${param.name}${param.isOptional ? '?' : ''} as ${param.type.toString()}`);
58
+ }
59
+ return `${this.isSub ? 'sub' : 'function'} ${this.name}(${paramTexts.join(', ')}) as ${this.returnType.toString()}`;
26
60
  }
27
61
  toTypeString() {
28
- var _a;
29
- return (_a = this.typeText) !== null && _a !== void 0 ? _a : 'function';
30
- }
31
- isEqual(targetType) {
32
- if ((0, reflection_1.isFunctionType)(targetType)) {
33
- return true;
34
- }
35
- return false;
62
+ return 'Function';
36
63
  }
37
64
  }
38
65
  exports.FunctionType = FunctionType;
39
- FunctionType.instance = new FunctionType('function');
40
- BuiltInInterfaceAdder_1.BuiltInInterfaceAdder.primitiveTypeInstanceCache.set('function', new FunctionType());
41
66
  //# sourceMappingURL=FunctionType.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FunctionType.js","sourceRoot":"","sources":["../../src/types/FunctionType.ts"],"names":[],"mappings":";;;AAAA,uDAAqG;AACrG,yDAAsD;AAEtD,+CAA4C;AAC5C,uCAAkD;AAClD,mEAAgE;AAGhE,MAAa,YAAa,SAAQ,mCAAgB;IAC9C,YAAmB,QAAiB;QAChC,KAAK,EAAE,CAAC;QADO,aAAQ,GAAR,QAAQ,CAAS;QAIpB,SAAI,GAAG,yBAAW,CAAC,YAAY,CAAC;IAFhD,CAAC;IAMM,gBAAgB,CAAC,UAAmB,EAAE,IAA4B;QACrE,IACI,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,2BAAc,EAAC,UAAU,CAAC;YAC1B,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,+BAAqB,EAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,EAC/C;YACE,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEM,QAAQ;QACX,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;IAE/B,CAAC;IAEM,YAAY;;QACf,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,UAAU,CAAC;IACvC,CAAC;IAED,OAAO,CAAC,UAAmB;QACvB,IAAI,IAAA,2BAAc,EAAC,UAAU,CAAC,EAAE;YAC5B,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;;AAnCL,oCAoCC;AA7BiB,qBAAQ,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC;AA+B1D,6CAAqB,CAAC,0BAA0B,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,YAAY,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"FunctionType.js","sourceRoot":"","sources":["../../src/types/FunctionType.ts"],"names":[],"mappings":";;;AACA,+CAA4C;AAE5C,MAAa,YAAY;IACrB,YACW,UAAmB;QAAnB,eAAU,GAAV,UAAU,CAAS;QAU9B;;WAEG;QACI,UAAK,GAAG,KAAK,CAAC;QAEd,WAAM,GAAG,EAAiE,CAAC;IAZlF,CAAC;IAcM,OAAO,CAAC,IAAY;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,YAAY,CAAC,IAAY,EAAE,IAAa,EAAE,UAAmB;QAChE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACb,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;SACjD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,cAAc,CAAC,UAAmB;QACrC,IAAI,UAAU,YAAY,yBAAW,EAAE;YACnC,OAAO,IAAI,CAAC;SACf;aAAM,IAAI,UAAU,YAAY,YAAY,EAAE;YAC3C,wBAAwB;YACxB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;gBAC1B,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC7B,IAAI,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACvC,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;oBAC5E,OAAO,KAAK,CAAC;iBAChB;aACJ;YAED,qBAAqB;YACrB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;gBACtG,OAAO,KAAK,CAAC;aAChB;YAED,yDAAyD;YACzD,OAAO,IAAI,CAAC;SACf;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;IAEM,eAAe,CAAC,UAAmB;QACtC,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAEM,QAAQ;QACX,IAAI,UAAU,GAAa,EAAE,CAAC;QAC9B,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;YAC3B,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;SAC9F;QACD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC;IAExH,CAAC;IAEM,YAAY;QACf,OAAO,UAAU,CAAC;IACtB,CAAC;CACJ;AA3ED,oCA2EC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const chai_config_spec_1 = require("../chai-config.spec");
4
+ const DynamicType_1 = require("./DynamicType");
5
+ const FunctionType_1 = require("./FunctionType");
6
+ const IntegerType_1 = require("./IntegerType");
7
+ const StringType_1 = require("./StringType");
8
+ const VoidType_1 = require("./VoidType");
9
+ describe('FunctionType', () => {
10
+ it('is equivalent to dynamic type', () => {
11
+ (0, chai_config_spec_1.expect)(new FunctionType_1.FunctionType(new VoidType_1.VoidType()).isAssignableTo(new DynamicType_1.DynamicType())).to.be.true;
12
+ });
13
+ it('validates using param and return types', () => {
14
+ (0, chai_config_spec_1.expect)(new FunctionType_1.FunctionType(new VoidType_1.VoidType()).isAssignableTo(new FunctionType_1.FunctionType(new VoidType_1.VoidType()))).to.be.true;
15
+ //different parameter count
16
+ (0, chai_config_spec_1.expect)(new FunctionType_1.FunctionType(new VoidType_1.VoidType()).addParameter('a', new IntegerType_1.IntegerType(), false).isAssignableTo(new FunctionType_1.FunctionType(new VoidType_1.VoidType()))).to.be.false;
17
+ //different parameter types
18
+ (0, chai_config_spec_1.expect)(new FunctionType_1.FunctionType(new VoidType_1.VoidType()).addParameter('a', new IntegerType_1.IntegerType(), false).isAssignableTo(new FunctionType_1.FunctionType(new VoidType_1.VoidType()).addParameter('a', new StringType_1.StringType(), false))).to.be.false;
19
+ //different return type
20
+ (0, chai_config_spec_1.expect)(new FunctionType_1.FunctionType(new VoidType_1.VoidType()).isAssignableTo(new FunctionType_1.FunctionType(new IntegerType_1.IntegerType()))).to.be.false;
21
+ });
22
+ });
23
+ //# sourceMappingURL=FunctionType.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FunctionType.spec.js","sourceRoot":"","sources":["../../src/types/FunctionType.spec.ts"],"names":[],"mappings":";;AAAA,0DAA6C;AAE7C,+CAA4C;AAC5C,iDAA8C;AAC9C,+CAA4C;AAC5C,6CAA0C;AAC1C,yCAAsC;AAEtC,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACrC,IAAA,yBAAM,EAAC,IAAI,2BAAY,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC1F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAC9C,IAAA,yBAAM,EAAC,IAAI,2BAAY,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,2BAAY,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAErG,2BAA2B;QAC3B,IAAA,yBAAM,EACF,IAAI,2BAAY,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,yBAAW,EAAE,EAAE,KAAK,CAAC,CAAC,cAAc,CACvF,IAAI,2BAAY,CAAC,IAAI,mBAAQ,EAAE,CAAC,CACnC,CACJ,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAEd,2BAA2B;QAC3B,IAAA,yBAAM,EACF,IAAI,2BAAY,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,yBAAW,EAAE,EAAE,KAAK,CAAC,CAAC,cAAc,CACvF,IAAI,2BAAY,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,uBAAU,EAAE,EAAE,KAAK,CAAC,CAC9E,CACJ,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAEd,uBAAuB;QACvB,IAAA,yBAAM,EACF,IAAI,2BAAY,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,cAAc,CAC3C,IAAI,2BAAY,CAAC,IAAI,yBAAW,EAAE,CAAC,CACtC,CACJ,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1,13 +1,9 @@
1
- import { BscType } from './BscType';
2
- import { BscTypeKind } from './BscTypeKind';
3
- import type { TypeCompatibilityData } from '../interfaces';
4
- export declare class IntegerType extends BscType {
1
+ import type { BscType } from './BscType';
2
+ export declare class IntegerType implements BscType {
5
3
  typeText?: string;
6
4
  constructor(typeText?: string);
7
- readonly kind = BscTypeKind.IntegerType;
8
- static instance: IntegerType;
9
- isTypeCompatible(targetType: BscType, data?: TypeCompatibilityData): any;
5
+ isAssignableTo(targetType: BscType): boolean;
6
+ isConvertibleTo(targetType: BscType): boolean;
10
7
  toString(): string;
11
8
  toTypeString(): string;
12
- isEqual(otherType: BscType): boolean;
13
9
  }