brighterscript 1.0.0-alpha.23 → 1.0.0-alpha.25

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 (536) hide show
  1. package/CHANGELOG.md +585 -218
  2. package/README.md +45 -139
  3. package/bsconfig.schema.json +41 -0
  4. package/dist/ActionPipeline.d.ts +10 -0
  5. package/dist/ActionPipeline.js +40 -0
  6. package/dist/ActionPipeline.js.map +1 -0
  7. package/dist/AstValidationSegmenter.d.ts +25 -0
  8. package/dist/AstValidationSegmenter.js +152 -0
  9. package/dist/AstValidationSegmenter.js.map +1 -0
  10. package/dist/BsConfig.d.ts +39 -4
  11. package/dist/BusyStatusTracker.d.ts +31 -0
  12. package/dist/BusyStatusTracker.js +83 -0
  13. package/dist/BusyStatusTracker.js.map +1 -0
  14. package/dist/Cache.js +3 -3
  15. package/dist/Cache.js.map +1 -1
  16. package/dist/CacheVerifier.d.ts +7 -0
  17. package/dist/CacheVerifier.js +20 -0
  18. package/dist/CacheVerifier.js.map +1 -0
  19. package/dist/CodeActionUtil.d.ts +3 -3
  20. package/dist/CodeActionUtil.js.map +1 -1
  21. package/dist/CommentFlagProcessor.d.ts +3 -2
  22. package/dist/CommentFlagProcessor.js +5 -4
  23. package/dist/CommentFlagProcessor.js.map +1 -1
  24. package/dist/DependencyGraph.d.ts +3 -2
  25. package/dist/DependencyGraph.js +11 -10
  26. package/dist/DependencyGraph.js.map +1 -1
  27. package/dist/DiagnosticCollection.js +9 -5
  28. package/dist/DiagnosticCollection.js.map +1 -1
  29. package/dist/DiagnosticFilterer.d.ts +1 -0
  30. package/dist/DiagnosticFilterer.js +5 -3
  31. package/dist/DiagnosticFilterer.js.map +1 -1
  32. package/dist/DiagnosticMessages.d.ts +79 -15
  33. package/dist/DiagnosticMessages.js +134 -21
  34. package/dist/DiagnosticMessages.js.map +1 -1
  35. package/dist/DiagnosticSeverityAdjuster.d.ts +7 -0
  36. package/dist/DiagnosticSeverityAdjuster.js +41 -0
  37. package/dist/DiagnosticSeverityAdjuster.js.map +1 -0
  38. package/dist/FunctionScope.d.ts +28 -0
  39. package/dist/FunctionScope.js +52 -0
  40. package/dist/FunctionScope.js.map +1 -0
  41. package/dist/KeyedThrottler.d.ts +3 -3
  42. package/dist/KeyedThrottler.js +3 -3
  43. package/dist/KeyedThrottler.js.map +1 -1
  44. package/dist/LanguageServer.d.ts +23 -11
  45. package/dist/LanguageServer.js +222 -87
  46. package/dist/LanguageServer.js.map +1 -1
  47. package/dist/Logger.d.ts +3 -2
  48. package/dist/Logger.js +11 -3
  49. package/dist/Logger.js.map +1 -1
  50. package/dist/PluginInterface.d.ts +21 -3
  51. package/dist/PluginInterface.js +74 -6
  52. package/dist/PluginInterface.js.map +1 -1
  53. package/dist/Program.d.ts +162 -81
  54. package/dist/Program.js +903 -732
  55. package/dist/Program.js.map +1 -1
  56. package/dist/ProgramBuilder.d.ts +22 -12
  57. package/dist/ProgramBuilder.js +132 -104
  58. package/dist/ProgramBuilder.js.map +1 -1
  59. package/dist/Scope.d.ts +95 -134
  60. package/dist/Scope.js +477 -551
  61. package/dist/Scope.js.map +1 -1
  62. package/dist/Stopwatch.js +1 -1
  63. package/dist/Stopwatch.js.map +1 -1
  64. package/dist/SymbolTable.d.ts +95 -29
  65. package/dist/SymbolTable.js +256 -102
  66. package/dist/SymbolTable.js.map +1 -1
  67. package/dist/Throttler.d.ts +12 -0
  68. package/dist/Throttler.js +39 -0
  69. package/dist/Throttler.js.map +1 -1
  70. package/dist/Watcher.d.ts +0 -3
  71. package/dist/Watcher.js +0 -3
  72. package/dist/Watcher.js.map +1 -1
  73. package/dist/XmlScope.d.ts +4 -6
  74. package/dist/XmlScope.js +74 -68
  75. package/dist/XmlScope.js.map +1 -1
  76. package/dist/astUtils/CachedLookups.d.ts +48 -0
  77. package/dist/astUtils/CachedLookups.js +323 -0
  78. package/dist/astUtils/CachedLookups.js.map +1 -0
  79. package/dist/astUtils/{AstEditor.d.ts → Editor.d.ts} +9 -5
  80. package/dist/astUtils/{AstEditor.js → Editor.js} +10 -4
  81. package/dist/astUtils/Editor.js.map +1 -0
  82. package/dist/astUtils/{AstEditor.spec.js → Editor.spec.js} +68 -64
  83. package/dist/astUtils/Editor.spec.js.map +1 -0
  84. package/dist/astUtils/creators.d.ts +10 -10
  85. package/dist/astUtils/creators.js +26 -16
  86. package/dist/astUtils/creators.js.map +1 -1
  87. package/dist/astUtils/creators.spec.js +5 -5
  88. package/dist/astUtils/creators.spec.js.map +1 -1
  89. package/dist/astUtils/reflection.d.ts +132 -100
  90. package/dist/astUtils/reflection.js +225 -166
  91. package/dist/astUtils/reflection.js.map +1 -1
  92. package/dist/astUtils/reflection.spec.js +208 -126
  93. package/dist/astUtils/reflection.spec.js.map +1 -1
  94. package/dist/astUtils/stackedVisitor.spec.js +12 -12
  95. package/dist/astUtils/stackedVisitor.spec.js.map +1 -1
  96. package/dist/astUtils/visitors.d.ts +54 -35
  97. package/dist/astUtils/visitors.js +29 -3
  98. package/dist/astUtils/visitors.js.map +1 -1
  99. package/dist/astUtils/visitors.spec.js +178 -33
  100. package/dist/astUtils/visitors.spec.js.map +1 -1
  101. package/dist/astUtils/xml.d.ts +9 -9
  102. package/dist/astUtils/xml.js +9 -9
  103. package/dist/astUtils/xml.js.map +1 -1
  104. package/dist/bscPlugin/BscPlugin.d.ts +12 -2
  105. package/dist/bscPlugin/BscPlugin.js +41 -3
  106. package/dist/bscPlugin/BscPlugin.js.map +1 -1
  107. package/dist/bscPlugin/CallExpressionInfo.d.ts +36 -0
  108. package/dist/bscPlugin/CallExpressionInfo.js +131 -0
  109. package/dist/bscPlugin/CallExpressionInfo.js.map +1 -0
  110. package/dist/bscPlugin/FileWriter.d.ts +6 -0
  111. package/dist/bscPlugin/FileWriter.js +24 -0
  112. package/dist/bscPlugin/FileWriter.js.map +1 -0
  113. package/dist/bscPlugin/SignatureHelpUtil.d.ts +10 -0
  114. package/dist/bscPlugin/SignatureHelpUtil.js +135 -0
  115. package/dist/bscPlugin/SignatureHelpUtil.js.map +1 -0
  116. package/dist/bscPlugin/codeActions/CodeActionsProcessor.d.ts +1 -1
  117. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +21 -12
  118. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
  119. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +86 -12
  120. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
  121. package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +57 -0
  122. package/dist/bscPlugin/completions/CompletionsProcessor.js +544 -0
  123. package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -0
  124. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +1909 -0
  125. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +1 -0
  126. package/dist/bscPlugin/fileProviders/FileProvider.d.ts +9 -0
  127. package/dist/bscPlugin/fileProviders/FileProvider.js +51 -0
  128. package/dist/bscPlugin/fileProviders/FileProvider.js.map +1 -0
  129. package/dist/bscPlugin/hover/HoverProcessor.d.ts +17 -0
  130. package/dist/bscPlugin/hover/HoverProcessor.js +188 -0
  131. package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -0
  132. package/dist/bscPlugin/hover/HoverProcessor.spec.js +513 -0
  133. package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -0
  134. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +3 -1
  135. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +102 -29
  136. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
  137. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +167 -6
  138. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -1
  139. package/dist/bscPlugin/serialize/BslibInjector.spec.d.ts +1 -0
  140. package/dist/bscPlugin/serialize/BslibInjector.spec.js +19 -0
  141. package/dist/bscPlugin/serialize/BslibInjector.spec.js.map +1 -0
  142. package/dist/bscPlugin/serialize/BslibManager.d.ts +9 -0
  143. package/dist/bscPlugin/serialize/BslibManager.js +40 -0
  144. package/dist/bscPlugin/serialize/BslibManager.js.map +1 -0
  145. package/dist/bscPlugin/serialize/FileSerializer.d.ts +9 -0
  146. package/dist/bscPlugin/serialize/FileSerializer.js +72 -0
  147. package/dist/bscPlugin/serialize/FileSerializer.js.map +1 -0
  148. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.d.ts +16 -0
  149. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js +123 -0
  150. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +1 -0
  151. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.d.ts +1 -0
  152. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js +41 -0
  153. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js.map +1 -0
  154. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.d.ts +12 -0
  155. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js +99 -0
  156. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js.map +1 -0
  157. package/dist/bscPlugin/validation/BrsFileValidator.d.ts +22 -1
  158. package/dist/bscPlugin/validation/BrsFileValidator.js +316 -29
  159. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
  160. package/dist/bscPlugin/validation/BrsFileValidator.spec.d.ts +1 -0
  161. package/dist/bscPlugin/validation/BrsFileValidator.spec.js +264 -0
  162. package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +1 -0
  163. package/dist/bscPlugin/validation/ProgramValidator.d.ts +10 -0
  164. package/dist/bscPlugin/validation/ProgramValidator.js +32 -0
  165. package/dist/bscPlugin/validation/ProgramValidator.js.map +1 -0
  166. package/dist/bscPlugin/validation/ScopeValidator.d.ts +56 -8
  167. package/dist/bscPlugin/validation/ScopeValidator.js +514 -116
  168. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
  169. package/dist/bscPlugin/validation/ScopeValidator.spec.d.ts +1 -0
  170. package/dist/bscPlugin/validation/ScopeValidator.spec.js +2454 -0
  171. package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -0
  172. package/dist/bscPlugin/validation/XmlFileValidator.d.ts +8 -0
  173. package/dist/bscPlugin/validation/XmlFileValidator.js +44 -0
  174. package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -0
  175. package/dist/cli.js +107 -8
  176. package/dist/cli.js.map +1 -1
  177. package/dist/deferred.d.ts +3 -3
  178. package/dist/deferred.js.map +1 -1
  179. package/dist/diagnosticUtils.d.ts +8 -2
  180. package/dist/diagnosticUtils.js +47 -17
  181. package/dist/diagnosticUtils.js.map +1 -1
  182. package/dist/examples/plugins/removePrint.js +8 -10
  183. package/dist/examples/plugins/removePrint.js.map +1 -1
  184. package/dist/files/AssetFile.d.ts +26 -0
  185. package/dist/files/AssetFile.js +26 -0
  186. package/dist/files/AssetFile.js.map +1 -0
  187. package/dist/files/BrsFile.Class.spec.js +529 -486
  188. package/dist/files/BrsFile.Class.spec.js.map +1 -1
  189. package/dist/files/BrsFile.d.ts +124 -112
  190. package/dist/files/BrsFile.js +819 -1131
  191. package/dist/files/BrsFile.js.map +1 -1
  192. package/dist/files/BrsFile.spec.js +1869 -1277
  193. package/dist/files/BrsFile.spec.js.map +1 -1
  194. package/dist/files/BscFile.d.ts +104 -0
  195. package/dist/files/BscFile.js +16 -0
  196. package/dist/files/BscFile.js.map +1 -0
  197. package/dist/files/Factory.d.ts +25 -0
  198. package/dist/files/Factory.js +22 -0
  199. package/dist/files/Factory.js.map +1 -0
  200. package/dist/files/LazyFileData.d.ts +20 -0
  201. package/dist/files/LazyFileData.js +54 -0
  202. package/dist/files/LazyFileData.js.map +1 -0
  203. package/dist/files/LazyFileData.spec.d.ts +1 -0
  204. package/dist/files/LazyFileData.spec.js +27 -0
  205. package/dist/files/LazyFileData.spec.js.map +1 -0
  206. package/dist/files/XmlFile.d.ts +70 -32
  207. package/dist/files/XmlFile.js +106 -117
  208. package/dist/files/XmlFile.js.map +1 -1
  209. package/dist/files/XmlFile.spec.js +325 -262
  210. package/dist/files/XmlFile.spec.js.map +1 -1
  211. package/dist/files/tests/imports.spec.js +49 -41
  212. package/dist/files/tests/imports.spec.js.map +1 -1
  213. package/dist/files/tests/optionalChaning.spec.js +104 -40
  214. package/dist/files/tests/optionalChaning.spec.js.map +1 -1
  215. package/dist/globalCallables.js +16 -18
  216. package/dist/globalCallables.js.map +1 -1
  217. package/dist/index.d.ts +13 -2
  218. package/dist/index.js +15 -2
  219. package/dist/index.js.map +1 -1
  220. package/dist/interfaces.d.ts +440 -150
  221. package/dist/interfaces.js +27 -0
  222. package/dist/interfaces.js.map +1 -1
  223. package/dist/lexer/Character.spec.js +5 -5
  224. package/dist/lexer/Character.spec.js.map +1 -1
  225. package/dist/lexer/Lexer.d.ts +12 -5
  226. package/dist/lexer/Lexer.js +28 -13
  227. package/dist/lexer/Lexer.js.map +1 -1
  228. package/dist/lexer/Lexer.spec.js +187 -134
  229. package/dist/lexer/Lexer.spec.js.map +1 -1
  230. package/dist/lexer/Token.d.ts +9 -1
  231. package/dist/lexer/Token.js +9 -1
  232. package/dist/lexer/Token.js.map +1 -1
  233. package/dist/lexer/TokenKind.d.ts +9 -0
  234. package/dist/lexer/TokenKind.js +30 -5
  235. package/dist/lexer/TokenKind.js.map +1 -1
  236. package/dist/parser/AstNode.d.ts +162 -0
  237. package/dist/parser/AstNode.js +225 -0
  238. package/dist/parser/AstNode.js.map +1 -0
  239. package/dist/parser/AstNode.spec.d.ts +1 -0
  240. package/dist/parser/AstNode.spec.js +165 -0
  241. package/dist/parser/AstNode.spec.js.map +1 -0
  242. package/dist/parser/BrsTranspileState.d.ts +4 -7
  243. package/dist/parser/BrsTranspileState.js +4 -12
  244. package/dist/parser/BrsTranspileState.js.map +1 -1
  245. package/dist/parser/Expression.d.ts +126 -167
  246. package/dist/parser/Expression.js +524 -394
  247. package/dist/parser/Expression.js.map +1 -1
  248. package/dist/parser/Parser.Class.spec.js +152 -146
  249. package/dist/parser/Parser.Class.spec.js.map +1 -1
  250. package/dist/parser/Parser.d.ts +45 -196
  251. package/dist/parser/Parser.js +470 -926
  252. package/dist/parser/Parser.js.map +1 -1
  253. package/dist/parser/Parser.spec.d.ts +3 -1
  254. package/dist/parser/Parser.spec.js +1034 -805
  255. package/dist/parser/Parser.spec.js.map +1 -1
  256. package/dist/parser/SGParser.d.ts +9 -8
  257. package/dist/parser/SGParser.js +10 -8
  258. package/dist/parser/SGParser.js.map +1 -1
  259. package/dist/parser/SGParser.spec.js +27 -38
  260. package/dist/parser/SGParser.spec.js.map +1 -1
  261. package/dist/parser/SGTypes.d.ts +98 -35
  262. package/dist/parser/SGTypes.js +169 -99
  263. package/dist/parser/SGTypes.js.map +1 -1
  264. package/dist/parser/Statement.d.ts +208 -122
  265. package/dist/parser/Statement.js +599 -364
  266. package/dist/parser/Statement.js.map +1 -1
  267. package/dist/parser/Statement.spec.js +45 -21
  268. package/dist/parser/Statement.spec.js.map +1 -1
  269. package/dist/parser/TranspileState.d.ts +1 -1
  270. package/dist/parser/TranspileState.js +7 -12
  271. package/dist/parser/TranspileState.js.map +1 -1
  272. package/dist/parser/tests/Parser.spec.js +3 -2
  273. package/dist/parser/tests/Parser.spec.js.map +1 -1
  274. package/dist/parser/tests/controlFlow/For.spec.js +33 -23
  275. package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
  276. package/dist/parser/tests/controlFlow/ForEach.spec.js +25 -20
  277. package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
  278. package/dist/parser/tests/controlFlow/If.spec.js +96 -94
  279. package/dist/parser/tests/controlFlow/If.spec.js.map +1 -1
  280. package/dist/parser/tests/controlFlow/While.spec.js +22 -16
  281. package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
  282. package/dist/parser/tests/expression/Additive.spec.js +8 -8
  283. package/dist/parser/tests/expression/Additive.spec.js.map +1 -1
  284. package/dist/parser/tests/expression/ArrayLiterals.spec.js +58 -21
  285. package/dist/parser/tests/expression/ArrayLiterals.spec.js.map +1 -1
  286. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +61 -20
  287. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +1 -1
  288. package/dist/parser/tests/expression/Boolean.spec.js +8 -8
  289. package/dist/parser/tests/expression/Boolean.spec.js.map +1 -1
  290. package/dist/parser/tests/expression/Call.spec.js +129 -21
  291. package/dist/parser/tests/expression/Call.spec.js.map +1 -1
  292. package/dist/parser/tests/expression/Exponential.spec.js +5 -5
  293. package/dist/parser/tests/expression/Exponential.spec.js.map +1 -1
  294. package/dist/parser/tests/expression/Function.spec.js +36 -36
  295. package/dist/parser/tests/expression/Function.spec.js.map +1 -1
  296. package/dist/parser/tests/expression/Indexing.spec.js +67 -22
  297. package/dist/parser/tests/expression/Indexing.spec.js.map +1 -1
  298. package/dist/parser/tests/expression/Multiplicative.spec.js +9 -9
  299. package/dist/parser/tests/expression/Multiplicative.spec.js.map +1 -1
  300. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +123 -81
  301. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
  302. package/dist/parser/tests/expression/PrefixUnary.spec.js +12 -12
  303. package/dist/parser/tests/expression/PrefixUnary.spec.js.map +1 -1
  304. package/dist/parser/tests/expression/Primary.spec.js +12 -12
  305. package/dist/parser/tests/expression/Primary.spec.js.map +1 -1
  306. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js +10 -10
  307. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js.map +1 -1
  308. package/dist/parser/tests/expression/Relational.spec.js +13 -13
  309. package/dist/parser/tests/expression/Relational.spec.js.map +1 -1
  310. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js +24 -24
  311. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js.map +1 -1
  312. package/dist/parser/tests/expression/TemplateStringExpression.spec.js +221 -81
  313. package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
  314. package/dist/parser/tests/expression/TernaryExpression.spec.js +287 -105
  315. package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
  316. package/dist/parser/tests/expression/TypeExpression.spec.d.ts +1 -0
  317. package/dist/parser/tests/expression/TypeExpression.spec.js +127 -0
  318. package/dist/parser/tests/expression/TypeExpression.spec.js.map +1 -0
  319. package/dist/parser/tests/expression/UnaryExpression.spec.d.ts +1 -0
  320. package/dist/parser/tests/expression/UnaryExpression.spec.js +52 -0
  321. package/dist/parser/tests/expression/UnaryExpression.spec.js.map +1 -0
  322. package/dist/parser/tests/statement/AssignmentOperators.spec.js +15 -15
  323. package/dist/parser/tests/statement/AssignmentOperators.spec.js.map +1 -1
  324. package/dist/parser/tests/statement/ConstStatement.spec.d.ts +1 -0
  325. package/dist/parser/tests/statement/ConstStatement.spec.js +262 -0
  326. package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -0
  327. package/dist/parser/tests/statement/Continue.spec.d.ts +1 -0
  328. package/dist/parser/tests/statement/Continue.spec.js +119 -0
  329. package/dist/parser/tests/statement/Continue.spec.js.map +1 -0
  330. package/dist/parser/tests/statement/Declaration.spec.js +19 -19
  331. package/dist/parser/tests/statement/Declaration.spec.js.map +1 -1
  332. package/dist/parser/tests/statement/Dim.spec.js +22 -22
  333. package/dist/parser/tests/statement/Dim.spec.js.map +1 -1
  334. package/dist/parser/tests/statement/Enum.spec.js +111 -300
  335. package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
  336. package/dist/parser/tests/statement/For.spec.js +9 -10
  337. package/dist/parser/tests/statement/For.spec.js.map +1 -1
  338. package/dist/parser/tests/statement/ForEach.spec.js +8 -9
  339. package/dist/parser/tests/statement/ForEach.spec.js.map +1 -1
  340. package/dist/parser/tests/statement/Function.spec.js +44 -35
  341. package/dist/parser/tests/statement/Function.spec.js.map +1 -1
  342. package/dist/parser/tests/statement/Goto.spec.js +5 -5
  343. package/dist/parser/tests/statement/Goto.spec.js.map +1 -1
  344. package/dist/parser/tests/statement/Increment.spec.js +20 -20
  345. package/dist/parser/tests/statement/Increment.spec.js.map +1 -1
  346. package/dist/parser/tests/statement/InterfaceStatement.spec.js +30 -196
  347. package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
  348. package/dist/parser/tests/statement/LibraryStatement.spec.js +11 -11
  349. package/dist/parser/tests/statement/LibraryStatement.spec.js.map +1 -1
  350. package/dist/parser/tests/statement/Misc.spec.js +16 -78
  351. package/dist/parser/tests/statement/Misc.spec.js.map +1 -1
  352. package/dist/parser/tests/statement/PrintStatement.spec.js +107 -90
  353. package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
  354. package/dist/parser/tests/statement/ReturnStatement.spec.js +14 -12
  355. package/dist/parser/tests/statement/ReturnStatement.spec.js.map +1 -1
  356. package/dist/parser/tests/statement/Set.spec.js +48 -35
  357. package/dist/parser/tests/statement/Set.spec.js.map +1 -1
  358. package/dist/parser/tests/statement/Stop.spec.js +6 -6
  359. package/dist/parser/tests/statement/Stop.spec.js.map +1 -1
  360. package/dist/parser/tests/statement/Throw.spec.js +6 -6
  361. package/dist/parser/tests/statement/Throw.spec.js.map +1 -1
  362. package/dist/parser/tests/statement/TryCatch.spec.js +18 -16
  363. package/dist/parser/tests/statement/TryCatch.spec.js.map +1 -1
  364. package/dist/preprocessor/Manifest.d.ts +1 -1
  365. package/dist/preprocessor/Manifest.js +3 -3
  366. package/dist/preprocessor/Manifest.js.map +1 -1
  367. package/dist/preprocessor/Manifest.spec.js +8 -8
  368. package/dist/preprocessor/Manifest.spec.js.map +1 -1
  369. package/dist/preprocessor/Preprocessor.d.ts +5 -6
  370. package/dist/preprocessor/Preprocessor.js +15 -11
  371. package/dist/preprocessor/Preprocessor.js.map +1 -1
  372. package/dist/preprocessor/Preprocessor.spec.js +25 -25
  373. package/dist/preprocessor/Preprocessor.spec.js.map +1 -1
  374. package/dist/preprocessor/PreprocessorParser.d.ts +1 -1
  375. package/dist/preprocessor/PreprocessorParser.js +7 -1
  376. package/dist/preprocessor/PreprocessorParser.js.map +1 -1
  377. package/dist/preprocessor/PreprocessorParser.spec.js +13 -13
  378. package/dist/preprocessor/PreprocessorParser.spec.js.map +1 -1
  379. package/dist/roku-types/data.json +6544 -10519
  380. package/dist/roku-types/index.d.ts +662 -1934
  381. package/dist/types/ArrayType.d.ts +10 -9
  382. package/dist/types/ArrayType.js +65 -60
  383. package/dist/types/ArrayType.js.map +1 -1
  384. package/dist/types/ArrayType.spec.js +36 -68
  385. package/dist/types/ArrayType.spec.js.map +1 -1
  386. package/dist/types/AssociativeArrayType.d.ts +11 -0
  387. package/dist/types/AssociativeArrayType.js +52 -0
  388. package/dist/types/AssociativeArrayType.js.map +1 -0
  389. package/dist/types/BaseFunctionType.d.ts +9 -0
  390. package/dist/types/BaseFunctionType.js +25 -0
  391. package/dist/types/BaseFunctionType.js.map +1 -0
  392. package/dist/types/BooleanType.d.ts +8 -5
  393. package/dist/types/BooleanType.js +14 -7
  394. package/dist/types/BooleanType.js.map +1 -1
  395. package/dist/types/BooleanType.spec.js +10 -6
  396. package/dist/types/BooleanType.spec.js.map +1 -1
  397. package/dist/types/BscType.d.ts +32 -21
  398. package/dist/types/BscType.js +118 -21
  399. package/dist/types/BscType.js.map +1 -1
  400. package/dist/types/BscTypeKind.d.ts +25 -0
  401. package/dist/types/BscTypeKind.js +30 -0
  402. package/dist/types/BscTypeKind.js.map +1 -0
  403. package/dist/types/BuiltInInterfaceAdder.d.ts +23 -0
  404. package/dist/types/BuiltInInterfaceAdder.js +164 -0
  405. package/dist/types/BuiltInInterfaceAdder.js.map +1 -0
  406. package/dist/types/BuiltInInterfaceAdder.spec.d.ts +1 -0
  407. package/dist/types/BuiltInInterfaceAdder.spec.js +116 -0
  408. package/dist/types/BuiltInInterfaceAdder.spec.js.map +1 -0
  409. package/dist/types/ClassType.d.ts +17 -0
  410. package/dist/types/ClassType.js +58 -0
  411. package/dist/types/ClassType.js.map +1 -0
  412. package/dist/types/ClassType.spec.d.ts +1 -0
  413. package/dist/types/ClassType.spec.js +77 -0
  414. package/dist/types/ClassType.spec.js.map +1 -0
  415. package/dist/types/ComponentType.d.ts +26 -0
  416. package/dist/types/ComponentType.js +83 -0
  417. package/dist/types/ComponentType.js.map +1 -0
  418. package/dist/types/DoubleType.d.ts +8 -5
  419. package/dist/types/DoubleType.js +18 -16
  420. package/dist/types/DoubleType.js.map +1 -1
  421. package/dist/types/DoubleType.spec.js +12 -6
  422. package/dist/types/DoubleType.spec.js.map +1 -1
  423. package/dist/types/DynamicType.d.ts +10 -5
  424. package/dist/types/DynamicType.js +16 -4
  425. package/dist/types/DynamicType.js.map +1 -1
  426. package/dist/types/DynamicType.spec.js +16 -5
  427. package/dist/types/DynamicType.spec.js.map +1 -1
  428. package/dist/types/EnumType.d.ts +30 -12
  429. package/dist/types/EnumType.js +43 -17
  430. package/dist/types/EnumType.js.map +1 -1
  431. package/dist/types/EnumType.spec.d.ts +1 -0
  432. package/dist/types/EnumType.spec.js +33 -0
  433. package/dist/types/EnumType.spec.js.map +1 -0
  434. package/dist/types/FloatType.d.ts +8 -5
  435. package/dist/types/FloatType.js +18 -16
  436. package/dist/types/FloatType.js.map +1 -1
  437. package/dist/types/FloatType.spec.js +4 -6
  438. package/dist/types/FloatType.spec.js.map +1 -1
  439. package/dist/types/FunctionType.d.ts +13 -8
  440. package/dist/types/FunctionType.js +30 -14
  441. package/dist/types/FunctionType.js.map +1 -1
  442. package/dist/types/InheritableType.d.ts +28 -0
  443. package/dist/types/InheritableType.js +152 -0
  444. package/dist/types/InheritableType.js.map +1 -0
  445. package/dist/types/IntegerType.d.ts +8 -5
  446. package/dist/types/IntegerType.js +18 -16
  447. package/dist/types/IntegerType.js.map +1 -1
  448. package/dist/types/IntegerType.spec.js +8 -6
  449. package/dist/types/IntegerType.spec.js.map +1 -1
  450. package/dist/types/InterfaceType.d.ts +12 -13
  451. package/dist/types/InterfaceType.js +20 -48
  452. package/dist/types/InterfaceType.js.map +1 -1
  453. package/dist/types/InterfaceType.spec.js +90 -56
  454. package/dist/types/InterfaceType.spec.js.map +1 -1
  455. package/dist/types/InvalidType.d.ts +7 -5
  456. package/dist/types/InvalidType.js +13 -7
  457. package/dist/types/InvalidType.js.map +1 -1
  458. package/dist/types/InvalidType.spec.js +8 -6
  459. package/dist/types/InvalidType.spec.js.map +1 -1
  460. package/dist/types/LongIntegerType.d.ts +8 -5
  461. package/dist/types/LongIntegerType.js +17 -15
  462. package/dist/types/LongIntegerType.js.map +1 -1
  463. package/dist/types/LongIntegerType.spec.js +10 -6
  464. package/dist/types/LongIntegerType.spec.js.map +1 -1
  465. package/dist/types/NamespaceType.d.ts +12 -0
  466. package/dist/types/NamespaceType.js +28 -0
  467. package/dist/types/NamespaceType.js.map +1 -0
  468. package/dist/types/ObjectType.d.ts +9 -8
  469. package/dist/types/ObjectType.js +21 -11
  470. package/dist/types/ObjectType.js.map +1 -1
  471. package/dist/types/ObjectType.spec.js +3 -3
  472. package/dist/types/ObjectType.spec.js.map +1 -1
  473. package/dist/types/ReferenceType.d.ts +63 -0
  474. package/dist/types/ReferenceType.js +423 -0
  475. package/dist/types/ReferenceType.js.map +1 -0
  476. package/dist/types/ReferenceType.spec.d.ts +1 -0
  477. package/dist/types/ReferenceType.spec.js +137 -0
  478. package/dist/types/ReferenceType.spec.js.map +1 -0
  479. package/dist/types/StringType.d.ts +11 -5
  480. package/dist/types/StringType.js +18 -7
  481. package/dist/types/StringType.js.map +1 -1
  482. package/dist/types/StringType.spec.js +3 -5
  483. package/dist/types/StringType.spec.js.map +1 -1
  484. package/dist/types/TypedFunctionType.d.ts +22 -17
  485. package/dist/types/TypedFunctionType.js +78 -60
  486. package/dist/types/TypedFunctionType.js.map +1 -1
  487. package/dist/types/TypedFunctionType.spec.js +105 -20
  488. package/dist/types/TypedFunctionType.spec.js.map +1 -1
  489. package/dist/types/UninitializedType.d.ts +8 -6
  490. package/dist/types/UninitializedType.js +13 -7
  491. package/dist/types/UninitializedType.js.map +1 -1
  492. package/dist/types/UnionType.d.ts +20 -0
  493. package/dist/types/UnionType.js +123 -0
  494. package/dist/types/UnionType.js.map +1 -0
  495. package/dist/types/UnionType.spec.d.ts +1 -0
  496. package/dist/types/UnionType.spec.js +130 -0
  497. package/dist/types/UnionType.spec.js.map +1 -0
  498. package/dist/types/VoidType.d.ts +8 -5
  499. package/dist/types/VoidType.js +14 -7
  500. package/dist/types/VoidType.js.map +1 -1
  501. package/dist/types/VoidType.spec.js +3 -3
  502. package/dist/types/VoidType.spec.js.map +1 -1
  503. package/dist/types/helper.spec.d.ts +1 -0
  504. package/dist/types/helper.spec.js +145 -0
  505. package/dist/types/helper.spec.js.map +1 -0
  506. package/dist/types/helpers.d.ts +19 -37
  507. package/dist/types/helpers.js +159 -99
  508. package/dist/types/helpers.js.map +1 -1
  509. package/dist/types/index.d.ts +22 -0
  510. package/dist/types/index.js +39 -0
  511. package/dist/types/index.js.map +1 -0
  512. package/dist/util.d.ts +167 -131
  513. package/dist/util.js +890 -350
  514. package/dist/util.js.map +1 -1
  515. package/dist/validators/ClassValidator.d.ts +7 -25
  516. package/dist/validators/ClassValidator.js +103 -194
  517. package/dist/validators/ClassValidator.js.map +1 -1
  518. package/package.json +165 -149
  519. package/dist/astUtils/AstEditor.js.map +0 -1
  520. package/dist/astUtils/AstEditor.spec.js.map +0 -1
  521. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.d.ts +0 -8
  522. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js +0 -40
  523. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +0 -1
  524. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js +0 -32
  525. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js.map +0 -1
  526. package/dist/parser/SGTypes.spec.js +0 -351
  527. package/dist/parser/SGTypes.spec.js.map +0 -1
  528. package/dist/types/CustomType.d.ts +0 -12
  529. package/dist/types/CustomType.js +0 -44
  530. package/dist/types/CustomType.js.map +0 -1
  531. package/dist/types/LazyType.d.ts +0 -16
  532. package/dist/types/LazyType.js +0 -44
  533. package/dist/types/LazyType.js.map +0 -1
  534. /package/dist/astUtils/{AstEditor.spec.d.ts → Editor.spec.d.ts} +0 -0
  535. /package/dist/bscPlugin/{transpile/BrsFilePreTranspileProcessor.spec.d.ts → completions/CompletionsProcessor.spec.d.ts} +0 -0
  536. /package/dist/{parser/SGTypes.spec.d.ts → bscPlugin/hover/HoverProcessor.spec.d.ts} +0 -0
@@ -1,172 +1,326 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SymbolTable = void 0;
4
- const BscType_1 = require("./types/BscType");
5
- const DynamicType_1 = require("./types/DynamicType");
3
+ exports.SymbolTable = exports.SymbolTypeFlag = void 0;
4
+ const CacheVerifier_1 = require("./CacheVerifier");
5
+ const helpers_1 = require("./types/helpers");
6
+ const reflection_1 = require("./astUtils/reflection");
7
+ var SymbolTypeFlag;
8
+ (function (SymbolTypeFlag) {
9
+ SymbolTypeFlag[SymbolTypeFlag["runtime"] = 1] = "runtime";
10
+ SymbolTypeFlag[SymbolTypeFlag["typetime"] = 2] = "typetime";
11
+ SymbolTypeFlag[SymbolTypeFlag["optional"] = 4] = "optional";
12
+ SymbolTypeFlag[SymbolTypeFlag["private"] = 8] = "private";
13
+ SymbolTypeFlag[SymbolTypeFlag["protected"] = 16] = "protected";
14
+ SymbolTypeFlag[SymbolTypeFlag["postTranspile"] = 32] = "postTranspile";
15
+ })(SymbolTypeFlag = exports.SymbolTypeFlag || (exports.SymbolTypeFlag = {}));
6
16
  /**
7
17
  * Stores the types associated with variables and functions in the Brighterscript code
8
18
  * Can be part of a hierarchy, so lookups can reference parent scopes
9
19
  */
10
20
  class SymbolTable {
11
- constructor(parent) {
12
- this.parent = parent;
21
+ constructor(name, parentProvider) {
22
+ this.name = name;
13
23
  /**
14
24
  * The map of symbols declared directly in this SymbolTable (excludes parent SymbolTable).
15
25
  * Indexed by lower symbol name
16
26
  */
17
27
  this.symbolMap = new Map();
28
+ this.parentProviders = [];
29
+ this.siblings = new Set();
30
+ this.resetTypeCache();
31
+ if (parentProvider) {
32
+ this.pushParentProvider(parentProvider);
33
+ }
18
34
  }
19
35
  /**
20
- * Get list of symbols declared directly in this SymbolTable (excludes parent SymbolTable).
36
+ * Push a function that will provide a parent SymbolTable when requested
21
37
  */
22
- getOwnSymbols() {
23
- return [].concat(...this.symbolMap.values());
38
+ pushParentProvider(provider) {
39
+ this.parentProviders.push(provider);
40
+ return () => {
41
+ this.popParentProvider();
42
+ };
24
43
  }
25
44
  /**
26
- * Get list of all symbols declared in this SymbolTable (includes parent SymbolTable).
45
+ * Pop the current parentProvider
27
46
  */
28
- getAllSymbols() {
29
- let symbols = this.getOwnSymbols();
30
- if (this.parent) {
31
- symbols = symbols.concat(this.parent.getAllSymbols());
32
- }
33
- return symbols;
47
+ popParentProvider() {
48
+ this.parentProviders.pop();
34
49
  }
35
50
  /**
36
- * Sets the parent table for lookups
37
- *
38
- * @param [parent]
51
+ * The parent SymbolTable (if there is one)
52
+ */
53
+ get parent() {
54
+ var _a, _b;
55
+ return (_b = (_a = this.parentProviders)[this.parentProviders.length - 1]) === null || _b === void 0 ? void 0 : _b.call(_a);
56
+ }
57
+ /**
58
+ * Add a sibling symbol table (which will be inspected first before walking upward to the parent
39
59
  */
40
- setParent(parent) {
41
- this.parent = parent;
60
+ addSibling(sibling) {
61
+ this.siblings.add(sibling);
62
+ return () => {
63
+ this.siblings.delete(sibling);
64
+ };
65
+ }
66
+ /**
67
+ * Remove a sibling symbol table
68
+ */
69
+ removeSibling(sibling) {
70
+ this.siblings.delete(sibling);
71
+ }
72
+ clearSymbols() {
73
+ this.symbolMap.clear();
42
74
  }
43
75
  /**
44
76
  * Checks if the symbol table contains the given symbol by name
45
77
  * If the identifier is not in this table, it will check the parent
46
78
  *
47
79
  * @param name the name to lookup
48
- * @param searchParent should we look to our parent if we don't have the symbol?
80
+ * @param bitFlags flags to match (See SymbolTypeFlags)
49
81
  * @returns true if this symbol is in the symbol table
50
82
  */
51
- hasSymbol(name, searchParent = true) {
52
- var _a;
53
- const key = name.toLowerCase();
54
- let result = this.symbolMap.has(key);
55
- if (!result && searchParent) {
56
- result = !!((_a = this.parent) === null || _a === void 0 ? void 0 : _a.hasSymbol(key));
57
- }
58
- return result;
83
+ hasSymbol(name, bitFlags) {
84
+ let currentTable = this;
85
+ const key = name === null || name === void 0 ? void 0 : name.toLowerCase();
86
+ let result;
87
+ do {
88
+ // look in our map first
89
+ if ((result = currentTable.symbolMap.get(key))) {
90
+ // eslint-disable-next-line no-bitwise
91
+ if (result.find(symbol => symbol.flags & bitFlags)) {
92
+ return true;
93
+ }
94
+ }
95
+ //look through any sibling maps next
96
+ for (let sibling of currentTable.siblings) {
97
+ if ((result = sibling.symbolMap.get(key))) {
98
+ // eslint-disable-next-line no-bitwise
99
+ if (result.find(symbol => symbol.flags & bitFlags)) {
100
+ return true;
101
+ }
102
+ }
103
+ }
104
+ currentTable = currentTable.parent;
105
+ } while (currentTable);
106
+ return false;
59
107
  }
60
108
  /**
61
109
  * Gets the name/type pair for a given named variable or function name
62
110
  * If the identifier is not in this table, it will check the parent
63
111
  *
64
112
  * @param name the name to lookup
65
- * @param searchParent should we look to our parent if we don't have the symbol?
113
+ * @param bitFlags flags to match
66
114
  * @returns An array of BscSymbols - one for each time this symbol had a type implicitly defined
67
115
  */
68
- getSymbol(name, searchParent = true) {
69
- var _a;
70
- const key = name.toLowerCase();
71
- let result = this.symbolMap.get(key);
72
- if (!result && searchParent) {
73
- result = (_a = this.parent) === null || _a === void 0 ? void 0 : _a.getSymbol(key);
74
- }
75
- return result;
116
+ getSymbol(name, bitFlags) {
117
+ let currentTable = this;
118
+ const key = name === null || name === void 0 ? void 0 : name.toLowerCase();
119
+ let result;
120
+ let memberOfAncestor = false;
121
+ const addAncestorInfo = (symbol) => (Object.assign(Object.assign({}, symbol), { data: Object.assign(Object.assign({}, symbol.data), { memberOfAncestor: memberOfAncestor }) }));
122
+ do {
123
+ // look in our map first
124
+ if ((result = currentTable.symbolMap.get(key))) {
125
+ // eslint-disable-next-line no-bitwise
126
+ result = result.filter(symbol => symbol.flags & bitFlags);
127
+ if (result.length > 0) {
128
+ return result.map(addAncestorInfo);
129
+ }
130
+ }
131
+ //look through any sibling maps next
132
+ for (let sibling of currentTable.siblings) {
133
+ result = sibling.getSymbol(key, bitFlags);
134
+ if ((result === null || result === void 0 ? void 0 : result.length) > 0) {
135
+ return result.map(addAncestorInfo);
136
+ }
137
+ }
138
+ currentTable = currentTable.parent;
139
+ memberOfAncestor = true;
140
+ } while (currentTable);
76
141
  }
77
142
  /**
78
143
  * Adds a new symbol to the table
79
- * @param name
80
- * @param type
81
144
  */
82
- addSymbol(name, range, type) {
145
+ addSymbol(name, data, type, bitFlags) {
146
+ var _a;
83
147
  const key = name.toLowerCase();
84
148
  if (!this.symbolMap.has(key)) {
85
149
  this.symbolMap.set(key, []);
86
150
  }
87
- this.symbolMap.get(key).push({
151
+ (_a = this.symbolMap.get(key)) === null || _a === void 0 ? void 0 : _a.push({
88
152
  name: name,
89
- range: range,
90
- type: type
153
+ data: data,
154
+ type: type,
155
+ flags: bitFlags
91
156
  });
92
157
  }
93
158
  /**
94
- * Gets the type for a symbol
95
- * @param name the name of the symbol to get the type for
96
- * @param searchParent should we look to our parent if we don't have the symbol?
97
- * @param context the context for where this type was referenced - used ONLY for lazy types
98
- * @returns The type, if found. If the type has ever changed, return DynamicType. If not found, returns UninitializedType
159
+ * Removes a new symbol from the table
99
160
  */
100
- getSymbolType(name, searchParent = true, context) {
101
- var _a, _b, _c;
161
+ removeSymbol(name) {
102
162
  const key = name.toLowerCase();
103
- const symbols = this.symbolMap.get(key);
104
- if ((symbols === null || symbols === void 0 ? void 0 : symbols.length) > 1) {
105
- //Check if each time it was set, it was set to the same type
106
- // TODO TYPES handle union types
107
- let sameInferredType = true;
108
- let inferredType;
109
- for (const symbol of symbols) {
110
- if (((context === null || context === void 0 ? void 0 : context.position) && isPositionBefore((_a = symbol.range) === null || _a === void 0 ? void 0 : _a.end, context.position)) || !(context === null || context === void 0 ? void 0 : context.position)) {
111
- // if we're looking at context with a position, only look at types that were set before
112
- const existingType = (0, BscType_1.getTypeFromContext)(symbol.type, context);
113
- // if the type is not known yet, imply that the first assignment is the type
114
- inferredType = inferredType !== null && inferredType !== void 0 ? inferredType : existingType;
115
- // TODO TYPES ... maybe this should look as 'convertibility' to infer a type
116
- // EG.:
117
- // value = 1
118
- // value = 3.4
119
- // print value ' hover here would say "dynamic", but it's been treated like a float
120
- //
121
- // This also impacts Enums, for example, as literal members are different types than a value that is generically a value of the type of the Enum:
122
- //
123
- // function getDataType(defaultValue as DataEnum) as DataEnum
124
- // returnVal = defaultValue
125
- // if someCondition
126
- // returnVal = DataEnum.Other
127
- // end if
128
- // return returnVal ' hover here would say dynamic, but returnVal was always some kind of "DataEnum"
129
- // end function
130
- sameInferredType = (inferredType === null || inferredType === void 0 ? void 0 : inferredType.equals(existingType, context));
131
- }
132
- if (!sameInferredType) {
133
- break;
134
- }
135
- }
136
- return sameInferredType ? inferredType : new DynamicType_1.DynamicType();
163
+ if (!this.symbolMap.has(key)) {
164
+ this.symbolMap.set(key, []);
137
165
  }
138
- else if ((symbols === null || symbols === void 0 ? void 0 : symbols.length) === 1) {
139
- return (0, BscType_1.getTypeFromContext)(symbols[0].type, context);
166
+ this.symbolMap.delete(key);
167
+ }
168
+ getSymbolTypes(name, options) {
169
+ const symbolArray = this.getSymbol(name, options.flags);
170
+ if (!symbolArray) {
171
+ return undefined;
140
172
  }
141
- if (searchParent) {
142
- const parentContext = context ? { file: context === null || context === void 0 ? void 0 : context.file, scope: context === null || context === void 0 ? void 0 : context.scope } : undefined;
143
- return (_c = (_b = this.parent) === null || _b === void 0 ? void 0 : _b.getSymbolType(name, true, parentContext)) !== null && _c !== void 0 ? _c : undefined;
173
+ return symbolArray === null || symbolArray === void 0 ? void 0 : symbolArray.map(symbol => ({ type: symbol.type, data: symbol.data, flags: symbol.flags }));
174
+ }
175
+ getSymbolType(name, options) {
176
+ var _a, _b;
177
+ const cacheEntry = options.ignoreCacheForRetrieval ? undefined : this.getCachedType(name, options);
178
+ let resolvedType = cacheEntry === null || cacheEntry === void 0 ? void 0 : cacheEntry.type;
179
+ let doSetCache = !resolvedType;
180
+ const originalIsReferenceType = (0, reflection_1.isAnyReferenceType)(resolvedType);
181
+ let data = (cacheEntry === null || cacheEntry === void 0 ? void 0 : cacheEntry.data) || {};
182
+ let foundFlags = cacheEntry === null || cacheEntry === void 0 ? void 0 : cacheEntry.flags;
183
+ if (!resolvedType || originalIsReferenceType) {
184
+ const symbolTypes = this.getSymbolTypes(name, options);
185
+ data = (_a = symbolTypes === null || symbolTypes === void 0 ? void 0 : symbolTypes[0]) === null || _a === void 0 ? void 0 : _a.data;
186
+ foundFlags = symbolTypes === null || symbolTypes === void 0 ? void 0 : symbolTypes[0].flags;
187
+ resolvedType = (0, helpers_1.getUniqueType)(symbolTypes === null || symbolTypes === void 0 ? void 0 : symbolTypes.map(symbol => symbol.type), SymbolTable.unionTypeFactory);
144
188
  }
145
- else {
146
- return undefined;
189
+ if (!resolvedType && options.fullName && options.tableProvider) {
190
+ resolvedType = SymbolTable.referenceTypeFactory(name, options.fullName, options.flags, options.tableProvider);
191
+ }
192
+ const resolvedTypeIsReference = (0, reflection_1.isAnyReferenceType)(resolvedType);
193
+ const newNonReferenceType = originalIsReferenceType && !(0, reflection_1.isAnyReferenceType)(resolvedType);
194
+ doSetCache = doSetCache && (options.onlyCacheResolvedTypes ? !resolvedTypeIsReference : true);
195
+ if (doSetCache || newNonReferenceType) {
196
+ this.setCachedType(name, { type: resolvedType, data: data, flags: foundFlags }, options);
197
+ }
198
+ (_b = options.data) !== null && _b !== void 0 ? _b : (options.data = {});
199
+ if (options.data) {
200
+ options.data.definingNode = data === null || data === void 0 ? void 0 : data.definingNode;
201
+ options.data.description = data === null || data === void 0 ? void 0 : data.description;
202
+ options.data.flags = foundFlags !== null && foundFlags !== void 0 ? foundFlags : options.flags;
203
+ options.data.memberOfAncestor = data === null || data === void 0 ? void 0 : data.memberOfAncestor;
147
204
  }
205
+ return resolvedType;
148
206
  }
149
207
  /**
150
208
  * Adds all the symbols from another table to this one
151
209
  * It will overwrite any existing symbols in this table
152
- * @param symbolTable
153
210
  */
154
211
  mergeSymbolTable(symbolTable) {
155
212
  for (let [, value] of symbolTable.symbolMap) {
156
213
  for (const symbol of value) {
157
- this.addSymbol(symbol.name, symbol.range, symbol.type);
214
+ this.addSymbol(symbol.name, symbol.data, symbol.type, symbol.flags);
158
215
  }
159
216
  }
160
217
  }
161
- clear() {
162
- this.symbolMap.clear();
218
+ /**
219
+ * Get list of symbols declared directly in this SymbolTable (excludes parent SymbolTable).
220
+ */
221
+ getOwnSymbols(bitFlags) {
222
+ let symbols = [].concat(...this.symbolMap.values());
223
+ // eslint-disable-next-line no-bitwise
224
+ symbols = symbols.filter(symbol => symbol.flags & bitFlags);
225
+ return symbols;
163
226
  }
164
- }
165
- exports.SymbolTable = SymbolTable;
166
- function isPositionBefore(pos1, pos2) {
167
- if ((pos1 === null || pos1 === void 0 ? void 0 : pos1.line) < (pos2 === null || pos2 === void 0 ? void 0 : pos2.line)) {
168
- return true;
227
+ /**
228
+ * Get list of all symbols declared in this SymbolTable (includes parent SymbolTable).
229
+ */
230
+ getAllSymbols(bitFlags) {
231
+ let symbols = [].concat(...this.symbolMap.values());
232
+ //look through any sibling maps next
233
+ for (let sibling of this.siblings) {
234
+ symbols = symbols.concat(sibling.getAllSymbols(bitFlags));
235
+ }
236
+ if (this.parent) {
237
+ symbols = symbols.concat(this.parent.getAllSymbols(bitFlags));
238
+ }
239
+ // eslint-disable-next-line no-bitwise
240
+ symbols = symbols.filter(symbol => symbol.flags & bitFlags);
241
+ //remove duplicate symbols
242
+ const symbolsMap = new Map();
243
+ for (const symbol of symbols) {
244
+ const lowerSymbolName = symbol.name.toLowerCase();
245
+ if (!symbolsMap.has(lowerSymbolName)) {
246
+ symbolsMap.set(lowerSymbolName, symbol);
247
+ }
248
+ }
249
+ return [...symbolsMap.values()];
250
+ }
251
+ resetTypeCache() {
252
+ var _a;
253
+ this.typeCache = [
254
+ undefined,
255
+ new Map(),
256
+ new Map(),
257
+ new Map() // SymbolTypeFlags.runtime & SymbolTypeFlags.typetime
258
+ ];
259
+ this.cacheToken = (_a = SymbolTable.cacheVerifier) === null || _a === void 0 ? void 0 : _a.getToken();
260
+ }
261
+ getCachedType(name, options) {
262
+ var _a, _b;
263
+ if (SymbolTable.cacheVerifier) {
264
+ if (!((_a = SymbolTable.cacheVerifier) === null || _a === void 0 ? void 0 : _a.checkToken(this.cacheToken))) {
265
+ // we have a bad token
266
+ this.resetTypeCache();
267
+ return;
268
+ }
269
+ }
270
+ else {
271
+ // no cache verifier
272
+ return;
273
+ }
274
+ return (_b = this.typeCache[options.flags]) === null || _b === void 0 ? void 0 : _b.get(name.toLowerCase());
275
+ }
276
+ setCachedType(name, cacheEntry, options) {
277
+ var _a, _b, _c;
278
+ if (!cacheEntry) {
279
+ return;
280
+ }
281
+ if (SymbolTable.cacheVerifier) {
282
+ if (!((_a = SymbolTable.cacheVerifier) === null || _a === void 0 ? void 0 : _a.checkToken(this.cacheToken))) {
283
+ // we have a bad token - remove all other caches
284
+ this.resetTypeCache();
285
+ }
286
+ }
287
+ else {
288
+ // no cache verifier
289
+ return;
290
+ }
291
+ let existingCachedValue = (_b = this.typeCache[options.flags]) === null || _b === void 0 ? void 0 : _b.get(name.toLowerCase());
292
+ if ((0, reflection_1.isReferenceType)(cacheEntry.type) && !(0, reflection_1.isReferenceType)(existingCachedValue)) {
293
+ // No need to overwrite a non-referenceType with a referenceType
294
+ return;
295
+ }
296
+ return (_c = this.typeCache[options.flags]) === null || _c === void 0 ? void 0 : _c.set(name.toLowerCase(), cacheEntry);
297
+ }
298
+ /**
299
+ * Serialize this SymbolTable to JSON (useful for debugging reasons)
300
+ */
301
+ toJSON() {
302
+ var _a;
303
+ return {
304
+ name: this.name,
305
+ siblings: [...this.siblings].map(sibling => sibling.toJSON()),
306
+ parent: (_a = this.parent) === null || _a === void 0 ? void 0 : _a.toJSON(),
307
+ symbols: [
308
+ ...new Set([...this.symbolMap.entries()].map(([key, symbols]) => {
309
+ return symbols.map(x => {
310
+ var _a;
311
+ return { name: x.name, type: (_a = x.type) === null || _a === void 0 ? void 0 : _a.__identifier };
312
+ });
313
+ }).flat().sort())
314
+ ]
315
+ };
169
316
  }
170
- return false;
171
317
  }
318
+ exports.SymbolTable = SymbolTable;
319
+ /**
320
+ * Used to invalidate the cache for all symbol tables.
321
+ *
322
+ * This is not the most optimized solution as cache will be shared across all instances of SymbolTable across all programs,
323
+ * but this is the easiest way to handle nested/linked symbol table cache management so we can optimize this in the future some time...
324
+ */
325
+ SymbolTable.cacheVerifier = new CacheVerifier_1.CacheVerifier();
172
326
  //# sourceMappingURL=SymbolTable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SymbolTable.js","sourceRoot":"","sources":["../src/SymbolTable.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SymbolTable.js","sourceRoot":"","sources":["../src/SymbolTable.ts"],"names":[],"mappings":";;;AAEA,mDAAgD;AAGhD,6CAAgD;AAChD,sDAA4E;AAE5E,IAAY,cAOX;AAPD,WAAY,cAAc;IACtB,yDAAW,CAAA;IACX,2DAAY,CAAA;IACZ,2DAAY,CAAA;IACZ,yDAAW,CAAA;IACX,8DAAc,CAAA;IACd,sEAAkB,CAAA;AACtB,CAAC,EAPW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAOzB;AAED;;;GAGG;AACH,MAAa,WAAW;IACpB,YACW,IAAY,EACnB,cAAoC;QAD7B,SAAI,GAAJ,IAAI,CAAQ;QASvB;;;WAGG;QACK,cAAS,GAAG,IAAI,GAAG,EAAuB,CAAC;QAE3C,oBAAe,GAAG,EAA2B,CAAC;QAyC9C,aAAQ,GAAG,IAAI,GAAG,EAAe,CAAC;QArDtC,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,cAAc,EAAE;YAChB,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;SAC3C;IACL,CAAC;IAyBD;;OAEG;IACI,kBAAkB,CAAC,QAA6B;QACnD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpC,OAAO,GAAG,EAAE;YACR,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC7B,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACI,iBAAiB;QACpB,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;;QACb,OAAO,MAAA,MAAA,IAAI,CAAC,eAAe,EAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,kDAAI,CAAC;IACrE,CAAC;IAID;;OAEG;IACI,UAAU,CAAC,OAAoB;QAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,GAAG,EAAE;YACR,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACI,aAAa,CAAC,OAAoB;QACrC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAGM,YAAY;QACf,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED;;;;;;;OAOG;IACH,SAAS,CAAC,IAAY,EAAE,QAAwB;QAC5C,IAAI,YAAY,GAAgB,IAAI,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,EAAE,CAAC;QAChC,IAAI,MAAmB,CAAC;QACxB,GAAG;YACC,wBAAwB;YACxB,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC5C,sCAAsC;gBACtC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE;oBAChD,OAAO,IAAI,CAAC;iBACf;aACJ;YAED,oCAAoC;YACpC,KAAK,IAAI,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE;gBACvC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;oBACvC,sCAAsC;oBACtC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE;wBAChD,OAAO,IAAI,CAAC;qBACf;iBACJ;aACJ;YACD,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC;SACtC,QAAQ,YAAY,EAAE;QACvB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;;;;;;OAOG;IACH,SAAS,CAAC,IAAY,EAAE,QAAwB;QAC5C,IAAI,YAAY,GAAgB,IAAI,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,EAAE,CAAC;QAChC,IAAI,MAAmB,CAAC;QACxB,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAC7B,MAAM,eAAe,GAAG,CAAC,MAAiB,EAAE,EAAE,CAAC,iCAAM,MAAM,KAAE,IAAI,kCAAO,MAAM,CAAC,IAAI,KAAE,gBAAgB,EAAE,gBAAgB,OAAK,CAAC;QAC7H,GAAG;YACC,wBAAwB;YACxB,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC5C,sCAAsC;gBACtC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC;gBAC1D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;oBACnB,OAAO,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;iBACtC;aACJ;YACD,oCAAoC;YACpC,KAAK,IAAI,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE;gBACvC,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBAC1C,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,IAAG,CAAC,EAAE;oBACpB,OAAO,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;iBACtC;aACJ;YACD,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC;YACnC,gBAAgB,GAAG,IAAI,CAAC;SAC3B,QAAQ,YAAY,EAAE;IAC3B,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,IAAY,EAAE,IAAqB,EAAE,IAAa,EAAE,QAAwB;;QAClF,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC1B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;SAC/B;QACD,MAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,0CAAE,IAAI,CAAC;YAC1B,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,QAAQ;SAClB,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,IAAY;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC1B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;SAC/B;QACD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAEM,cAAc,CAAC,IAAY,EAAE,OAA6B;QAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,CAAC,WAAW,EAAE;YACd,OAAO,SAAS,CAAC;SACpB;QACD,OAAO,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACvG,CAAC;IAED,aAAa,CAAC,IAAY,EAAE,OAA6B;;QACrD,MAAM,UAAU,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACnG,IAAI,YAAY,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,CAAC;QACpC,IAAI,UAAU,GAAG,CAAC,YAAY,CAAC;QAC/B,MAAM,uBAAuB,GAAG,IAAA,+BAAkB,EAAC,YAAY,CAAC,CAAC;QACjE,IAAI,IAAI,GAAG,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,KAAI,EAAqB,CAAC;QACrD,IAAI,UAAU,GAAmB,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,KAAK,CAAC;QACnD,IAAI,CAAC,YAAY,IAAI,uBAAuB,EAAE;YAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACvD,IAAI,GAAG,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAG,CAAC,CAAC,0CAAE,IAAI,CAAC;YAC9B,UAAU,GAAG,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAG,CAAC,EAAE,KAAK,CAAC;YACpC,YAAY,GAAG,IAAA,uBAAa,EAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;SACvG;QACD,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,aAAa,EAAE;YAC5D,YAAY,GAAG,WAAW,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;SACjH;QACD,MAAM,uBAAuB,GAAG,IAAA,+BAAkB,EAAC,YAAY,CAAC,CAAC;QACjE,MAAM,mBAAmB,GAAG,uBAAuB,IAAI,CAAC,IAAA,+BAAkB,EAAC,YAAY,CAAC,CAAC;QACzF,UAAU,GAAG,UAAU,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9F,IAAI,UAAU,IAAI,mBAAmB,EAAE;YACnC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,CAAC;SAC5F;QACD,MAAA,OAAO,CAAC,IAAI,oCAAZ,OAAO,CAAC,IAAI,GAAK,EAAE,EAAC;QACpB,IAAI,OAAO,CAAC,IAAI,EAAE;YACd,OAAO,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,OAAO,CAAC,KAAK,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,gBAAgB,CAAC;SAC1D;QACD,OAAO,YAAY,CAAC;IACxB,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,WAAwB;QACrC,KAAK,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,WAAW,CAAC,SAAS,EAAE;YACzC,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE;gBACxB,IAAI,CAAC,SAAS,CACV,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,KAAK,CACf,CAAC;aACL;SACJ;IACL,CAAC;IAED;;OAEG;IACI,aAAa,CAAC,QAAwB;QACzC,IAAI,OAAO,GAAgB,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QACjE,sCAAsC;QACtC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC;QAC5D,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;OAEG;IACI,aAAa,CAAC,QAAwB;QACzC,IAAI,OAAO,GAAgB,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QACjE,oCAAoC;QACpC,KAAK,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC/B,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;SAC7D;QACD,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;SACjE;QACD,sCAAsC;QACtC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC;QAE5D,0BAA0B;QAC1B,MAAM,UAAU,GAAG,IAAI,GAAG,EAAqB,CAAC;QAChD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC1B,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAClD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;gBAClC,UAAU,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;aAC3C;SACJ;QACD,OAAO,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IACpC,CAAC;IAEO,cAAc;;QAClB,IAAI,CAAC,SAAS,GAAG;YACb,SAAS;YACT,IAAI,GAAG,EAA0B;YACjC,IAAI,GAAG,EAA0B;YACjC,IAAI,GAAG,EAA0B,CAAC,qDAAqD;SAC1F,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,MAAA,WAAW,CAAC,aAAa,0CAAE,QAAQ,EAAE,CAAC;IAC5D,CAAC;IAED,aAAa,CAAC,IAAY,EAAE,OAAuB;;QAC/C,IAAI,WAAW,CAAC,aAAa,EAAE;YAC3B,IAAI,CAAC,CAAA,MAAA,WAAW,CAAC,aAAa,0CAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA,EAAE;gBACzD,sBAAsB;gBACtB,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,OAAO;aACV;SACJ;aAAM;YACH,oBAAoB;YACpB,OAAO;SACV;QACD,OAAO,MAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,0CAAE,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,aAAa,CAAC,IAAY,EAAE,UAA0B,EAAE,OAAuB;;QAC3E,IAAI,CAAC,UAAU,EAAE;YACb,OAAO;SACV;QACD,IAAI,WAAW,CAAC,aAAa,EAAE;YAC3B,IAAI,CAAC,CAAA,MAAA,WAAW,CAAC,aAAa,0CAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA,EAAE;gBACzD,gDAAgD;gBAChD,IAAI,CAAC,cAAc,EAAE,CAAC;aACzB;SACJ;aAAM;YACH,oBAAoB;YACpB,OAAO;SACV;QACD,IAAI,mBAAmB,GAAG,MAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,0CAAE,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACjF,IAAI,IAAA,4BAAe,EAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAA,4BAAe,EAAC,mBAAmB,CAAC,EAAE;YAC3E,gEAAgE;YAChE,OAAO;SACV;QACD,OAAO,MAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,0CAAE,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC,CAAC;IAC9E,CAAC;IAED;;OAEG;IACK,MAAM;;QACV,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC7D,MAAM,EAAE,MAAA,IAAI,CAAC,MAAM,0CAAE,MAAM,EAAE;YAC7B,OAAO,EAAE;gBACL,GAAG,IAAI,GAAG,CACN,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE;oBACjD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;;wBACnB,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,MAAC,CAAC,CAAC,IAAY,0CAAE,YAAY,EAAE,CAAC;oBACjE,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CACnB;aACJ;SACJ,CAAC;IACN,CAAC;;AA/UL,kCAgVC;AAzTG;;;;;GAKG;AACI,yBAAa,GAAG,IAAI,6BAAa,EAAE,CAAC"}
@@ -5,6 +5,18 @@ export declare class Throttler {
5
5
  private pendingJob;
6
6
  private emitter;
7
7
  private get isIdle();
8
+ on(eventName: 'idle' | 'run', callback: () => any): () => void;
9
+ /**
10
+ * Resolve a promise the next time the event fires
11
+ * @param eventName the name of the event to subscribe to
12
+ * @param timeout if the event doesn't fire within the specified time, the promise will auto-resolve itself
13
+ */
14
+ once(eventName: 'idle' | 'run', timeout?: number): Promise<any>;
15
+ /**
16
+ * Wait for the next 'run' event. Or resolve immediately if already running.
17
+ * @param timeout after this timeout, the promise resolves even if the 'run' event never fired
18
+ */
19
+ onRunOnce(timeout?: number): Promise<any>;
8
20
  /**
9
21
  * Get a promise that resolves the next time the throttler becomes idle
10
22
  */
package/dist/Throttler.js CHANGED
@@ -12,6 +12,42 @@ class Throttler {
12
12
  get isIdle() {
13
13
  return !this.runningJobPromise;
14
14
  }
15
+ on(eventName, callback) {
16
+ this.emitter.on(eventName, callback);
17
+ return () => {
18
+ this.emitter.off(eventName, callback);
19
+ };
20
+ }
21
+ /**
22
+ * Resolve a promise the next time the event fires
23
+ * @param eventName the name of the event to subscribe to
24
+ * @param timeout if the event doesn't fire within the specified time, the promise will auto-resolve itself
25
+ */
26
+ once(eventName, timeout) {
27
+ const promises = [];
28
+ //register a timeout if specified
29
+ if (timeout > 0) {
30
+ promises.push(util_1.default.sleep(timeout));
31
+ }
32
+ //wait for the event
33
+ promises.push(new Promise((resolve) => {
34
+ const disconnect = this.on(eventName, () => {
35
+ disconnect();
36
+ resolve();
37
+ });
38
+ }));
39
+ return Promise.race(promises);
40
+ }
41
+ /**
42
+ * Wait for the next 'run' event. Or resolve immediately if already running.
43
+ * @param timeout after this timeout, the promise resolves even if the 'run' event never fired
44
+ */
45
+ async onRunOnce(timeout = 0) {
46
+ if (!this.isIdle) {
47
+ return;
48
+ }
49
+ return this.once('run', timeout);
50
+ }
15
51
  /**
16
52
  * Get a promise that resolves the next time the throttler becomes idle
17
53
  */
@@ -55,6 +91,9 @@ class Throttler {
55
91
  * Private method to run a job after a delay.
56
92
  */
57
93
  async runInternal(job) {
94
+ if (!this.pendingJob) {
95
+ this.emitter.emit('run');
96
+ }
58
97
  this.runningJobPromise = util_1.default.sleep(this.delay).then(() => {
59
98
  //run the job
60
99
  return job();
@@ -1 +1 @@
1
- {"version":3,"file":"Throttler.js","sourceRoot":"","sources":["../src/Throttler.ts"],"names":[],"mappings":";;;AAAA,iCAA0B;AAC1B,iDAA6C;AAC7C,yCAAsC;AAEtC,MAAa,SAAS;IAClB,YACa,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;QAMlB,YAAO,GAAG,IAAI,4BAAY,EAAE,CAAC;IAJrC,CAAC;IAMD,IAAY,MAAM;QACd,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC;IACnC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,UAAU,CAAC,wBAAwB,GAAG,IAAI;QACnD,IAAI,wBAAwB,IAAI,IAAI,CAAC,MAAM,EAAE;YACzC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC5B;QACD,MAAM,QAAQ,GAAG,IAAI,mBAAQ,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACnC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAClC,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC5B,CAAC;IAEM,MAAM,CAAC,QAAQ;QAClB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAClC,OAAO,GAAG,EAAE;YACR,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACvC,CAAC,CAAC;IACN,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,GAAG,CAAC,GAAG;QAChB,kDAAkD;QAClD,mCAAmC;QACnC,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;YACtB,yDAAyD;YACzD,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;SAC5B;aAAM;YACH,0BAA0B;YAC1B,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;SAChC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CAAC,GAAG;QACzB,IAAI,CAAC,iBAAiB,GAAG,cAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YACtD,aAAa;YACb,OAAO,GAAG,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACX,gCAAgC;YAChC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YACT,4CAA4C;YAC5C,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjB,kCAAkC;gBAClC,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;gBACjC,kFAAkF;gBAClF,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;gBAC5B,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;aACvC;iBAAM;gBACH,yBAAyB;gBACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC1B,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;aACtC;QACL,CAAC,CAAC,CAAC;QACH,qCAAqC;QACrC,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC7B,CAAC;IAEM,OAAO;QACV,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;IACtC,CAAC;CACJ;AAtFD,8BAsFC"}
1
+ {"version":3,"file":"Throttler.js","sourceRoot":"","sources":["../src/Throttler.ts"],"names":[],"mappings":"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"}
package/dist/Watcher.d.ts CHANGED
@@ -8,13 +8,10 @@ export declare class Watcher {
8
8
  private watchers;
9
9
  /**
10
10
  * Watch the paths or globs
11
- * @param paths
12
11
  */
13
12
  watch(paths: string | string[]): () => Promise<void>;
14
13
  /**
15
14
  * Be notified of all events
16
- * @param event
17
- * @param callback
18
15
  */
19
16
  on(event: 'all', callback: (event: any, path: any, details: any) => void): () => void;
20
17
  dispose(): void;
package/dist/Watcher.js CHANGED
@@ -12,7 +12,6 @@ class Watcher {
12
12
  }
13
13
  /**
14
14
  * Watch the paths or globs
15
- * @param paths
16
15
  */
17
16
  watch(paths) {
18
17
  let watcher = chokidar.watch(paths, {
@@ -35,8 +34,6 @@ class Watcher {
35
34
  }
36
35
  /**
37
36
  * Be notified of all events
38
- * @param event
39
- * @param callback
40
37
  */
41
38
  on(event, callback) {
42
39
  let watchers = [...this.watchers];
@@ -1 +1 @@
1
- {"version":3,"file":"Watcher.js","sourceRoot":"","sources":["../src/Watcher.ts"],"names":[],"mappings":";;;AAAA,qCAAqC;AAIrC;;GAEG;AACH,MAAa,OAAO;IAChB,YACY,OAAiB;QAAjB,YAAO,GAAP,OAAO,CAAU;QAKrB,aAAQ,GAAyB,EAAE,CAAC;IAF5C,CAAC;IAID;;;OAGG;IACI,KAAK,CAAC,KAAwB;QACjC,IAAI,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE;YAChC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YACzB,aAAa,EAAE,IAAI;YACnB,gBAAgB,EAAE;gBACd,kBAAkB,EAAE,GAAG;gBACvB,YAAY,EAAE,GAAG;aACpB;SACJ,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE5B,OAAO,KAAK,IAAI,EAAE;YACd,mBAAmB;YACnB,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACvB,mBAAmB;YACnB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACtB,kCAAkC;YAClC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC;IACN,CAAC;IAED;;;;OAIG;IACI,EAAE,CAAC,KAAY,EAAE,QAAwC;QAC5D,IAAI,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClC,KAAK,IAAI,OAAO,IAAI,QAAQ,EAAE;YAC1B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;SAC/B;QAED,uBAAuB;QACvB,OAAO,GAAG,EAAE;YACR,KAAK,IAAI,OAAO,IAAI,QAAQ,EAAE;gBAC1B,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;aAC3C;QACL,CAAC,CAAC;IACN,CAAC;IAEM,OAAO;QACV,KAAK,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC/B,OAAO,CAAC,kBAAkB,EAAE,CAAC;SAChC;IACL,CAAC;CACJ;AA1DD,0BA0DC"}
1
+ {"version":3,"file":"Watcher.js","sourceRoot":"","sources":["../src/Watcher.ts"],"names":[],"mappings":";;;AAAA,qCAAqC;AAIrC;;GAEG;AACH,MAAa,OAAO;IAChB,YACY,OAAiB;QAAjB,YAAO,GAAP,OAAO,CAAU;QAKrB,aAAQ,GAAyB,EAAE,CAAC;IAF5C,CAAC;IAID;;OAEG;IACI,KAAK,CAAC,KAAwB;QACjC,IAAI,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE;YAChC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YACzB,aAAa,EAAE,IAAI;YACnB,gBAAgB,EAAE;gBACd,kBAAkB,EAAE,GAAG;gBACvB,YAAY,EAAE,GAAG;aACpB;SACJ,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE5B,OAAO,KAAK,IAAI,EAAE;YACd,mBAAmB;YACnB,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACvB,mBAAmB;YACnB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACtB,kCAAkC;YAClC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACI,EAAE,CAAC,KAAY,EAAE,QAAwC;QAC5D,IAAI,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClC,KAAK,IAAI,OAAO,IAAI,QAAQ,EAAE;YAC1B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;SAC/B;QAED,uBAAuB;QACvB,OAAO,GAAG,EAAE;YACR,KAAK,IAAI,OAAO,IAAI,QAAQ,EAAE;gBAC1B,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;aAC3C;QACL,CAAC,CAAC;IACN,CAAC;IAEM,OAAO;QACV,KAAK,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC/B,OAAO,CAAC,kBAAkB,EAAE,CAAC;SAChC;IACL,CAAC;CACJ;AAvDD,0BAuDC"}
@@ -1,9 +1,10 @@
1
1
  import type { Location, Position } from 'vscode-languageserver';
2
2
  import { Scope } from './Scope';
3
3
  import type { XmlFile } from './files/XmlFile';
4
- import type { BscFile, CallableContainerMap } from './interfaces';
4
+ import { type CallableContainerMap } from './interfaces';
5
5
  import type { Program } from './Program';
6
- import { SymbolTable } from './SymbolTable';
6
+ import type { BscFile } from './files/BscFile';
7
+ import { ComponentType } from './types/ComponentType';
7
8
  export declare class XmlScope extends Scope {
8
9
  xmlFile: XmlFile;
9
10
  program: Program;
@@ -14,10 +15,7 @@ export declare class XmlScope extends Scope {
14
15
  * Otherwise default to global scope
15
16
  */
16
17
  getParentScope(): Scope;
17
- private _topTable;
18
- protected clearSymbolTable(): void;
19
- get topTable(): SymbolTable;
20
- get memberTable(): SymbolTable;
18
+ getComponentType(): ComponentType;
21
19
  protected _validate(callableContainerMap: CallableContainerMap): void;
22
20
  private diagnosticValidateInterface;
23
21
  private diagnosticMissingAttribute;