brighterscript 1.0.0-alpha.5 → 1.0.0-alpha.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (652) hide show
  1. package/README.md +79 -138
  2. package/bsconfig.schema.json +196 -5
  3. package/dist/ActionPipeline.d.ts +10 -0
  4. package/dist/ActionPipeline.js +40 -0
  5. package/dist/ActionPipeline.js.map +1 -0
  6. package/dist/AstValidationSegmenter.d.ts +45 -0
  7. package/dist/AstValidationSegmenter.js +322 -0
  8. package/dist/AstValidationSegmenter.js.map +1 -0
  9. package/dist/BsConfig.d.ts +161 -43
  10. package/dist/BusyStatusTracker.d.ts +61 -0
  11. package/dist/BusyStatusTracker.js +148 -0
  12. package/dist/BusyStatusTracker.js.map +1 -0
  13. package/dist/Cache.d.ts +3 -8
  14. package/dist/Cache.js +9 -14
  15. package/dist/Cache.js.map +1 -1
  16. package/dist/CacheVerifier.d.ts +7 -0
  17. package/dist/CacheVerifier.js +20 -0
  18. package/dist/CacheVerifier.js.map +1 -0
  19. package/dist/CodeActionUtil.d.ts +29 -4
  20. package/dist/CodeActionUtil.js +22 -5
  21. package/dist/CodeActionUtil.js.map +1 -1
  22. package/dist/CommentFlagProcessor.d.ts +20 -15
  23. package/dist/CommentFlagProcessor.js +143 -58
  24. package/dist/CommentFlagProcessor.js.map +1 -1
  25. package/dist/CrossScopeValidator.d.ts +68 -0
  26. package/dist/CrossScopeValidator.js +650 -0
  27. package/dist/CrossScopeValidator.js.map +1 -0
  28. package/dist/DependencyGraph.d.ts +8 -3
  29. package/dist/DependencyGraph.js +49 -16
  30. package/dist/DependencyGraph.js.map +1 -1
  31. package/dist/DiagnosticCollection.d.ts +21 -5
  32. package/dist/DiagnosticCollection.js +77 -24
  33. package/dist/DiagnosticCollection.js.map +1 -1
  34. package/dist/DiagnosticFilterer.d.ts +27 -6
  35. package/dist/DiagnosticFilterer.js +273 -60
  36. package/dist/DiagnosticFilterer.js.map +1 -1
  37. package/dist/DiagnosticManager.d.ts +83 -0
  38. package/dist/DiagnosticManager.js +422 -0
  39. package/dist/DiagnosticManager.js.map +1 -0
  40. package/dist/DiagnosticMessages.d.ts +602 -196
  41. package/dist/DiagnosticMessages.js +926 -342
  42. package/dist/DiagnosticMessages.js.map +1 -1
  43. package/dist/DiagnosticSeverityAdjuster.d.ts +7 -0
  44. package/dist/DiagnosticSeverityAdjuster.js +45 -0
  45. package/dist/DiagnosticSeverityAdjuster.js.map +1 -0
  46. package/dist/FunctionScope.d.ts +28 -0
  47. package/dist/FunctionScope.js +52 -0
  48. package/dist/FunctionScope.js.map +1 -0
  49. package/dist/KeyedThrottler.d.ts +3 -3
  50. package/dist/KeyedThrottler.js +3 -3
  51. package/dist/KeyedThrottler.js.map +1 -1
  52. package/dist/LanguageServer.d.ts +136 -104
  53. package/dist/LanguageServer.js +577 -741
  54. package/dist/LanguageServer.js.map +1 -1
  55. package/dist/Logger.d.ts +17 -13
  56. package/dist/Logger.js +64 -34
  57. package/dist/Logger.js.map +1 -1
  58. package/dist/PluginInterface.d.ts +32 -10
  59. package/dist/PluginInterface.js +117 -7
  60. package/dist/PluginInterface.js.map +1 -1
  61. package/dist/Program.d.ts +302 -98
  62. package/dist/Program.js +1613 -726
  63. package/dist/Program.js.map +1 -1
  64. package/dist/ProgramBuilder.d.ts +39 -22
  65. package/dist/ProgramBuilder.js +245 -179
  66. package/dist/ProgramBuilder.js.map +1 -1
  67. package/dist/Scope.d.ts +227 -106
  68. package/dist/Scope.js +609 -557
  69. package/dist/Scope.js.map +1 -1
  70. package/dist/ScopeNamespaceLookup.d.ts +73 -0
  71. package/dist/ScopeNamespaceLookup.js +242 -0
  72. package/dist/ScopeNamespaceLookup.js.map +1 -0
  73. package/dist/SemanticTokenUtils.js +5 -1
  74. package/dist/SemanticTokenUtils.js.map +1 -1
  75. package/dist/Stopwatch.d.ts +4 -0
  76. package/dist/Stopwatch.js +8 -1
  77. package/dist/Stopwatch.js.map +1 -1
  78. package/dist/SymbolTable.d.ts +145 -26
  79. package/dist/SymbolTable.js +575 -64
  80. package/dist/SymbolTable.js.map +1 -1
  81. package/dist/SymbolTypeFlag.d.ts +9 -0
  82. package/dist/SymbolTypeFlag.js +14 -0
  83. package/dist/SymbolTypeFlag.js.map +1 -0
  84. package/dist/Throttler.d.ts +12 -0
  85. package/dist/Throttler.js +39 -0
  86. package/dist/Throttler.js.map +1 -1
  87. package/dist/Watcher.d.ts +0 -3
  88. package/dist/Watcher.js +0 -3
  89. package/dist/Watcher.js.map +1 -1
  90. package/dist/XmlScope.d.ts +5 -15
  91. package/dist/XmlScope.js +34 -90
  92. package/dist/XmlScope.js.map +1 -1
  93. package/dist/astUtils/CachedLookups.d.ts +50 -0
  94. package/dist/astUtils/CachedLookups.js +337 -0
  95. package/dist/astUtils/CachedLookups.js.map +1 -0
  96. package/dist/astUtils/Editor.d.ts +69 -0
  97. package/dist/astUtils/Editor.js +245 -0
  98. package/dist/astUtils/Editor.js.map +1 -0
  99. package/dist/astUtils/creators.d.ts +54 -19
  100. package/dist/astUtils/creators.js +242 -42
  101. package/dist/astUtils/creators.js.map +1 -1
  102. package/dist/astUtils/reflection.d.ts +199 -85
  103. package/dist/astUtils/reflection.js +518 -145
  104. package/dist/astUtils/reflection.js.map +1 -1
  105. package/dist/astUtils/stackedVisitor.js.map +1 -1
  106. package/dist/astUtils/visitors.d.ts +117 -53
  107. package/dist/astUtils/visitors.js +95 -15
  108. package/dist/astUtils/visitors.js.map +1 -1
  109. package/dist/astUtils/xml.d.ts +9 -8
  110. package/dist/astUtils/xml.js +12 -7
  111. package/dist/astUtils/xml.js.map +1 -1
  112. package/dist/bscPlugin/BscPlugin.d.ts +26 -4
  113. package/dist/bscPlugin/BscPlugin.js +96 -4
  114. package/dist/bscPlugin/BscPlugin.js.map +1 -1
  115. package/dist/bscPlugin/CallExpressionInfo.d.ts +36 -0
  116. package/dist/bscPlugin/CallExpressionInfo.js +142 -0
  117. package/dist/bscPlugin/CallExpressionInfo.js.map +1 -0
  118. package/dist/bscPlugin/FileWriter.d.ts +19 -0
  119. package/dist/bscPlugin/FileWriter.js +79 -0
  120. package/dist/bscPlugin/FileWriter.js.map +1 -0
  121. package/dist/bscPlugin/SignatureHelpUtil.d.ts +10 -0
  122. package/dist/bscPlugin/SignatureHelpUtil.js +137 -0
  123. package/dist/bscPlugin/SignatureHelpUtil.js.map +1 -0
  124. package/dist/bscPlugin/codeActions/CodeActionsProcessor.d.ts +109 -7
  125. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +676 -26
  126. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
  127. package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.d.ts +17 -0
  128. package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.js +66 -0
  129. package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.js.map +1 -0
  130. package/dist/bscPlugin/codeActions/codeActionHelpers.d.ts +18 -0
  131. package/dist/bscPlugin/codeActions/codeActionHelpers.js +31 -0
  132. package/dist/bscPlugin/codeActions/codeActionHelpers.js.map +1 -0
  133. package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +65 -0
  134. package/dist/bscPlugin/completions/CompletionsProcessor.js +633 -0
  135. package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -0
  136. package/dist/bscPlugin/definition/DefinitionProvider.d.ts +13 -0
  137. package/dist/bscPlugin/definition/DefinitionProvider.js +220 -0
  138. package/dist/bscPlugin/definition/DefinitionProvider.js.map +1 -0
  139. package/dist/bscPlugin/fileProviders/FileProvider.d.ts +9 -0
  140. package/dist/bscPlugin/fileProviders/FileProvider.js +51 -0
  141. package/dist/bscPlugin/fileProviders/FileProvider.js.map +1 -0
  142. package/dist/bscPlugin/hover/HoverProcessor.d.ts +18 -0
  143. package/dist/bscPlugin/hover/HoverProcessor.js +238 -0
  144. package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -0
  145. package/dist/bscPlugin/references/ReferencesProvider.d.ts +12 -0
  146. package/dist/bscPlugin/references/ReferencesProvider.js +57 -0
  147. package/dist/bscPlugin/references/ReferencesProvider.js.map +1 -0
  148. package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.d.ts +7 -0
  149. package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.js +77 -0
  150. package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.js.map +1 -0
  151. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +14 -0
  152. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +164 -0
  153. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -0
  154. package/dist/bscPlugin/serialize/BslibManager.d.ts +12 -0
  155. package/dist/bscPlugin/serialize/BslibManager.js +46 -0
  156. package/dist/bscPlugin/serialize/BslibManager.js.map +1 -0
  157. package/dist/bscPlugin/serialize/FileSerializer.d.ts +9 -0
  158. package/dist/bscPlugin/serialize/FileSerializer.js +80 -0
  159. package/dist/bscPlugin/serialize/FileSerializer.js.map +1 -0
  160. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.d.ts +7 -0
  161. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.js +22 -0
  162. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.js.map +1 -0
  163. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.d.ts +7 -0
  164. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.js +26 -0
  165. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.js.map +1 -0
  166. package/dist/bscPlugin/symbols/symbolUtils.d.ts +5 -0
  167. package/dist/bscPlugin/symbols/symbolUtils.js +141 -0
  168. package/dist/bscPlugin/symbols/symbolUtils.js.map +1 -0
  169. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.d.ts +34 -0
  170. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js +504 -0
  171. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +1 -0
  172. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.d.ts +12 -0
  173. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js +99 -0
  174. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js.map +1 -0
  175. package/dist/bscPlugin/validation/BrsFileAfterValidator.d.ts +7 -0
  176. package/dist/bscPlugin/validation/BrsFileAfterValidator.js +18 -0
  177. package/dist/bscPlugin/validation/BrsFileAfterValidator.js.map +1 -0
  178. package/dist/bscPlugin/validation/BrsFileValidator.d.ts +51 -0
  179. package/dist/bscPlugin/validation/BrsFileValidator.js +714 -0
  180. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -0
  181. package/dist/bscPlugin/validation/ProgramValidator.d.ts +11 -0
  182. package/dist/bscPlugin/validation/ProgramValidator.js +33 -0
  183. package/dist/bscPlugin/validation/ProgramValidator.js.map +1 -0
  184. package/dist/bscPlugin/validation/ScopeValidator.d.ts +158 -0
  185. package/dist/bscPlugin/validation/ScopeValidator.js +1481 -0
  186. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -0
  187. package/dist/bscPlugin/validation/XmlFileValidator.d.ts +8 -0
  188. package/dist/bscPlugin/validation/XmlFileValidator.js +50 -0
  189. package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -0
  190. package/dist/cli.js +140 -28
  191. package/dist/cli.js.map +1 -1
  192. package/dist/common/Sequencer.d.ts +53 -0
  193. package/dist/common/Sequencer.js +233 -0
  194. package/dist/common/Sequencer.js.map +1 -0
  195. package/dist/deferred.d.ts +5 -3
  196. package/dist/deferred.js +10 -0
  197. package/dist/deferred.js.map +1 -1
  198. package/dist/diagnosticUtils.d.ts +61 -4
  199. package/dist/diagnosticUtils.js +285 -25
  200. package/dist/diagnosticUtils.js.map +1 -1
  201. package/dist/examples/plugins/removePrint.d.ts +2 -2
  202. package/dist/examples/plugins/removePrint.js +8 -12
  203. package/dist/examples/plugins/removePrint.js.map +1 -1
  204. package/dist/files/AssetFile.d.ts +24 -0
  205. package/dist/files/AssetFile.js +25 -0
  206. package/dist/files/AssetFile.js.map +1 -0
  207. package/dist/files/BrsFile.d.ts +161 -87
  208. package/dist/files/BrsFile.js +919 -936
  209. package/dist/files/BrsFile.js.map +1 -1
  210. package/dist/files/BscFile.d.ts +102 -0
  211. package/dist/files/BscFile.js +15 -0
  212. package/dist/files/BscFile.js.map +1 -0
  213. package/dist/files/Factory.d.ts +25 -0
  214. package/dist/files/Factory.js +22 -0
  215. package/dist/files/Factory.js.map +1 -0
  216. package/dist/files/LazyFileData.d.ts +21 -0
  217. package/dist/files/LazyFileData.js +54 -0
  218. package/dist/files/LazyFileData.js.map +1 -0
  219. package/dist/files/XmlFile.d.ts +80 -41
  220. package/dist/files/XmlFile.js +162 -137
  221. package/dist/files/XmlFile.js.map +1 -1
  222. package/dist/globalCallables.d.ts +3 -1
  223. package/dist/globalCallables.js +424 -184
  224. package/dist/globalCallables.js.map +1 -1
  225. package/dist/index.d.ts +32 -4
  226. package/dist/index.js +54 -7
  227. package/dist/index.js.map +1 -1
  228. package/dist/interfaces.d.ts +987 -125
  229. package/dist/interfaces.js +21 -0
  230. package/dist/interfaces.js.map +1 -1
  231. package/dist/lexer/Lexer.d.ts +51 -12
  232. package/dist/lexer/Lexer.js +214 -65
  233. package/dist/lexer/Lexer.js.map +1 -1
  234. package/dist/lexer/Token.d.ts +27 -11
  235. package/dist/lexer/Token.js +10 -2
  236. package/dist/lexer/Token.js.map +1 -1
  237. package/dist/lexer/TokenKind.d.ts +48 -2
  238. package/dist/lexer/TokenKind.js +167 -10
  239. package/dist/lexer/TokenKind.js.map +1 -1
  240. package/dist/logging.d.ts +14 -0
  241. package/dist/logging.js +29 -0
  242. package/dist/logging.js.map +1 -0
  243. package/dist/lsp/ActionQueue.d.ts +35 -0
  244. package/dist/lsp/ActionQueue.js +115 -0
  245. package/dist/lsp/ActionQueue.js.map +1 -0
  246. package/dist/lsp/DocumentManager.d.ts +63 -0
  247. package/dist/lsp/DocumentManager.js +122 -0
  248. package/dist/lsp/DocumentManager.js.map +1 -0
  249. package/dist/lsp/LspProject.d.ts +287 -0
  250. package/dist/lsp/LspProject.js +3 -0
  251. package/dist/lsp/LspProject.js.map +1 -0
  252. package/dist/lsp/PathFilterer.d.ts +75 -0
  253. package/dist/lsp/PathFilterer.js +196 -0
  254. package/dist/lsp/PathFilterer.js.map +1 -0
  255. package/dist/lsp/Project.d.ts +200 -0
  256. package/dist/lsp/Project.js +562 -0
  257. package/dist/lsp/Project.js.map +1 -0
  258. package/dist/lsp/ProjectManager.d.ts +288 -0
  259. package/dist/lsp/ProjectManager.js +967 -0
  260. package/dist/lsp/ProjectManager.js.map +1 -0
  261. package/dist/lsp/ReaderWriterManager.d.ts +21 -0
  262. package/dist/lsp/ReaderWriterManager.js +60 -0
  263. package/dist/lsp/ReaderWriterManager.js.map +1 -0
  264. package/dist/lsp/worker/MessageHandler.d.ts +99 -0
  265. package/dist/lsp/worker/MessageHandler.js +138 -0
  266. package/dist/lsp/worker/MessageHandler.js.map +1 -0
  267. package/dist/lsp/worker/WorkerPool.d.ts +38 -0
  268. package/dist/lsp/worker/WorkerPool.js +78 -0
  269. package/dist/lsp/worker/WorkerPool.js.map +1 -0
  270. package/dist/lsp/worker/WorkerThreadProject.d.ts +168 -0
  271. package/dist/lsp/worker/WorkerThreadProject.js +205 -0
  272. package/dist/lsp/worker/WorkerThreadProject.js.map +1 -0
  273. package/dist/lsp/worker/WorkerThreadProjectRunner.d.ts +15 -0
  274. package/dist/lsp/worker/WorkerThreadProjectRunner.js +58 -0
  275. package/dist/lsp/worker/WorkerThreadProjectRunner.js.map +1 -0
  276. package/dist/lsp/worker/run.js +14 -0
  277. package/dist/lsp/worker/run.js.map +1 -0
  278. package/dist/parser/AstNode.d.ts +205 -0
  279. package/dist/parser/AstNode.js +305 -0
  280. package/dist/parser/AstNode.js.map +1 -0
  281. package/dist/parser/BrightScriptDocParser.d.ts +56 -0
  282. package/dist/parser/BrightScriptDocParser.js +294 -0
  283. package/dist/parser/BrightScriptDocParser.js.map +1 -0
  284. package/dist/parser/BrsTranspileState.d.ts +22 -3
  285. package/dist/parser/BrsTranspileState.js +19 -0
  286. package/dist/parser/BrsTranspileState.js.map +1 -1
  287. package/dist/parser/Expression.d.ts +601 -220
  288. package/dist/parser/Expression.js +1516 -502
  289. package/dist/parser/Expression.js.map +1 -1
  290. package/dist/parser/Parser.d.ts +137 -121
  291. package/dist/parser/Parser.js +1808 -982
  292. package/dist/parser/Parser.js.map +1 -1
  293. package/dist/parser/SGParser.d.ts +30 -13
  294. package/dist/parser/SGParser.js +94 -56
  295. package/dist/parser/SGParser.js.map +1 -1
  296. package/dist/parser/SGTypes.d.ts +134 -46
  297. package/dist/parser/SGTypes.js +206 -115
  298. package/dist/parser/SGTypes.js.map +1 -1
  299. package/dist/parser/Statement.d.ts +854 -267
  300. package/dist/parser/Statement.js +2416 -621
  301. package/dist/parser/Statement.js.map +1 -1
  302. package/dist/parser/TranspileState.d.ts +30 -14
  303. package/dist/parser/TranspileState.js +124 -27
  304. package/dist/parser/TranspileState.js.map +1 -1
  305. package/dist/preprocessor/Manifest.d.ts +6 -6
  306. package/dist/preprocessor/Manifest.js +17 -38
  307. package/dist/preprocessor/Manifest.js.map +1 -1
  308. package/dist/roku-types/data.json +20554 -0
  309. package/dist/roku-types/index.d.ts +5726 -0
  310. package/dist/roku-types/index.js +11 -0
  311. package/dist/roku-types/index.js.map +1 -0
  312. package/dist/types/ArrayType.d.ts +12 -5
  313. package/dist/types/ArrayType.js +95 -25
  314. package/dist/types/ArrayType.js.map +1 -1
  315. package/dist/types/AssociativeArrayType.d.ts +15 -0
  316. package/dist/types/AssociativeArrayType.js +64 -0
  317. package/dist/types/AssociativeArrayType.js.map +1 -0
  318. package/dist/types/BaseFunctionType.d.ts +10 -0
  319. package/dist/types/BaseFunctionType.js +26 -0
  320. package/dist/types/BaseFunctionType.js.map +1 -0
  321. package/dist/types/BooleanType.d.ts +9 -5
  322. package/dist/types/BooleanType.js +19 -8
  323. package/dist/types/BooleanType.js.map +1 -1
  324. package/dist/types/BscType.d.ts +41 -3
  325. package/dist/types/BscType.js +152 -0
  326. package/dist/types/BscType.js.map +1 -1
  327. package/dist/types/BscTypeKind.d.ts +28 -0
  328. package/dist/types/BscTypeKind.js +33 -0
  329. package/dist/types/BscTypeKind.js.map +1 -0
  330. package/dist/types/BuiltInInterfaceAdder.d.ts +28 -0
  331. package/dist/types/BuiltInInterfaceAdder.js +212 -0
  332. package/dist/types/BuiltInInterfaceAdder.js.map +1 -0
  333. package/dist/types/CallFuncableType.d.ts +24 -0
  334. package/dist/types/CallFuncableType.js +91 -0
  335. package/dist/types/CallFuncableType.js.map +1 -0
  336. package/dist/types/ClassType.d.ts +17 -0
  337. package/dist/types/ClassType.js +63 -0
  338. package/dist/types/ClassType.js.map +1 -0
  339. package/dist/types/ComponentType.d.ts +22 -0
  340. package/dist/types/ComponentType.js +110 -0
  341. package/dist/types/ComponentType.js.map +1 -0
  342. package/dist/types/DoubleType.d.ts +10 -5
  343. package/dist/types/DoubleType.js +21 -17
  344. package/dist/types/DoubleType.js.map +1 -1
  345. package/dist/types/DynamicType.d.ts +13 -5
  346. package/dist/types/DynamicType.js +26 -5
  347. package/dist/types/DynamicType.js.map +1 -1
  348. package/dist/types/EnumType.d.ts +42 -0
  349. package/dist/types/EnumType.js +101 -0
  350. package/dist/types/EnumType.js.map +1 -0
  351. package/dist/types/FloatType.d.ts +10 -5
  352. package/dist/types/FloatType.js +21 -17
  353. package/dist/types/FloatType.js.map +1 -1
  354. package/dist/types/FunctionType.d.ts +8 -22
  355. package/dist/types/FunctionType.js +25 -63
  356. package/dist/types/FunctionType.js.map +1 -1
  357. package/dist/types/InheritableType.d.ts +29 -0
  358. package/dist/types/InheritableType.js +173 -0
  359. package/dist/types/InheritableType.js.map +1 -0
  360. package/dist/types/InlineInterfaceType.d.ts +5 -0
  361. package/dist/types/InlineInterfaceType.js +17 -0
  362. package/dist/types/InlineInterfaceType.js.map +1 -0
  363. package/dist/types/IntegerType.d.ts +10 -5
  364. package/dist/types/IntegerType.js +21 -17
  365. package/dist/types/IntegerType.js.map +1 -1
  366. package/dist/types/InterfaceType.d.ts +14 -6
  367. package/dist/types/InterfaceType.js +30 -15
  368. package/dist/types/InterfaceType.js.map +1 -1
  369. package/dist/types/IntersectionType.d.ts +29 -0
  370. package/dist/types/IntersectionType.js +256 -0
  371. package/dist/types/IntersectionType.js.map +1 -0
  372. package/dist/types/InvalidType.d.ts +10 -5
  373. package/dist/types/InvalidType.js +21 -9
  374. package/dist/types/InvalidType.js.map +1 -1
  375. package/dist/types/LongIntegerType.d.ts +10 -5
  376. package/dist/types/LongIntegerType.js +21 -17
  377. package/dist/types/LongIntegerType.js.map +1 -1
  378. package/dist/types/NamespaceType.d.ts +12 -0
  379. package/dist/types/NamespaceType.js +28 -0
  380. package/dist/types/NamespaceType.js.map +1 -0
  381. package/dist/types/ObjectType.d.ts +12 -5
  382. package/dist/types/ObjectType.js +25 -8
  383. package/dist/types/ObjectType.js.map +1 -1
  384. package/dist/types/ReferenceType.d.ts +123 -0
  385. package/dist/types/ReferenceType.js +726 -0
  386. package/dist/types/ReferenceType.js.map +1 -0
  387. package/dist/types/StringType.d.ts +12 -5
  388. package/dist/types/StringType.js +23 -8
  389. package/dist/types/StringType.js.map +1 -1
  390. package/dist/types/TypeStatementType.d.ts +19 -0
  391. package/dist/types/TypeStatementType.js +56 -0
  392. package/dist/types/TypeStatementType.js.map +1 -0
  393. package/dist/types/TypedFunctionType.d.ts +34 -0
  394. package/dist/types/TypedFunctionType.js +157 -0
  395. package/dist/types/TypedFunctionType.js.map +1 -0
  396. package/dist/types/UninitializedType.d.ts +11 -6
  397. package/dist/types/UninitializedType.js +20 -11
  398. package/dist/types/UninitializedType.js.map +1 -1
  399. package/dist/types/UnionType.d.ts +27 -0
  400. package/dist/types/UnionType.js +196 -0
  401. package/dist/types/UnionType.js.map +1 -0
  402. package/dist/types/VoidType.d.ts +11 -5
  403. package/dist/types/VoidType.js +22 -8
  404. package/dist/types/VoidType.js.map +1 -1
  405. package/dist/types/helpers.d.ts +51 -0
  406. package/dist/types/helpers.js +329 -0
  407. package/dist/types/helpers.js.map +1 -0
  408. package/dist/types/index.d.ts +22 -0
  409. package/dist/types/index.js +39 -0
  410. package/dist/types/index.js.map +1 -0
  411. package/dist/types/roFunctionType.d.ts +11 -0
  412. package/dist/types/roFunctionType.js +37 -0
  413. package/dist/types/roFunctionType.js.map +1 -0
  414. package/dist/util.d.ts +325 -185
  415. package/dist/util.js +2135 -568
  416. package/dist/util.js.map +1 -1
  417. package/dist/validators/ClassValidator.d.ts +9 -15
  418. package/dist/validators/ClassValidator.js +93 -138
  419. package/dist/validators/ClassValidator.js.map +1 -1
  420. package/package.json +183 -138
  421. package/CHANGELOG.md +0 -1188
  422. package/dist/astUtils/creators.spec.js +0 -21
  423. package/dist/astUtils/creators.spec.js.map +0 -1
  424. package/dist/astUtils/index.d.ts +0 -7
  425. package/dist/astUtils/index.js +0 -26
  426. package/dist/astUtils/index.js.map +0 -1
  427. package/dist/astUtils/reflection.spec.d.ts +0 -1
  428. package/dist/astUtils/reflection.spec.js +0 -292
  429. package/dist/astUtils/reflection.spec.js.map +0 -1
  430. package/dist/astUtils/stackedVisitor.spec.d.ts +0 -1
  431. package/dist/astUtils/stackedVisitor.spec.js +0 -79
  432. package/dist/astUtils/stackedVisitor.spec.js.map +0 -1
  433. package/dist/astUtils/visitors.spec.d.ts +0 -1
  434. package/dist/astUtils/visitors.spec.js +0 -854
  435. package/dist/astUtils/visitors.spec.js.map +0 -1
  436. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.d.ts +0 -1
  437. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +0 -194
  438. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +0 -1
  439. package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.d.ts +0 -7
  440. package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.js +0 -63
  441. package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.js.map +0 -1
  442. package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.spec.d.ts +0 -1
  443. package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.spec.js +0 -45
  444. package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.spec.js.map +0 -1
  445. package/dist/files/BrsFile.Class.spec.d.ts +0 -1
  446. package/dist/files/BrsFile.Class.spec.js +0 -1081
  447. package/dist/files/BrsFile.Class.spec.js.map +0 -1
  448. package/dist/files/BrsFile.spec.d.ts +0 -1
  449. package/dist/files/BrsFile.spec.js +0 -2524
  450. package/dist/files/BrsFile.spec.js.map +0 -1
  451. package/dist/files/XmlFile.spec.d.ts +0 -1
  452. package/dist/files/XmlFile.spec.js +0 -1065
  453. package/dist/files/XmlFile.spec.js.map +0 -1
  454. package/dist/files/tests/imports.spec.d.ts +0 -1
  455. package/dist/files/tests/imports.spec.js +0 -241
  456. package/dist/files/tests/imports.spec.js.map +0 -1
  457. package/dist/lexer/Character.spec.d.ts +0 -1
  458. package/dist/lexer/Character.spec.js +0 -27
  459. package/dist/lexer/Character.spec.js.map +0 -1
  460. package/dist/lexer/Lexer.spec.d.ts +0 -1
  461. package/dist/lexer/Lexer.spec.js +0 -1101
  462. package/dist/lexer/Lexer.spec.js.map +0 -1
  463. package/dist/lexer/index.d.ts +0 -3
  464. package/dist/lexer/index.js +0 -17
  465. package/dist/lexer/index.js.map +0 -1
  466. package/dist/parser/Parser.Class.spec.d.ts +0 -1
  467. package/dist/parser/Parser.Class.spec.js +0 -390
  468. package/dist/parser/Parser.Class.spec.js.map +0 -1
  469. package/dist/parser/Parser.spec.d.ts +0 -4
  470. package/dist/parser/Parser.spec.js +0 -1216
  471. package/dist/parser/Parser.spec.js.map +0 -1
  472. package/dist/parser/SGParser.spec.d.ts +0 -1
  473. package/dist/parser/SGParser.spec.js +0 -145
  474. package/dist/parser/SGParser.spec.js.map +0 -1
  475. package/dist/parser/SGTypes.spec.d.ts +0 -1
  476. package/dist/parser/SGTypes.spec.js +0 -351
  477. package/dist/parser/SGTypes.spec.js.map +0 -1
  478. package/dist/parser/Statement.spec.d.ts +0 -1
  479. package/dist/parser/Statement.spec.js +0 -94
  480. package/dist/parser/Statement.spec.js.map +0 -1
  481. package/dist/parser/index.d.ts +0 -3
  482. package/dist/parser/index.js +0 -16
  483. package/dist/parser/index.js.map +0 -1
  484. package/dist/parser/tests/Parser.spec.d.ts +0 -18
  485. package/dist/parser/tests/Parser.spec.js +0 -35
  486. package/dist/parser/tests/Parser.spec.js.map +0 -1
  487. package/dist/parser/tests/controlFlow/For.spec.d.ts +0 -1
  488. package/dist/parser/tests/controlFlow/For.spec.js +0 -161
  489. package/dist/parser/tests/controlFlow/For.spec.js.map +0 -1
  490. package/dist/parser/tests/controlFlow/ForEach.spec.d.ts +0 -1
  491. package/dist/parser/tests/controlFlow/ForEach.spec.js +0 -106
  492. package/dist/parser/tests/controlFlow/ForEach.spec.js.map +0 -1
  493. package/dist/parser/tests/controlFlow/If.spec.d.ts +0 -1
  494. package/dist/parser/tests/controlFlow/If.spec.js +0 -551
  495. package/dist/parser/tests/controlFlow/If.spec.js.map +0 -1
  496. package/dist/parser/tests/controlFlow/While.spec.d.ts +0 -1
  497. package/dist/parser/tests/controlFlow/While.spec.js +0 -107
  498. package/dist/parser/tests/controlFlow/While.spec.js.map +0 -1
  499. package/dist/parser/tests/expression/Additive.spec.d.ts +0 -1
  500. package/dist/parser/tests/expression/Additive.spec.js +0 -99
  501. package/dist/parser/tests/expression/Additive.spec.js.map +0 -1
  502. package/dist/parser/tests/expression/ArrayLiterals.spec.d.ts +0 -1
  503. package/dist/parser/tests/expression/ArrayLiterals.spec.js +0 -254
  504. package/dist/parser/tests/expression/ArrayLiterals.spec.js.map +0 -1
  505. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.d.ts +0 -1
  506. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +0 -266
  507. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +0 -1
  508. package/dist/parser/tests/expression/Boolean.spec.d.ts +0 -1
  509. package/dist/parser/tests/expression/Boolean.spec.js +0 -83
  510. package/dist/parser/tests/expression/Boolean.spec.js.map +0 -1
  511. package/dist/parser/tests/expression/Call.spec.d.ts +0 -1
  512. package/dist/parser/tests/expression/Call.spec.js +0 -134
  513. package/dist/parser/tests/expression/Call.spec.js.map +0 -1
  514. package/dist/parser/tests/expression/Exponential.spec.d.ts +0 -1
  515. package/dist/parser/tests/expression/Exponential.spec.js +0 -37
  516. package/dist/parser/tests/expression/Exponential.spec.js.map +0 -1
  517. package/dist/parser/tests/expression/Function.spec.d.ts +0 -1
  518. package/dist/parser/tests/expression/Function.spec.js +0 -403
  519. package/dist/parser/tests/expression/Function.spec.js.map +0 -1
  520. package/dist/parser/tests/expression/Indexing.spec.d.ts +0 -1
  521. package/dist/parser/tests/expression/Indexing.spec.js +0 -219
  522. package/dist/parser/tests/expression/Indexing.spec.js.map +0 -1
  523. package/dist/parser/tests/expression/Multiplicative.spec.d.ts +0 -1
  524. package/dist/parser/tests/expression/Multiplicative.spec.js +0 -67
  525. package/dist/parser/tests/expression/Multiplicative.spec.js.map +0 -1
  526. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.d.ts +0 -1
  527. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +0 -201
  528. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +0 -1
  529. package/dist/parser/tests/expression/PrefixUnary.spec.d.ts +0 -1
  530. package/dist/parser/tests/expression/PrefixUnary.spec.js +0 -105
  531. package/dist/parser/tests/expression/PrefixUnary.spec.js.map +0 -1
  532. package/dist/parser/tests/expression/Primary.spec.d.ts +0 -1
  533. package/dist/parser/tests/expression/Primary.spec.js +0 -149
  534. package/dist/parser/tests/expression/Primary.spec.js.map +0 -1
  535. package/dist/parser/tests/expression/Relational.spec.d.ts +0 -1
  536. package/dist/parser/tests/expression/Relational.spec.js +0 -83
  537. package/dist/parser/tests/expression/Relational.spec.js.map +0 -1
  538. package/dist/parser/tests/expression/SourceLiteralExpression.spec.d.ts +0 -1
  539. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js +0 -201
  540. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js.map +0 -1
  541. package/dist/parser/tests/expression/TemplateStringExpression.spec.d.ts +0 -1
  542. package/dist/parser/tests/expression/TemplateStringExpression.spec.js +0 -202
  543. package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +0 -1
  544. package/dist/parser/tests/expression/TernaryExpression.spec.d.ts +0 -1
  545. package/dist/parser/tests/expression/TernaryExpression.spec.js +0 -323
  546. package/dist/parser/tests/expression/TernaryExpression.spec.js.map +0 -1
  547. package/dist/parser/tests/statement/AssignmentOperators.spec.d.ts +0 -1
  548. package/dist/parser/tests/statement/AssignmentOperators.spec.js +0 -79
  549. package/dist/parser/tests/statement/AssignmentOperators.spec.js.map +0 -1
  550. package/dist/parser/tests/statement/Declaration.spec.d.ts +0 -1
  551. package/dist/parser/tests/statement/Declaration.spec.js +0 -108
  552. package/dist/parser/tests/statement/Declaration.spec.js.map +0 -1
  553. package/dist/parser/tests/statement/Dim.spec.d.ts +0 -1
  554. package/dist/parser/tests/statement/Dim.spec.js +0 -73
  555. package/dist/parser/tests/statement/Dim.spec.js.map +0 -1
  556. package/dist/parser/tests/statement/Function.spec.d.ts +0 -1
  557. package/dist/parser/tests/statement/Function.spec.js +0 -332
  558. package/dist/parser/tests/statement/Function.spec.js.map +0 -1
  559. package/dist/parser/tests/statement/Goto.spec.d.ts +0 -1
  560. package/dist/parser/tests/statement/Goto.spec.js +0 -50
  561. package/dist/parser/tests/statement/Goto.spec.js.map +0 -1
  562. package/dist/parser/tests/statement/Increment.spec.d.ts +0 -1
  563. package/dist/parser/tests/statement/Increment.spec.js +0 -117
  564. package/dist/parser/tests/statement/Increment.spec.js.map +0 -1
  565. package/dist/parser/tests/statement/LibraryStatement.spec.d.ts +0 -1
  566. package/dist/parser/tests/statement/LibraryStatement.spec.js +0 -74
  567. package/dist/parser/tests/statement/LibraryStatement.spec.js.map +0 -1
  568. package/dist/parser/tests/statement/Misc.spec.d.ts +0 -1
  569. package/dist/parser/tests/statement/Misc.spec.js +0 -333
  570. package/dist/parser/tests/statement/Misc.spec.js.map +0 -1
  571. package/dist/parser/tests/statement/PrintStatement.spec.d.ts +0 -1
  572. package/dist/parser/tests/statement/PrintStatement.spec.js +0 -181
  573. package/dist/parser/tests/statement/PrintStatement.spec.js.map +0 -1
  574. package/dist/parser/tests/statement/ReturnStatement.spec.d.ts +0 -1
  575. package/dist/parser/tests/statement/ReturnStatement.spec.js +0 -94
  576. package/dist/parser/tests/statement/ReturnStatement.spec.js.map +0 -1
  577. package/dist/parser/tests/statement/Set.spec.d.ts +0 -1
  578. package/dist/parser/tests/statement/Set.spec.js +0 -218
  579. package/dist/parser/tests/statement/Set.spec.js.map +0 -1
  580. package/dist/parser/tests/statement/Stop.spec.d.ts +0 -1
  581. package/dist/parser/tests/statement/Stop.spec.js +0 -37
  582. package/dist/parser/tests/statement/Stop.spec.js.map +0 -1
  583. package/dist/parser/tests/statement/Throw.spec.d.ts +0 -1
  584. package/dist/parser/tests/statement/Throw.spec.js +0 -35
  585. package/dist/parser/tests/statement/Throw.spec.js.map +0 -1
  586. package/dist/parser/tests/statement/TryCatch.spec.d.ts +0 -1
  587. package/dist/parser/tests/statement/TryCatch.spec.js +0 -140
  588. package/dist/parser/tests/statement/TryCatch.spec.js.map +0 -1
  589. package/dist/preprocessor/Chunk.d.ts +0 -82
  590. package/dist/preprocessor/Chunk.js +0 -77
  591. package/dist/preprocessor/Chunk.js.map +0 -1
  592. package/dist/preprocessor/Manifest.spec.d.ts +0 -0
  593. package/dist/preprocessor/Manifest.spec.js +0 -105
  594. package/dist/preprocessor/Manifest.spec.js.map +0 -1
  595. package/dist/preprocessor/Preprocessor.d.ts +0 -60
  596. package/dist/preprocessor/Preprocessor.js +0 -156
  597. package/dist/preprocessor/Preprocessor.js.map +0 -1
  598. package/dist/preprocessor/Preprocessor.spec.d.ts +0 -1
  599. package/dist/preprocessor/Preprocessor.spec.js +0 -152
  600. package/dist/preprocessor/Preprocessor.spec.js.map +0 -1
  601. package/dist/preprocessor/PreprocessorParser.d.ts +0 -61
  602. package/dist/preprocessor/PreprocessorParser.js +0 -194
  603. package/dist/preprocessor/PreprocessorParser.js.map +0 -1
  604. package/dist/preprocessor/PreprocessorParser.spec.d.ts +0 -1
  605. package/dist/preprocessor/PreprocessorParser.spec.js +0 -116
  606. package/dist/preprocessor/PreprocessorParser.spec.js.map +0 -1
  607. package/dist/preprocessor/index.d.ts +0 -3
  608. package/dist/preprocessor/index.js +0 -16
  609. package/dist/preprocessor/index.js.map +0 -1
  610. package/dist/types/ArrayType.spec.d.ts +0 -1
  611. package/dist/types/ArrayType.spec.js +0 -30
  612. package/dist/types/ArrayType.spec.js.map +0 -1
  613. package/dist/types/BooleanType.spec.d.ts +0 -1
  614. package/dist/types/BooleanType.spec.js +0 -12
  615. package/dist/types/BooleanType.spec.js.map +0 -1
  616. package/dist/types/CustomType.d.ts +0 -10
  617. package/dist/types/CustomType.js +0 -35
  618. package/dist/types/CustomType.js.map +0 -1
  619. package/dist/types/DoubleType.spec.d.ts +0 -1
  620. package/dist/types/DoubleType.spec.js +0 -12
  621. package/dist/types/DoubleType.spec.js.map +0 -1
  622. package/dist/types/DynamicType.spec.d.ts +0 -1
  623. package/dist/types/DynamicType.spec.js +0 -12
  624. package/dist/types/DynamicType.spec.js.map +0 -1
  625. package/dist/types/FloatType.spec.d.ts +0 -1
  626. package/dist/types/FloatType.spec.js +0 -12
  627. package/dist/types/FloatType.spec.js.map +0 -1
  628. package/dist/types/FunctionType.spec.d.ts +0 -1
  629. package/dist/types/FunctionType.spec.js +0 -29
  630. package/dist/types/FunctionType.spec.js.map +0 -1
  631. package/dist/types/IntegerType.spec.d.ts +0 -1
  632. package/dist/types/IntegerType.spec.js +0 -12
  633. package/dist/types/IntegerType.spec.js.map +0 -1
  634. package/dist/types/InvalidType.spec.d.ts +0 -1
  635. package/dist/types/InvalidType.spec.js +0 -12
  636. package/dist/types/InvalidType.spec.js.map +0 -1
  637. package/dist/types/LazyType.d.ts +0 -15
  638. package/dist/types/LazyType.js +0 -32
  639. package/dist/types/LazyType.js.map +0 -1
  640. package/dist/types/LongIntegerType.spec.d.ts +0 -1
  641. package/dist/types/LongIntegerType.spec.js +0 -12
  642. package/dist/types/LongIntegerType.spec.js.map +0 -1
  643. package/dist/types/ObjectType.spec.d.ts +0 -1
  644. package/dist/types/ObjectType.spec.js +0 -12
  645. package/dist/types/ObjectType.spec.js.map +0 -1
  646. package/dist/types/StringType.spec.d.ts +0 -1
  647. package/dist/types/StringType.spec.js +0 -12
  648. package/dist/types/StringType.spec.js.map +0 -1
  649. package/dist/types/VoidType.spec.d.ts +0 -1
  650. package/dist/types/VoidType.spec.js +0 -12
  651. package/dist/types/VoidType.spec.js.map +0 -1
  652. /package/dist/{astUtils/creators.spec.d.ts → lsp/worker/run.d.ts} +0 -0
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UnionType = exports.unionTypeFactory = void 0;
4
+ const reflection_1 = require("../astUtils/reflection");
5
+ const BscType_1 = require("./BscType");
6
+ const ReferenceType_1 = require("./ReferenceType");
7
+ const helpers_1 = require("./helpers");
8
+ const BscTypeKind_1 = require("./BscTypeKind");
9
+ const SymbolTable_1 = require("../SymbolTable");
10
+ const BuiltInInterfaceAdder_1 = require("./BuiltInInterfaceAdder");
11
+ const util_1 = require("../util");
12
+ function unionTypeFactory(types) {
13
+ return new UnionType(types);
14
+ }
15
+ exports.unionTypeFactory = unionTypeFactory;
16
+ class UnionType extends BscType_1.BscType {
17
+ constructor(types) {
18
+ super((0, helpers_1.joinTypesString)(types, 'or', BscTypeKind_1.BscTypeKind.UnionType));
19
+ this.types = types;
20
+ this.kind = BscTypeKind_1.BscTypeKind.UnionType;
21
+ this.callFuncAssociatedTypesTable = new SymbolTable_1.SymbolTable(`Union: CallFuncAssociatedTypes`);
22
+ }
23
+ addType(type) {
24
+ this.types.push(type);
25
+ }
26
+ isResolvable() {
27
+ for (const type of this.types) {
28
+ if (!type.isResolvable()) {
29
+ return false;
30
+ }
31
+ }
32
+ return true;
33
+ }
34
+ getMemberTypeFromInnerTypes(name, options) {
35
+ return this.types.map((innerType) => innerType === null || innerType === void 0 ? void 0 : innerType.getMemberType(name, options));
36
+ }
37
+ getCallFuncFromInnerTypes(name, options) {
38
+ return this.types.map((innerType) => innerType === null || innerType === void 0 ? void 0 : innerType.getCallFuncType(name, options));
39
+ }
40
+ getMemberType(name, options) {
41
+ const innerTypesMemberTypes = this.getMemberTypeFromInnerTypes(name, options);
42
+ if (!innerTypesMemberTypes || innerTypesMemberTypes.includes(undefined)) {
43
+ // We don't have any members of any inner types that match
44
+ // so instead, create reference type that will
45
+ return new ReferenceType_1.ReferenceType(name, name, options.flags, () => {
46
+ return {
47
+ name: `UnionType MemberTable: '${this.__identifier}'`,
48
+ getSymbolType: (innerName, innerOptions) => {
49
+ const referenceTypeInnerMemberTypes = this.getMemberTypeFromInnerTypes(name, options);
50
+ if (!referenceTypeInnerMemberTypes || referenceTypeInnerMemberTypes.includes(undefined)) {
51
+ return undefined;
52
+ }
53
+ return (0, helpers_1.getUniqueType)((0, helpers_1.findTypeUnion)(referenceTypeInnerMemberTypes), unionTypeFactory);
54
+ },
55
+ setCachedType: (innerName, innerCacheEntry, innerOptions) => {
56
+ // TODO: is this even cachable? This is a NO-OP for now, and it shouldn't hurt anything
57
+ },
58
+ addSibling: (symbolTable) => {
59
+ // TODO: I don't know what this means in this context?
60
+ }
61
+ };
62
+ });
63
+ }
64
+ return (0, helpers_1.getUniqueType)((0, helpers_1.findTypeUnion)(innerTypesMemberTypes), unionTypeFactory);
65
+ }
66
+ getCallFuncType(name, options) {
67
+ const innerTypesMemberTypes = this.getCallFuncFromInnerTypes(name, options);
68
+ if (!innerTypesMemberTypes || innerTypesMemberTypes.includes(undefined)) {
69
+ // We don't have any members of any inner types that match
70
+ // so instead, create reference type that will
71
+ return new ReferenceType_1.ReferenceType(name, name, options.flags, () => {
72
+ return {
73
+ name: `UnionType CallFunc MemberTable: '${this.__identifier}'`,
74
+ getSymbolType: (innerName, innerOptions) => {
75
+ const referenceTypeInnerMemberTypes = this.getCallFuncFromInnerTypes(name, options);
76
+ if (!referenceTypeInnerMemberTypes || referenceTypeInnerMemberTypes.includes(undefined)) {
77
+ return undefined;
78
+ }
79
+ return (0, helpers_1.getUniqueType)((0, helpers_1.findTypeUnionDeepCheck)(referenceTypeInnerMemberTypes), unionTypeFactory);
80
+ },
81
+ setCachedType: (innerName, innerCacheEntry, innerOptions) => {
82
+ // TODO: is this even cachable? This is a NO-OP for now, and it shouldn't hurt anything
83
+ },
84
+ addSibling: (symbolTable) => {
85
+ // TODO: I don't know what this means in this context?
86
+ }
87
+ };
88
+ });
89
+ }
90
+ const resultCallFuncType = (0, helpers_1.getUniqueType)((0, helpers_1.findTypeUnionDeepCheck)(innerTypesMemberTypes), unionTypeFactory, false);
91
+ if ((0, reflection_1.isTypedFunctionType)(resultCallFuncType)) {
92
+ const typesToCheck = [...resultCallFuncType.params.map(p => p.type), resultCallFuncType.returnType];
93
+ for (const type of typesToCheck) {
94
+ (0, helpers_1.addAssociatedTypesTableAsSiblingToMemberTable)(type, this.callFuncAssociatedTypesTable, 1 /* SymbolTypeFlag.runtime */);
95
+ }
96
+ }
97
+ return resultCallFuncType;
98
+ }
99
+ get returnType() {
100
+ return util_1.util.getReturnTypeOfUnionOfFunctions(this);
101
+ }
102
+ isTypeCompatible(targetType, data) {
103
+ while ((0, reflection_1.isTypeStatementType)(targetType)) {
104
+ targetType = targetType.wrappedType;
105
+ }
106
+ if ((0, reflection_1.isDynamicType)(targetType) || (0, reflection_1.isObjectType)(targetType) || this === targetType) {
107
+ return true;
108
+ }
109
+ if ((0, helpers_1.isEnumTypeCompatible)(this, targetType, data)) {
110
+ return true;
111
+ }
112
+ if ((0, reflection_1.isUnionType)(targetType)) {
113
+ // check if this set of inner types is a SUPERSET of targetTypes's inner types
114
+ for (const targetInnerType of targetType.types) {
115
+ if (!this.isTypeCompatible(targetInnerType, data)) {
116
+ return false;
117
+ }
118
+ }
119
+ return true;
120
+ }
121
+ for (const innerType of this.types) {
122
+ const foundCompatibleInnerType = innerType.isTypeCompatible(targetType, data);
123
+ if (foundCompatibleInnerType) {
124
+ return true;
125
+ }
126
+ }
127
+ return false;
128
+ }
129
+ toString() {
130
+ return (0, helpers_1.joinTypesString)(this.types, 'or', BscTypeKind_1.BscTypeKind.UnionType);
131
+ }
132
+ /**
133
+ * Used for transpilation
134
+ */
135
+ toTypeString() {
136
+ const uniqueTypeStrings = new Set((0, helpers_1.getAllTypesFromCompoundType)(this).map(t => t.toTypeString()));
137
+ if (uniqueTypeStrings.size === 1) {
138
+ return uniqueTypeStrings.values().next().value;
139
+ }
140
+ return 'dynamic';
141
+ }
142
+ checkAllMemberTypes(predicate) {
143
+ return this.types.reduce((acc, type) => {
144
+ return acc && predicate(type);
145
+ }, true);
146
+ }
147
+ isEqual(targetType) {
148
+ if (!(0, reflection_1.isUnionType)(targetType)) {
149
+ return false;
150
+ }
151
+ if (this === targetType) {
152
+ return true;
153
+ }
154
+ if (this.types.length !== targetType.types.length) {
155
+ return false;
156
+ }
157
+ for (const type of this.types) {
158
+ let foundMatch = false;
159
+ for (const targetTypeInner of targetType.types) {
160
+ if (type.isEqual(targetTypeInner)) {
161
+ foundMatch = true;
162
+ break;
163
+ }
164
+ }
165
+ if (!foundMatch) {
166
+ return false;
167
+ }
168
+ }
169
+ return true;
170
+ }
171
+ getMemberTable() {
172
+ const unionTable = new SymbolTable_1.SymbolTable(this.__identifier + ' UnionTable');
173
+ const firstType = this.types[0];
174
+ if (!firstType) {
175
+ return unionTable;
176
+ }
177
+ firstType.addBuiltInInterfaces();
178
+ for (const symbol of firstType.getMemberTable().getAllSymbols(1 /* SymbolTypeFlag.runtime */)) {
179
+ const foundType = this.getMemberTypeFromInnerTypes(symbol.name, { flags: 1 /* SymbolTypeFlag.runtime */ });
180
+ const allResolvableTypes = foundType.reduce((acc, curType) => {
181
+ return acc && (curType === null || curType === void 0 ? void 0 : curType.isResolvable());
182
+ }, true);
183
+ if (!allResolvableTypes) {
184
+ continue;
185
+ }
186
+ const uniqueType = (0, helpers_1.getUniqueType)((0, helpers_1.findTypeUnion)(foundType), unionTypeFactory);
187
+ unionTable.addSymbol(symbol.name, {}, uniqueType, 1 /* SymbolTypeFlag.runtime */);
188
+ }
189
+ return unionTable;
190
+ }
191
+ }
192
+ exports.UnionType = UnionType;
193
+ BuiltInInterfaceAdder_1.BuiltInInterfaceAdder.unionTypeFactory = (types) => {
194
+ return new UnionType(types);
195
+ };
196
+ //# sourceMappingURL=UnionType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnionType.js","sourceRoot":"","sources":["../../src/types/UnionType.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,14 @@
1
- import type { BscType } from './BscType';
2
- export declare class VoidType implements BscType {
3
- isAssignableTo(targetType: BscType): any;
4
- isConvertibleTo(targetType: BscType): any;
1
+ import { BscType } from './BscType';
2
+ import { BscTypeKind } from './BscTypeKind';
3
+ import type { GetTypeOptions, TypeCompatibilityData } from '../interfaces';
4
+ import { DynamicType } from './DynamicType';
5
+ export declare class VoidType extends BscType {
6
+ readonly kind = BscTypeKind.VoidType;
7
+ static instance: VoidType;
8
+ isBuiltIn: boolean;
9
+ isTypeCompatible(targetType: BscType, data?: TypeCompatibilityData): boolean;
5
10
  toString(): string;
6
11
  toTypeString(): string;
7
- equals(targetType: BscType): boolean;
12
+ isEqual(targetType: BscType): boolean;
13
+ getMemberType(memberName: string, options: GetTypeOptions): DynamicType;
8
14
  }
@@ -2,13 +2,22 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VoidType = void 0;
4
4
  const reflection_1 = require("../astUtils/reflection");
5
- class VoidType {
6
- isAssignableTo(targetType) {
7
- return (reflection_1.isVoidType(targetType) ||
8
- reflection_1.isDynamicType(targetType));
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
+ const DynamicType_1 = require("./DynamicType");
10
+ class VoidType extends BscType_1.BscType {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.kind = BscTypeKind_1.BscTypeKind.VoidType;
14
+ this.isBuiltIn = true;
9
15
  }
10
- isConvertibleTo(targetType) {
11
- return this.isAssignableTo(targetType);
16
+ isTypeCompatible(targetType, data) {
17
+ return ((0, reflection_1.isVoidType)(targetType) ||
18
+ (0, reflection_1.isDynamicType)(targetType) ||
19
+ (0, reflection_1.isObjectType)(targetType) ||
20
+ (0, helpers_1.isUnionTypeCompatible)(this, targetType, data));
12
21
  }
13
22
  toString() {
14
23
  return 'void';
@@ -16,9 +25,14 @@ class VoidType {
16
25
  toTypeString() {
17
26
  return this.toString();
18
27
  }
19
- equals(targetType) {
20
- return reflection_1.isVoidType(targetType);
28
+ isEqual(targetType) {
29
+ return (0, reflection_1.isVoidType)(targetType);
30
+ }
31
+ getMemberType(memberName, options) {
32
+ return DynamicType_1.DynamicType.instance;
21
33
  }
22
34
  }
23
35
  exports.VoidType = VoidType;
36
+ VoidType.instance = new VoidType();
37
+ BuiltInInterfaceAdder_1.BuiltInInterfaceAdder.primitiveTypeInstanceCache.set('void', VoidType.instance);
24
38
  //# sourceMappingURL=VoidType.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VoidType.js","sourceRoot":"","sources":["../../src/types/VoidType.ts"],"names":[],"mappings":";;;AAAA,uDAAmE;AAGnE,MAAa,QAAQ;IACV,cAAc,CAAC,UAAmB;QACrC,OAAO,CACH,uBAAU,CAAC,UAAU,CAAC;YACtB,0BAAa,CAAC,UAAU,CAAC,CAC5B,CAAC;IACN,CAAC;IAEM,eAAe,CAAC,UAAmB;QACtC,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAEM,QAAQ;QACX,OAAO,MAAM,CAAC;IAClB,CAAC;IAGM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAEM,MAAM,CAAC,UAAmB;QAC7B,OAAO,uBAAU,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;CACJ;AAxBD,4BAwBC"}
1
+ {"version":3,"file":"VoidType.js","sourceRoot":"","sources":["../../src/types/VoidType.ts"],"names":[],"mappings":";;;AAAA,uDAAiF;AACjF,uCAAoC;AACpC,+CAA4C;AAC5C,uCAAkD;AAClD,mEAAgE;AAEhE,+CAA4C;AAE5C,MAAa,QAAS,SAAQ,iBAAO;IAArC;;QAEoB,SAAI,GAAG,yBAAW,CAAC,QAAQ,CAAC;QAIrC,cAAS,GAAG,IAAI,CAAC;IA0B5B,CAAC;IAxBU,gBAAgB,CAAC,UAAmB,EAAE,IAA4B;QACrE,OAAO,CACH,IAAA,uBAAU,EAAC,UAAU,CAAC;YACtB,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,+BAAqB,EAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAChD,CAAC;IACN,CAAC;IAEM,QAAQ;QACX,OAAO,MAAM,CAAC;IAClB,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAEM,OAAO,CAAC,UAAmB;QAC9B,OAAO,IAAA,uBAAU,EAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAED,aAAa,CAAC,UAAkB,EAAE,OAAuB;QACrD,OAAO,yBAAW,CAAC,QAAQ,CAAC;IAChC,CAAC;;AA/BL,4BAgCC;AA5BiB,iBAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;AA8B5C,6CAAqB,CAAC,0BAA0B,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC"}
@@ -0,0 +1,51 @@
1
+ import type { TypeCompatibilityData } from '../interfaces';
2
+ import type { BscType } from './BscType';
3
+ import type { UnionType } from './UnionType';
4
+ import type { SymbolTable } from '../SymbolTable';
5
+ import type { SymbolTypeFlag } from '../SymbolTypeFlag';
6
+ import type { IntersectionType } from './IntersectionType';
7
+ import type { BscTypeKind } from './BscTypeKind';
8
+ export declare function findTypeIntersection(typesArr1: BscType[], typesArr2: BscType[]): BscType[];
9
+ export declare function findTypeUnion(...typesArr: BscType[][]): BscType[];
10
+ /**
11
+ * Same as findTypeUnion, but does not allow short cutting by just checking names
12
+ * Useful for checking types between callfuncs, as the parameter types may have the same name, but mean different things
13
+ */
14
+ export declare function findTypeUnionDeepCheck(...typesArr: BscType[][]): BscType[];
15
+ export declare function getUniqueTypesFromArray(types: BscType[], allowNameEquality?: boolean): BscType[];
16
+ /**
17
+ * Reduces a list of types based on equality or inheritance
18
+ * If all types are the same - just that type is returned
19
+ * If one of the types is Dynamic, then Dynamic.instance is returned
20
+ * If any types inherit another type, the more general type is returned
21
+ * @param types array of types
22
+ * @returns an array of the most general types
23
+ */
24
+ export declare function reduceTypesToMostGeneric(types: BscType[], allowNameEquality?: boolean): BscType[];
25
+ /**
26
+ * Reduces a list of types based on equality or inheritance
27
+ * If all types are the same - just that type is returned
28
+ * If one of the types is Dynamic, then Dynamic.instance is returned
29
+ * If any types inherit another type, the more Specific type is returned, eg. the one with the most members
30
+ * @param types array of types
31
+ * @returns an array of the most specific types
32
+ */
33
+ export declare function reduceTypesForIntersectionType(types: BscType[], allowNameEquality?: boolean): BscType[];
34
+ /**
35
+ * Gets a Unique type from a list of types
36
+ * @param types array of types
37
+ * @returns either the singular most general type, if there is one, otherwise a UnionType of the most general types
38
+ */
39
+ export declare function getUniqueType(types: BscType[], unionTypeFactory: (types: BscType[]) => BscType, allowNameEquality?: boolean): BscType;
40
+ export declare function isUnionTypeCompatible(thisType: BscType, maybeUnionType: BscType, data?: TypeCompatibilityData): boolean;
41
+ export declare function isEnumTypeCompatible(thisType: BscType, maybeEnumType: BscType, data?: TypeCompatibilityData): boolean;
42
+ export declare function isNativeInterfaceCompatible(thisType: BscType, otherType: BscType, allowedType: string, data?: TypeCompatibilityData): boolean;
43
+ export declare function isNativeInterfaceCompatibleNumber(thisType: BscType, otherType: BscType, data?: TypeCompatibilityData): boolean;
44
+ export declare function getAllTypesFromCompoundType(complex: UnionType | IntersectionType): BscType[];
45
+ export declare function addAssociatedTypesTableAsSiblingToMemberTable(type: BscType, associatedTypesTable: SymbolTable, bitFlags: SymbolTypeFlag): void;
46
+ /**
47
+ * A map of all types created in the program during its lifetime. This applies across all programs, validate runs, etc. Mostly useful for a single run to track types created.
48
+ */
49
+ export declare const TypesCreated: Record<string, number>;
50
+ export declare function joinTypesString(types: BscType[], separator: string, thisTypeKind: BscTypeKind): string;
51
+ export declare function isTypeWithPotentialDefaultDynamicMember(type: BscType): boolean;
@@ -0,0 +1,329 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isTypeWithPotentialDefaultDynamicMember = exports.joinTypesString = exports.TypesCreated = exports.addAssociatedTypesTableAsSiblingToMemberTable = exports.getAllTypesFromCompoundType = exports.isNativeInterfaceCompatibleNumber = exports.isNativeInterfaceCompatible = exports.isEnumTypeCompatible = exports.isUnionTypeCompatible = exports.getUniqueType = exports.reduceTypesForIntersectionType = exports.reduceTypesToMostGeneric = exports.getUniqueTypesFromArray = exports.findTypeUnionDeepCheck = exports.findTypeUnion = exports.findTypeIntersection = void 0;
4
+ const reflection_1 = require("../astUtils/reflection");
5
+ function findTypeIntersection(typesArr1, typesArr2) {
6
+ if (!typesArr1 || !typesArr2) {
7
+ return undefined;
8
+ }
9
+ return typesArr1 === null || typesArr1 === void 0 ? void 0 : typesArr1.filter((currentType) => {
10
+ if (!currentType) {
11
+ return false;
12
+ }
13
+ const indexOfCurrentTypeInArr2 = typesArr2.findIndex((checkType) => {
14
+ return currentType.isEqual(checkType);
15
+ });
16
+ return indexOfCurrentTypeInArr2 >= 0;
17
+ });
18
+ }
19
+ exports.findTypeIntersection = findTypeIntersection;
20
+ function findTypeUnion(...typesArr) {
21
+ return getUniqueTypesFromArray([].concat(...typesArr));
22
+ }
23
+ exports.findTypeUnion = findTypeUnion;
24
+ /**
25
+ * Same as findTypeUnion, but does not allow short cutting by just checking names
26
+ * Useful for checking types between callfuncs, as the parameter types may have the same name, but mean different things
27
+ */
28
+ function findTypeUnionDeepCheck(...typesArr) {
29
+ return getUniqueTypesFromArray([].concat(...typesArr), false);
30
+ }
31
+ exports.findTypeUnionDeepCheck = findTypeUnionDeepCheck;
32
+ function getUniqueTypesFromArray(types, allowNameEquality = true) {
33
+ if (!types) {
34
+ return undefined;
35
+ }
36
+ return types === null || types === void 0 ? void 0 : types.filter((currentType, currentIndex) => {
37
+ if (!currentType) {
38
+ return false;
39
+ }
40
+ while ((0, reflection_1.isTypeStatementType)(currentType)) {
41
+ currentType = currentType.wrappedType;
42
+ }
43
+ if (((0, reflection_1.isTypePropertyReferenceType)(currentType) || (0, reflection_1.isArrayDefaultTypeReferenceType)(currentType)) && !currentType.isResolvable()) {
44
+ return true;
45
+ }
46
+ const latestIndex = types.findIndex((checkType) => {
47
+ while ((0, reflection_1.isTypeStatementType)(checkType)) {
48
+ checkType = checkType.wrappedType;
49
+ }
50
+ return currentType.isEqual(checkType, { allowNameEquality: allowNameEquality });
51
+ });
52
+ // the index that was found is the index we're checking --- there are no equal types after this
53
+ return latestIndex === currentIndex;
54
+ });
55
+ }
56
+ exports.getUniqueTypesFromArray = getUniqueTypesFromArray;
57
+ /**
58
+ * Reduces a list of types based on equality or inheritance
59
+ * If all types are the same - just that type is returned
60
+ * If one of the types is Dynamic, then Dynamic.instance is returned
61
+ * If any types inherit another type, the more general type is returned
62
+ * @param types array of types
63
+ * @returns an array of the most general types
64
+ */
65
+ function reduceTypesToMostGeneric(types, allowNameEquality = true) {
66
+ if (!types || (types === null || types === void 0 ? void 0 : types.length) === 0) {
67
+ return undefined;
68
+ }
69
+ if (types.length === 1) {
70
+ // only one type
71
+ return [types[0]];
72
+ }
73
+ types = types.map(t => {
74
+ var _a;
75
+ if ((0, reflection_1.isReferenceType)(t) && t.isResolvable()) {
76
+ return (_a = t.getTarget()) !== null && _a !== void 0 ? _a : t;
77
+ }
78
+ return t;
79
+ });
80
+ // Get a list of unique types, based on the `isEqual()` method
81
+ const uniqueTypes = getUniqueTypesFromArray(types, allowNameEquality).map(t => {
82
+ // map to object with `shouldIgnore` flag
83
+ return { type: t, shouldIgnore: false };
84
+ });
85
+ if (uniqueTypes.length === 1) {
86
+ // only one type after filtering
87
+ return [uniqueTypes[0].type];
88
+ }
89
+ const existingDynamicType = uniqueTypes.find(t => !(0, reflection_1.isAnyReferenceType)(t.type) && (0, reflection_1.isDynamicType)(t.type));
90
+ if (existingDynamicType) {
91
+ // If it includes dynamic, then the result is dynamic
92
+ return [existingDynamicType.type];
93
+ }
94
+ const generalizedTypes = [];
95
+ //check assignability:
96
+ for (let i = 0; i < uniqueTypes.length; i++) {
97
+ const currentType = uniqueTypes[i].type;
98
+ if (i === uniqueTypes.length - 1) {
99
+ if (!uniqueTypes[i].shouldIgnore) {
100
+ //this type was not convertible to anything else... it is as general as possible
101
+ generalizedTypes.push(currentType);
102
+ }
103
+ break;
104
+ }
105
+ for (let j = i + 1; j < uniqueTypes.length; j++) {
106
+ if (uniqueTypes[j].shouldIgnore) {
107
+ continue;
108
+ }
109
+ const checkType = uniqueTypes[j].type;
110
+ if (currentType.isResolvable() && currentType.isEqual(uniqueTypes[j].type, { allowNameEquality: allowNameEquality })) {
111
+ uniqueTypes[j].shouldIgnore = true;
112
+ }
113
+ else if ((0, reflection_1.isInheritableType)(currentType) && (0, reflection_1.isInheritableType)(checkType)) {
114
+ if (currentType.isTypeDescendent(checkType)) {
115
+ //the type we're checking is less general than the current type... it can be ignored
116
+ uniqueTypes[j].shouldIgnore = true;
117
+ }
118
+ if (checkType.isTypeDescendent(currentType)) {
119
+ // the currentType is a descendent to some other type - it won't be in the final set
120
+ break;
121
+ }
122
+ }
123
+ if (j === uniqueTypes.length - 1) {
124
+ //this type was not convertible to anything else... it is as general as possible
125
+ generalizedTypes.push(currentType);
126
+ }
127
+ }
128
+ }
129
+ return generalizedTypes;
130
+ }
131
+ exports.reduceTypesToMostGeneric = reduceTypesToMostGeneric;
132
+ /**
133
+ * Reduces a list of types based on equality or inheritance
134
+ * If all types are the same - just that type is returned
135
+ * If one of the types is Dynamic, then Dynamic.instance is returned
136
+ * If any types inherit another type, the more Specific type is returned, eg. the one with the most members
137
+ * @param types array of types
138
+ * @returns an array of the most specific types
139
+ */
140
+ function reduceTypesForIntersectionType(types, allowNameEquality = true) {
141
+ if (!types || (types === null || types === void 0 ? void 0 : types.length) === 0) {
142
+ return undefined;
143
+ }
144
+ if (types.length === 1) {
145
+ // only one type
146
+ return [types[0]];
147
+ }
148
+ types = types.map(t => {
149
+ var _a;
150
+ if ((0, reflection_1.isReferenceType)(t)) {
151
+ if (t.isResolvable()) {
152
+ return (_a = t.getTarget()) !== null && _a !== void 0 ? _a : t;
153
+ }
154
+ return undefined;
155
+ }
156
+ return t;
157
+ }).filter(t => t);
158
+ // Get a list of unique types, based on the `isEqual()` method
159
+ const uniqueTypes = getUniqueTypesFromArray(types, allowNameEquality).map(t => {
160
+ // map to object with `shouldIgnore` flag
161
+ return { type: t, shouldIgnore: false };
162
+ });
163
+ if (uniqueTypes.length === 1) {
164
+ // only one type after filtering
165
+ return [uniqueTypes[0].type];
166
+ }
167
+ const existingDynamicType = uniqueTypes.find(t => !(0, reflection_1.isAnyReferenceType)(t.type) && (0, reflection_1.isDynamicType)(t.type));
168
+ if (existingDynamicType) {
169
+ // If it includes dynamic, then the result is dynamic
170
+ return [existingDynamicType.type];
171
+ }
172
+ const specificTypes = [];
173
+ //check assignability:
174
+ for (let i = 0; i < uniqueTypes.length; i++) {
175
+ const currentType = uniqueTypes[i].type;
176
+ if (i === uniqueTypes.length - 1) {
177
+ if (!uniqueTypes[i].shouldIgnore) {
178
+ //this type was not convertible to anything else... it is as general as possible
179
+ specificTypes.push(currentType);
180
+ }
181
+ break;
182
+ }
183
+ for (let j = i + 1; j < uniqueTypes.length; j++) {
184
+ if (uniqueTypes[j].shouldIgnore) {
185
+ continue;
186
+ }
187
+ const checkType = uniqueTypes[j].type;
188
+ if (currentType.isResolvable() && currentType.isEqual(uniqueTypes[j].type, { allowNameEquality: allowNameEquality })) {
189
+ uniqueTypes[j].shouldIgnore = true;
190
+ }
191
+ else if ((0, reflection_1.isInheritableType)(currentType) && (0, reflection_1.isInheritableType)(checkType)) {
192
+ if (checkType.isTypeDescendent(currentType)) {
193
+ //the type we're checking is more general than the current type... it can be ignored
194
+ uniqueTypes[j].shouldIgnore = true;
195
+ }
196
+ if (currentType.isTypeDescendent(checkType)) {
197
+ // the currentType is an ancestor to some other type - it won't be in the final set
198
+ break;
199
+ }
200
+ }
201
+ if (j === uniqueTypes.length - 1) {
202
+ //this type was not convertible to anything else... it is as general as possible
203
+ specificTypes.push(currentType);
204
+ }
205
+ }
206
+ }
207
+ return specificTypes;
208
+ }
209
+ exports.reduceTypesForIntersectionType = reduceTypesForIntersectionType;
210
+ /**
211
+ * Gets a Unique type from a list of types
212
+ * @param types array of types
213
+ * @returns either the singular most general type, if there is one, otherwise a UnionType of the most general types
214
+ */
215
+ function getUniqueType(types, unionTypeFactory, allowNameEquality = true) {
216
+ if (!types || types.length === 0) {
217
+ return undefined;
218
+ }
219
+ const dynType = types.find((x) => !(0, reflection_1.isAnyReferenceType)(x) && ((0, reflection_1.isDynamicType)(x) || (0, reflection_1.isVoidType)(x)));
220
+ if (dynType) {
221
+ return dynType;
222
+ }
223
+ types = types === null || types === void 0 ? void 0 : types.map(type => {
224
+ if (!(0, reflection_1.isAnyReferenceType)(type) && (0, reflection_1.isUnionType)(type)) {
225
+ return type.types;
226
+ }
227
+ return type;
228
+ }).flat();
229
+ const generalizedTypes = reduceTypesToMostGeneric(types, allowNameEquality);
230
+ if (!generalizedTypes || generalizedTypes.length === 0) {
231
+ return undefined;
232
+ }
233
+ if ((generalizedTypes === null || generalizedTypes === void 0 ? void 0 : generalizedTypes.length) === 1) {
234
+ // only one type
235
+ return generalizedTypes[0];
236
+ }
237
+ return unionTypeFactory(generalizedTypes);
238
+ }
239
+ exports.getUniqueType = getUniqueType;
240
+ function isUnionTypeCompatible(thisType, maybeUnionType, data) {
241
+ if ((0, reflection_1.isUnionType)(maybeUnionType)) {
242
+ for (const innerType of maybeUnionType.types) {
243
+ if (!thisType.isTypeCompatible(innerType, data)) {
244
+ return false;
245
+ }
246
+ }
247
+ return true;
248
+ }
249
+ return false;
250
+ }
251
+ exports.isUnionTypeCompatible = isUnionTypeCompatible;
252
+ function isEnumTypeCompatible(thisType, maybeEnumType, data) {
253
+ if ((0, reflection_1.isEnumMemberType)(maybeEnumType) || (0, reflection_1.isEnumType)(maybeEnumType)) {
254
+ return thisType.isTypeCompatible(maybeEnumType.underlyingType, data);
255
+ }
256
+ return false;
257
+ }
258
+ exports.isEnumTypeCompatible = isEnumTypeCompatible;
259
+ function isNativeInterfaceCompatible(thisType, otherType, allowedType, data) {
260
+ if ((0, reflection_1.isInterfaceType)(otherType)) {
261
+ // TODO: it is not great to do type checking based on interface name
262
+ const lowerOtherName = otherType.name.toLowerCase();
263
+ return allowedType === lowerOtherName;
264
+ }
265
+ return false;
266
+ }
267
+ exports.isNativeInterfaceCompatible = isNativeInterfaceCompatible;
268
+ function isNativeInterfaceCompatibleNumber(thisType, otherType, data) {
269
+ if ((0, reflection_1.isInterfaceType)(otherType)) {
270
+ // TODO: it is not great to do type checking based on interface name
271
+ const lowerOtherName = otherType.name.toLowerCase();
272
+ return lowerOtherName === 'roint' ||
273
+ lowerOtherName === 'rofloat' ||
274
+ lowerOtherName === 'rodouble' ||
275
+ lowerOtherName === 'rolonginteger';
276
+ }
277
+ return false;
278
+ }
279
+ exports.isNativeInterfaceCompatibleNumber = isNativeInterfaceCompatibleNumber;
280
+ function getAllTypesFromCompoundType(complex) {
281
+ const results = [];
282
+ for (const type of complex.types) {
283
+ if ((0, reflection_1.isCompoundType)(type)) {
284
+ results.push(...getAllTypesFromCompoundType(type));
285
+ }
286
+ else {
287
+ results.push(type);
288
+ }
289
+ }
290
+ return results;
291
+ }
292
+ exports.getAllTypesFromCompoundType = getAllTypesFromCompoundType;
293
+ function addAssociatedTypesTableAsSiblingToMemberTable(type, associatedTypesTable, bitFlags) {
294
+ if ((0, reflection_1.isReferenceType)(type) &&
295
+ !type.isResolvable()) {
296
+ // This param or return type is a reference - make sure the associated types are included
297
+ type.tableProvider().addSibling(associatedTypesTable);
298
+ // add this as a sister table to member tables too!
299
+ const memberTable = type.getMemberTable();
300
+ if (memberTable.getAllSymbols) {
301
+ for (const memberSymbol of memberTable.getAllSymbols(bitFlags)) {
302
+ addAssociatedTypesTableAsSiblingToMemberTable(memberSymbol === null || memberSymbol === void 0 ? void 0 : memberSymbol.type, associatedTypesTable, bitFlags);
303
+ }
304
+ }
305
+ }
306
+ }
307
+ exports.addAssociatedTypesTableAsSiblingToMemberTable = addAssociatedTypesTableAsSiblingToMemberTable;
308
+ /**
309
+ * A map of all types created in the program during its lifetime. This applies across all programs, validate runs, etc. Mostly useful for a single run to track types created.
310
+ */
311
+ exports.TypesCreated = {};
312
+ function joinTypesString(types, separator, thisTypeKind) {
313
+ return [...new Set(types.map(t => {
314
+ const typeString = t.toString();
315
+ if (((0, reflection_1.isUnionType)(t) || (0, reflection_1.isIntersectionType)(t)) && t.kind !== thisTypeKind) {
316
+ return `(${typeString})`;
317
+ }
318
+ return t.toString();
319
+ }))].join(` ${separator} `);
320
+ }
321
+ exports.joinTypesString = joinTypesString;
322
+ function isTypeWithPotentialDefaultDynamicMember(type) {
323
+ return ((0, reflection_1.isInheritableType)(type) && type.changeUnknownMemberToDynamic) ||
324
+ (0, reflection_1.isAssociativeArrayTypeLike)(type) ||
325
+ (0, reflection_1.isObjectType)(type) ||
326
+ (0, reflection_1.isUnionTypeOf)(type, isTypeWithPotentialDefaultDynamicMember);
327
+ }
328
+ exports.isTypeWithPotentialDefaultDynamicMember = isTypeWithPotentialDefaultDynamicMember;
329
+ //# sourceMappingURL=helpers.js.map