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.
- package/README.md +79 -138
- package/bsconfig.schema.json +196 -5
- package/dist/ActionPipeline.d.ts +10 -0
- package/dist/ActionPipeline.js +40 -0
- package/dist/ActionPipeline.js.map +1 -0
- package/dist/AstValidationSegmenter.d.ts +45 -0
- package/dist/AstValidationSegmenter.js +322 -0
- package/dist/AstValidationSegmenter.js.map +1 -0
- package/dist/BsConfig.d.ts +161 -43
- package/dist/BusyStatusTracker.d.ts +61 -0
- package/dist/BusyStatusTracker.js +148 -0
- package/dist/BusyStatusTracker.js.map +1 -0
- package/dist/Cache.d.ts +3 -8
- package/dist/Cache.js +9 -14
- package/dist/Cache.js.map +1 -1
- package/dist/CacheVerifier.d.ts +7 -0
- package/dist/CacheVerifier.js +20 -0
- package/dist/CacheVerifier.js.map +1 -0
- package/dist/CodeActionUtil.d.ts +29 -4
- package/dist/CodeActionUtil.js +22 -5
- package/dist/CodeActionUtil.js.map +1 -1
- package/dist/CommentFlagProcessor.d.ts +20 -15
- package/dist/CommentFlagProcessor.js +143 -58
- package/dist/CommentFlagProcessor.js.map +1 -1
- package/dist/CrossScopeValidator.d.ts +68 -0
- package/dist/CrossScopeValidator.js +650 -0
- package/dist/CrossScopeValidator.js.map +1 -0
- package/dist/DependencyGraph.d.ts +8 -3
- package/dist/DependencyGraph.js +49 -16
- package/dist/DependencyGraph.js.map +1 -1
- package/dist/DiagnosticCollection.d.ts +21 -5
- package/dist/DiagnosticCollection.js +77 -24
- package/dist/DiagnosticCollection.js.map +1 -1
- package/dist/DiagnosticFilterer.d.ts +27 -6
- package/dist/DiagnosticFilterer.js +273 -60
- package/dist/DiagnosticFilterer.js.map +1 -1
- package/dist/DiagnosticManager.d.ts +83 -0
- package/dist/DiagnosticManager.js +422 -0
- package/dist/DiagnosticManager.js.map +1 -0
- package/dist/DiagnosticMessages.d.ts +602 -196
- package/dist/DiagnosticMessages.js +926 -342
- package/dist/DiagnosticMessages.js.map +1 -1
- package/dist/DiagnosticSeverityAdjuster.d.ts +7 -0
- package/dist/DiagnosticSeverityAdjuster.js +45 -0
- package/dist/DiagnosticSeverityAdjuster.js.map +1 -0
- package/dist/FunctionScope.d.ts +28 -0
- package/dist/FunctionScope.js +52 -0
- package/dist/FunctionScope.js.map +1 -0
- package/dist/KeyedThrottler.d.ts +3 -3
- package/dist/KeyedThrottler.js +3 -3
- package/dist/KeyedThrottler.js.map +1 -1
- package/dist/LanguageServer.d.ts +136 -104
- package/dist/LanguageServer.js +577 -741
- package/dist/LanguageServer.js.map +1 -1
- package/dist/Logger.d.ts +17 -13
- package/dist/Logger.js +64 -34
- package/dist/Logger.js.map +1 -1
- package/dist/PluginInterface.d.ts +32 -10
- package/dist/PluginInterface.js +117 -7
- package/dist/PluginInterface.js.map +1 -1
- package/dist/Program.d.ts +302 -98
- package/dist/Program.js +1613 -726
- package/dist/Program.js.map +1 -1
- package/dist/ProgramBuilder.d.ts +39 -22
- package/dist/ProgramBuilder.js +245 -179
- package/dist/ProgramBuilder.js.map +1 -1
- package/dist/Scope.d.ts +227 -106
- package/dist/Scope.js +609 -557
- package/dist/Scope.js.map +1 -1
- package/dist/ScopeNamespaceLookup.d.ts +73 -0
- package/dist/ScopeNamespaceLookup.js +242 -0
- package/dist/ScopeNamespaceLookup.js.map +1 -0
- package/dist/SemanticTokenUtils.js +5 -1
- package/dist/SemanticTokenUtils.js.map +1 -1
- package/dist/Stopwatch.d.ts +4 -0
- package/dist/Stopwatch.js +8 -1
- package/dist/Stopwatch.js.map +1 -1
- package/dist/SymbolTable.d.ts +145 -26
- package/dist/SymbolTable.js +575 -64
- package/dist/SymbolTable.js.map +1 -1
- package/dist/SymbolTypeFlag.d.ts +9 -0
- package/dist/SymbolTypeFlag.js +14 -0
- package/dist/SymbolTypeFlag.js.map +1 -0
- package/dist/Throttler.d.ts +12 -0
- package/dist/Throttler.js +39 -0
- package/dist/Throttler.js.map +1 -1
- package/dist/Watcher.d.ts +0 -3
- package/dist/Watcher.js +0 -3
- package/dist/Watcher.js.map +1 -1
- package/dist/XmlScope.d.ts +5 -15
- package/dist/XmlScope.js +34 -90
- package/dist/XmlScope.js.map +1 -1
- package/dist/astUtils/CachedLookups.d.ts +50 -0
- package/dist/astUtils/CachedLookups.js +337 -0
- package/dist/astUtils/CachedLookups.js.map +1 -0
- package/dist/astUtils/Editor.d.ts +69 -0
- package/dist/astUtils/Editor.js +245 -0
- package/dist/astUtils/Editor.js.map +1 -0
- package/dist/astUtils/creators.d.ts +54 -19
- package/dist/astUtils/creators.js +242 -42
- package/dist/astUtils/creators.js.map +1 -1
- package/dist/astUtils/reflection.d.ts +199 -85
- package/dist/astUtils/reflection.js +518 -145
- package/dist/astUtils/reflection.js.map +1 -1
- package/dist/astUtils/stackedVisitor.js.map +1 -1
- package/dist/astUtils/visitors.d.ts +117 -53
- package/dist/astUtils/visitors.js +95 -15
- package/dist/astUtils/visitors.js.map +1 -1
- package/dist/astUtils/xml.d.ts +9 -8
- package/dist/astUtils/xml.js +12 -7
- package/dist/astUtils/xml.js.map +1 -1
- package/dist/bscPlugin/BscPlugin.d.ts +26 -4
- package/dist/bscPlugin/BscPlugin.js +96 -4
- package/dist/bscPlugin/BscPlugin.js.map +1 -1
- package/dist/bscPlugin/CallExpressionInfo.d.ts +36 -0
- package/dist/bscPlugin/CallExpressionInfo.js +142 -0
- package/dist/bscPlugin/CallExpressionInfo.js.map +1 -0
- package/dist/bscPlugin/FileWriter.d.ts +19 -0
- package/dist/bscPlugin/FileWriter.js +79 -0
- package/dist/bscPlugin/FileWriter.js.map +1 -0
- package/dist/bscPlugin/SignatureHelpUtil.d.ts +10 -0
- package/dist/bscPlugin/SignatureHelpUtil.js +137 -0
- package/dist/bscPlugin/SignatureHelpUtil.js.map +1 -0
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.d.ts +109 -7
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +676 -26
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
- package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.d.ts +17 -0
- package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.js +66 -0
- package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.js.map +1 -0
- package/dist/bscPlugin/codeActions/codeActionHelpers.d.ts +18 -0
- package/dist/bscPlugin/codeActions/codeActionHelpers.js +31 -0
- package/dist/bscPlugin/codeActions/codeActionHelpers.js.map +1 -0
- package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +65 -0
- package/dist/bscPlugin/completions/CompletionsProcessor.js +633 -0
- package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -0
- package/dist/bscPlugin/definition/DefinitionProvider.d.ts +13 -0
- package/dist/bscPlugin/definition/DefinitionProvider.js +220 -0
- package/dist/bscPlugin/definition/DefinitionProvider.js.map +1 -0
- package/dist/bscPlugin/fileProviders/FileProvider.d.ts +9 -0
- package/dist/bscPlugin/fileProviders/FileProvider.js +51 -0
- package/dist/bscPlugin/fileProviders/FileProvider.js.map +1 -0
- package/dist/bscPlugin/hover/HoverProcessor.d.ts +18 -0
- package/dist/bscPlugin/hover/HoverProcessor.js +238 -0
- package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -0
- package/dist/bscPlugin/references/ReferencesProvider.d.ts +12 -0
- package/dist/bscPlugin/references/ReferencesProvider.js +57 -0
- package/dist/bscPlugin/references/ReferencesProvider.js.map +1 -0
- package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.d.ts +7 -0
- package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.js +77 -0
- package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.js.map +1 -0
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +14 -0
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +164 -0
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -0
- package/dist/bscPlugin/serialize/BslibManager.d.ts +12 -0
- package/dist/bscPlugin/serialize/BslibManager.js +46 -0
- package/dist/bscPlugin/serialize/BslibManager.js.map +1 -0
- package/dist/bscPlugin/serialize/FileSerializer.d.ts +9 -0
- package/dist/bscPlugin/serialize/FileSerializer.js +80 -0
- package/dist/bscPlugin/serialize/FileSerializer.js.map +1 -0
- package/dist/bscPlugin/symbols/DocumentSymbolProcessor.d.ts +7 -0
- package/dist/bscPlugin/symbols/DocumentSymbolProcessor.js +22 -0
- package/dist/bscPlugin/symbols/DocumentSymbolProcessor.js.map +1 -0
- package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.d.ts +7 -0
- package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.js +26 -0
- package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.js.map +1 -0
- package/dist/bscPlugin/symbols/symbolUtils.d.ts +5 -0
- package/dist/bscPlugin/symbols/symbolUtils.js +141 -0
- package/dist/bscPlugin/symbols/symbolUtils.js.map +1 -0
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.d.ts +34 -0
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js +504 -0
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +1 -0
- package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.d.ts +12 -0
- package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js +99 -0
- package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js.map +1 -0
- package/dist/bscPlugin/validation/BrsFileAfterValidator.d.ts +7 -0
- package/dist/bscPlugin/validation/BrsFileAfterValidator.js +18 -0
- package/dist/bscPlugin/validation/BrsFileAfterValidator.js.map +1 -0
- package/dist/bscPlugin/validation/BrsFileValidator.d.ts +51 -0
- package/dist/bscPlugin/validation/BrsFileValidator.js +714 -0
- package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -0
- package/dist/bscPlugin/validation/ProgramValidator.d.ts +11 -0
- package/dist/bscPlugin/validation/ProgramValidator.js +33 -0
- package/dist/bscPlugin/validation/ProgramValidator.js.map +1 -0
- package/dist/bscPlugin/validation/ScopeValidator.d.ts +158 -0
- package/dist/bscPlugin/validation/ScopeValidator.js +1481 -0
- package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -0
- package/dist/bscPlugin/validation/XmlFileValidator.d.ts +8 -0
- package/dist/bscPlugin/validation/XmlFileValidator.js +50 -0
- package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -0
- package/dist/cli.js +140 -28
- package/dist/cli.js.map +1 -1
- package/dist/common/Sequencer.d.ts +53 -0
- package/dist/common/Sequencer.js +233 -0
- package/dist/common/Sequencer.js.map +1 -0
- package/dist/deferred.d.ts +5 -3
- package/dist/deferred.js +10 -0
- package/dist/deferred.js.map +1 -1
- package/dist/diagnosticUtils.d.ts +61 -4
- package/dist/diagnosticUtils.js +285 -25
- package/dist/diagnosticUtils.js.map +1 -1
- package/dist/examples/plugins/removePrint.d.ts +2 -2
- package/dist/examples/plugins/removePrint.js +8 -12
- package/dist/examples/plugins/removePrint.js.map +1 -1
- package/dist/files/AssetFile.d.ts +24 -0
- package/dist/files/AssetFile.js +25 -0
- package/dist/files/AssetFile.js.map +1 -0
- package/dist/files/BrsFile.d.ts +161 -87
- package/dist/files/BrsFile.js +919 -936
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BscFile.d.ts +102 -0
- package/dist/files/BscFile.js +15 -0
- package/dist/files/BscFile.js.map +1 -0
- package/dist/files/Factory.d.ts +25 -0
- package/dist/files/Factory.js +22 -0
- package/dist/files/Factory.js.map +1 -0
- package/dist/files/LazyFileData.d.ts +21 -0
- package/dist/files/LazyFileData.js +54 -0
- package/dist/files/LazyFileData.js.map +1 -0
- package/dist/files/XmlFile.d.ts +80 -41
- package/dist/files/XmlFile.js +162 -137
- package/dist/files/XmlFile.js.map +1 -1
- package/dist/globalCallables.d.ts +3 -1
- package/dist/globalCallables.js +424 -184
- package/dist/globalCallables.js.map +1 -1
- package/dist/index.d.ts +32 -4
- package/dist/index.js +54 -7
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +987 -125
- package/dist/interfaces.js +21 -0
- package/dist/interfaces.js.map +1 -1
- package/dist/lexer/Lexer.d.ts +51 -12
- package/dist/lexer/Lexer.js +214 -65
- package/dist/lexer/Lexer.js.map +1 -1
- package/dist/lexer/Token.d.ts +27 -11
- package/dist/lexer/Token.js +10 -2
- package/dist/lexer/Token.js.map +1 -1
- package/dist/lexer/TokenKind.d.ts +48 -2
- package/dist/lexer/TokenKind.js +167 -10
- package/dist/lexer/TokenKind.js.map +1 -1
- package/dist/logging.d.ts +14 -0
- package/dist/logging.js +29 -0
- package/dist/logging.js.map +1 -0
- package/dist/lsp/ActionQueue.d.ts +35 -0
- package/dist/lsp/ActionQueue.js +115 -0
- package/dist/lsp/ActionQueue.js.map +1 -0
- package/dist/lsp/DocumentManager.d.ts +63 -0
- package/dist/lsp/DocumentManager.js +122 -0
- package/dist/lsp/DocumentManager.js.map +1 -0
- package/dist/lsp/LspProject.d.ts +287 -0
- package/dist/lsp/LspProject.js +3 -0
- package/dist/lsp/LspProject.js.map +1 -0
- package/dist/lsp/PathFilterer.d.ts +75 -0
- package/dist/lsp/PathFilterer.js +196 -0
- package/dist/lsp/PathFilterer.js.map +1 -0
- package/dist/lsp/Project.d.ts +200 -0
- package/dist/lsp/Project.js +562 -0
- package/dist/lsp/Project.js.map +1 -0
- package/dist/lsp/ProjectManager.d.ts +288 -0
- package/dist/lsp/ProjectManager.js +967 -0
- package/dist/lsp/ProjectManager.js.map +1 -0
- package/dist/lsp/ReaderWriterManager.d.ts +21 -0
- package/dist/lsp/ReaderWriterManager.js +60 -0
- package/dist/lsp/ReaderWriterManager.js.map +1 -0
- package/dist/lsp/worker/MessageHandler.d.ts +99 -0
- package/dist/lsp/worker/MessageHandler.js +138 -0
- package/dist/lsp/worker/MessageHandler.js.map +1 -0
- package/dist/lsp/worker/WorkerPool.d.ts +38 -0
- package/dist/lsp/worker/WorkerPool.js +78 -0
- package/dist/lsp/worker/WorkerPool.js.map +1 -0
- package/dist/lsp/worker/WorkerThreadProject.d.ts +168 -0
- package/dist/lsp/worker/WorkerThreadProject.js +205 -0
- package/dist/lsp/worker/WorkerThreadProject.js.map +1 -0
- package/dist/lsp/worker/WorkerThreadProjectRunner.d.ts +15 -0
- package/dist/lsp/worker/WorkerThreadProjectRunner.js +58 -0
- package/dist/lsp/worker/WorkerThreadProjectRunner.js.map +1 -0
- package/dist/lsp/worker/run.js +14 -0
- package/dist/lsp/worker/run.js.map +1 -0
- package/dist/parser/AstNode.d.ts +205 -0
- package/dist/parser/AstNode.js +305 -0
- package/dist/parser/AstNode.js.map +1 -0
- package/dist/parser/BrightScriptDocParser.d.ts +56 -0
- package/dist/parser/BrightScriptDocParser.js +294 -0
- package/dist/parser/BrightScriptDocParser.js.map +1 -0
- package/dist/parser/BrsTranspileState.d.ts +22 -3
- package/dist/parser/BrsTranspileState.js +19 -0
- package/dist/parser/BrsTranspileState.js.map +1 -1
- package/dist/parser/Expression.d.ts +601 -220
- package/dist/parser/Expression.js +1516 -502
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.d.ts +137 -121
- package/dist/parser/Parser.js +1808 -982
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/SGParser.d.ts +30 -13
- package/dist/parser/SGParser.js +94 -56
- package/dist/parser/SGParser.js.map +1 -1
- package/dist/parser/SGTypes.d.ts +134 -46
- package/dist/parser/SGTypes.js +206 -115
- package/dist/parser/SGTypes.js.map +1 -1
- package/dist/parser/Statement.d.ts +854 -267
- package/dist/parser/Statement.js +2416 -621
- package/dist/parser/Statement.js.map +1 -1
- package/dist/parser/TranspileState.d.ts +30 -14
- package/dist/parser/TranspileState.js +124 -27
- package/dist/parser/TranspileState.js.map +1 -1
- package/dist/preprocessor/Manifest.d.ts +6 -6
- package/dist/preprocessor/Manifest.js +17 -38
- package/dist/preprocessor/Manifest.js.map +1 -1
- package/dist/roku-types/data.json +20554 -0
- package/dist/roku-types/index.d.ts +5726 -0
- package/dist/roku-types/index.js +11 -0
- package/dist/roku-types/index.js.map +1 -0
- package/dist/types/ArrayType.d.ts +12 -5
- package/dist/types/ArrayType.js +95 -25
- package/dist/types/ArrayType.js.map +1 -1
- package/dist/types/AssociativeArrayType.d.ts +15 -0
- package/dist/types/AssociativeArrayType.js +64 -0
- package/dist/types/AssociativeArrayType.js.map +1 -0
- package/dist/types/BaseFunctionType.d.ts +10 -0
- package/dist/types/BaseFunctionType.js +26 -0
- package/dist/types/BaseFunctionType.js.map +1 -0
- package/dist/types/BooleanType.d.ts +9 -5
- package/dist/types/BooleanType.js +19 -8
- package/dist/types/BooleanType.js.map +1 -1
- package/dist/types/BscType.d.ts +41 -3
- package/dist/types/BscType.js +152 -0
- package/dist/types/BscType.js.map +1 -1
- package/dist/types/BscTypeKind.d.ts +28 -0
- package/dist/types/BscTypeKind.js +33 -0
- package/dist/types/BscTypeKind.js.map +1 -0
- package/dist/types/BuiltInInterfaceAdder.d.ts +28 -0
- package/dist/types/BuiltInInterfaceAdder.js +212 -0
- package/dist/types/BuiltInInterfaceAdder.js.map +1 -0
- package/dist/types/CallFuncableType.d.ts +24 -0
- package/dist/types/CallFuncableType.js +91 -0
- package/dist/types/CallFuncableType.js.map +1 -0
- package/dist/types/ClassType.d.ts +17 -0
- package/dist/types/ClassType.js +63 -0
- package/dist/types/ClassType.js.map +1 -0
- package/dist/types/ComponentType.d.ts +22 -0
- package/dist/types/ComponentType.js +110 -0
- package/dist/types/ComponentType.js.map +1 -0
- package/dist/types/DoubleType.d.ts +10 -5
- package/dist/types/DoubleType.js +21 -17
- package/dist/types/DoubleType.js.map +1 -1
- package/dist/types/DynamicType.d.ts +13 -5
- package/dist/types/DynamicType.js +26 -5
- package/dist/types/DynamicType.js.map +1 -1
- package/dist/types/EnumType.d.ts +42 -0
- package/dist/types/EnumType.js +101 -0
- package/dist/types/EnumType.js.map +1 -0
- package/dist/types/FloatType.d.ts +10 -5
- package/dist/types/FloatType.js +21 -17
- package/dist/types/FloatType.js.map +1 -1
- package/dist/types/FunctionType.d.ts +8 -22
- package/dist/types/FunctionType.js +25 -63
- package/dist/types/FunctionType.js.map +1 -1
- package/dist/types/InheritableType.d.ts +29 -0
- package/dist/types/InheritableType.js +173 -0
- package/dist/types/InheritableType.js.map +1 -0
- package/dist/types/InlineInterfaceType.d.ts +5 -0
- package/dist/types/InlineInterfaceType.js +17 -0
- package/dist/types/InlineInterfaceType.js.map +1 -0
- package/dist/types/IntegerType.d.ts +10 -5
- package/dist/types/IntegerType.js +21 -17
- package/dist/types/IntegerType.js.map +1 -1
- package/dist/types/InterfaceType.d.ts +14 -6
- package/dist/types/InterfaceType.js +30 -15
- package/dist/types/InterfaceType.js.map +1 -1
- package/dist/types/IntersectionType.d.ts +29 -0
- package/dist/types/IntersectionType.js +256 -0
- package/dist/types/IntersectionType.js.map +1 -0
- package/dist/types/InvalidType.d.ts +10 -5
- package/dist/types/InvalidType.js +21 -9
- package/dist/types/InvalidType.js.map +1 -1
- package/dist/types/LongIntegerType.d.ts +10 -5
- package/dist/types/LongIntegerType.js +21 -17
- package/dist/types/LongIntegerType.js.map +1 -1
- package/dist/types/NamespaceType.d.ts +12 -0
- package/dist/types/NamespaceType.js +28 -0
- package/dist/types/NamespaceType.js.map +1 -0
- package/dist/types/ObjectType.d.ts +12 -5
- package/dist/types/ObjectType.js +25 -8
- package/dist/types/ObjectType.js.map +1 -1
- package/dist/types/ReferenceType.d.ts +123 -0
- package/dist/types/ReferenceType.js +726 -0
- package/dist/types/ReferenceType.js.map +1 -0
- package/dist/types/StringType.d.ts +12 -5
- package/dist/types/StringType.js +23 -8
- package/dist/types/StringType.js.map +1 -1
- package/dist/types/TypeStatementType.d.ts +19 -0
- package/dist/types/TypeStatementType.js +56 -0
- package/dist/types/TypeStatementType.js.map +1 -0
- package/dist/types/TypedFunctionType.d.ts +34 -0
- package/dist/types/TypedFunctionType.js +157 -0
- package/dist/types/TypedFunctionType.js.map +1 -0
- package/dist/types/UninitializedType.d.ts +11 -6
- package/dist/types/UninitializedType.js +20 -11
- package/dist/types/UninitializedType.js.map +1 -1
- package/dist/types/UnionType.d.ts +27 -0
- package/dist/types/UnionType.js +196 -0
- package/dist/types/UnionType.js.map +1 -0
- package/dist/types/VoidType.d.ts +11 -5
- package/dist/types/VoidType.js +22 -8
- package/dist/types/VoidType.js.map +1 -1
- package/dist/types/helpers.d.ts +51 -0
- package/dist/types/helpers.js +329 -0
- package/dist/types/helpers.js.map +1 -0
- package/dist/types/index.d.ts +22 -0
- package/dist/types/index.js +39 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/roFunctionType.d.ts +11 -0
- package/dist/types/roFunctionType.js +37 -0
- package/dist/types/roFunctionType.js.map +1 -0
- package/dist/util.d.ts +325 -185
- package/dist/util.js +2135 -568
- package/dist/util.js.map +1 -1
- package/dist/validators/ClassValidator.d.ts +9 -15
- package/dist/validators/ClassValidator.js +93 -138
- package/dist/validators/ClassValidator.js.map +1 -1
- package/package.json +183 -138
- package/CHANGELOG.md +0 -1188
- package/dist/astUtils/creators.spec.js +0 -21
- package/dist/astUtils/creators.spec.js.map +0 -1
- package/dist/astUtils/index.d.ts +0 -7
- package/dist/astUtils/index.js +0 -26
- package/dist/astUtils/index.js.map +0 -1
- package/dist/astUtils/reflection.spec.d.ts +0 -1
- package/dist/astUtils/reflection.spec.js +0 -292
- package/dist/astUtils/reflection.spec.js.map +0 -1
- package/dist/astUtils/stackedVisitor.spec.d.ts +0 -1
- package/dist/astUtils/stackedVisitor.spec.js +0 -79
- package/dist/astUtils/stackedVisitor.spec.js.map +0 -1
- package/dist/astUtils/visitors.spec.d.ts +0 -1
- package/dist/astUtils/visitors.spec.js +0 -854
- package/dist/astUtils/visitors.spec.js.map +0 -1
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.d.ts +0 -1
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +0 -194
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +0 -1
- package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.d.ts +0 -7
- package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.js +0 -63
- package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.js.map +0 -1
- package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.spec.d.ts +0 -1
- package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.spec.js +0 -45
- package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.spec.js.map +0 -1
- package/dist/files/BrsFile.Class.spec.d.ts +0 -1
- package/dist/files/BrsFile.Class.spec.js +0 -1081
- package/dist/files/BrsFile.Class.spec.js.map +0 -1
- package/dist/files/BrsFile.spec.d.ts +0 -1
- package/dist/files/BrsFile.spec.js +0 -2524
- package/dist/files/BrsFile.spec.js.map +0 -1
- package/dist/files/XmlFile.spec.d.ts +0 -1
- package/dist/files/XmlFile.spec.js +0 -1065
- package/dist/files/XmlFile.spec.js.map +0 -1
- package/dist/files/tests/imports.spec.d.ts +0 -1
- package/dist/files/tests/imports.spec.js +0 -241
- package/dist/files/tests/imports.spec.js.map +0 -1
- package/dist/lexer/Character.spec.d.ts +0 -1
- package/dist/lexer/Character.spec.js +0 -27
- package/dist/lexer/Character.spec.js.map +0 -1
- package/dist/lexer/Lexer.spec.d.ts +0 -1
- package/dist/lexer/Lexer.spec.js +0 -1101
- package/dist/lexer/Lexer.spec.js.map +0 -1
- package/dist/lexer/index.d.ts +0 -3
- package/dist/lexer/index.js +0 -17
- package/dist/lexer/index.js.map +0 -1
- package/dist/parser/Parser.Class.spec.d.ts +0 -1
- package/dist/parser/Parser.Class.spec.js +0 -390
- package/dist/parser/Parser.Class.spec.js.map +0 -1
- package/dist/parser/Parser.spec.d.ts +0 -4
- package/dist/parser/Parser.spec.js +0 -1216
- package/dist/parser/Parser.spec.js.map +0 -1
- package/dist/parser/SGParser.spec.d.ts +0 -1
- package/dist/parser/SGParser.spec.js +0 -145
- package/dist/parser/SGParser.spec.js.map +0 -1
- package/dist/parser/SGTypes.spec.d.ts +0 -1
- package/dist/parser/SGTypes.spec.js +0 -351
- package/dist/parser/SGTypes.spec.js.map +0 -1
- package/dist/parser/Statement.spec.d.ts +0 -1
- package/dist/parser/Statement.spec.js +0 -94
- package/dist/parser/Statement.spec.js.map +0 -1
- package/dist/parser/index.d.ts +0 -3
- package/dist/parser/index.js +0 -16
- package/dist/parser/index.js.map +0 -1
- package/dist/parser/tests/Parser.spec.d.ts +0 -18
- package/dist/parser/tests/Parser.spec.js +0 -35
- package/dist/parser/tests/Parser.spec.js.map +0 -1
- package/dist/parser/tests/controlFlow/For.spec.d.ts +0 -1
- package/dist/parser/tests/controlFlow/For.spec.js +0 -161
- package/dist/parser/tests/controlFlow/For.spec.js.map +0 -1
- package/dist/parser/tests/controlFlow/ForEach.spec.d.ts +0 -1
- package/dist/parser/tests/controlFlow/ForEach.spec.js +0 -106
- package/dist/parser/tests/controlFlow/ForEach.spec.js.map +0 -1
- package/dist/parser/tests/controlFlow/If.spec.d.ts +0 -1
- package/dist/parser/tests/controlFlow/If.spec.js +0 -551
- package/dist/parser/tests/controlFlow/If.spec.js.map +0 -1
- package/dist/parser/tests/controlFlow/While.spec.d.ts +0 -1
- package/dist/parser/tests/controlFlow/While.spec.js +0 -107
- package/dist/parser/tests/controlFlow/While.spec.js.map +0 -1
- package/dist/parser/tests/expression/Additive.spec.d.ts +0 -1
- package/dist/parser/tests/expression/Additive.spec.js +0 -99
- package/dist/parser/tests/expression/Additive.spec.js.map +0 -1
- package/dist/parser/tests/expression/ArrayLiterals.spec.d.ts +0 -1
- package/dist/parser/tests/expression/ArrayLiterals.spec.js +0 -254
- package/dist/parser/tests/expression/ArrayLiterals.spec.js.map +0 -1
- package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.d.ts +0 -1
- package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +0 -266
- package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +0 -1
- package/dist/parser/tests/expression/Boolean.spec.d.ts +0 -1
- package/dist/parser/tests/expression/Boolean.spec.js +0 -83
- package/dist/parser/tests/expression/Boolean.spec.js.map +0 -1
- package/dist/parser/tests/expression/Call.spec.d.ts +0 -1
- package/dist/parser/tests/expression/Call.spec.js +0 -134
- package/dist/parser/tests/expression/Call.spec.js.map +0 -1
- package/dist/parser/tests/expression/Exponential.spec.d.ts +0 -1
- package/dist/parser/tests/expression/Exponential.spec.js +0 -37
- package/dist/parser/tests/expression/Exponential.spec.js.map +0 -1
- package/dist/parser/tests/expression/Function.spec.d.ts +0 -1
- package/dist/parser/tests/expression/Function.spec.js +0 -403
- package/dist/parser/tests/expression/Function.spec.js.map +0 -1
- package/dist/parser/tests/expression/Indexing.spec.d.ts +0 -1
- package/dist/parser/tests/expression/Indexing.spec.js +0 -219
- package/dist/parser/tests/expression/Indexing.spec.js.map +0 -1
- package/dist/parser/tests/expression/Multiplicative.spec.d.ts +0 -1
- package/dist/parser/tests/expression/Multiplicative.spec.js +0 -67
- package/dist/parser/tests/expression/Multiplicative.spec.js.map +0 -1
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.d.ts +0 -1
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +0 -201
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +0 -1
- package/dist/parser/tests/expression/PrefixUnary.spec.d.ts +0 -1
- package/dist/parser/tests/expression/PrefixUnary.spec.js +0 -105
- package/dist/parser/tests/expression/PrefixUnary.spec.js.map +0 -1
- package/dist/parser/tests/expression/Primary.spec.d.ts +0 -1
- package/dist/parser/tests/expression/Primary.spec.js +0 -149
- package/dist/parser/tests/expression/Primary.spec.js.map +0 -1
- package/dist/parser/tests/expression/Relational.spec.d.ts +0 -1
- package/dist/parser/tests/expression/Relational.spec.js +0 -83
- package/dist/parser/tests/expression/Relational.spec.js.map +0 -1
- package/dist/parser/tests/expression/SourceLiteralExpression.spec.d.ts +0 -1
- package/dist/parser/tests/expression/SourceLiteralExpression.spec.js +0 -201
- package/dist/parser/tests/expression/SourceLiteralExpression.spec.js.map +0 -1
- package/dist/parser/tests/expression/TemplateStringExpression.spec.d.ts +0 -1
- package/dist/parser/tests/expression/TemplateStringExpression.spec.js +0 -202
- package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +0 -1
- package/dist/parser/tests/expression/TernaryExpression.spec.d.ts +0 -1
- package/dist/parser/tests/expression/TernaryExpression.spec.js +0 -323
- package/dist/parser/tests/expression/TernaryExpression.spec.js.map +0 -1
- package/dist/parser/tests/statement/AssignmentOperators.spec.d.ts +0 -1
- package/dist/parser/tests/statement/AssignmentOperators.spec.js +0 -79
- package/dist/parser/tests/statement/AssignmentOperators.spec.js.map +0 -1
- package/dist/parser/tests/statement/Declaration.spec.d.ts +0 -1
- package/dist/parser/tests/statement/Declaration.spec.js +0 -108
- package/dist/parser/tests/statement/Declaration.spec.js.map +0 -1
- package/dist/parser/tests/statement/Dim.spec.d.ts +0 -1
- package/dist/parser/tests/statement/Dim.spec.js +0 -73
- package/dist/parser/tests/statement/Dim.spec.js.map +0 -1
- package/dist/parser/tests/statement/Function.spec.d.ts +0 -1
- package/dist/parser/tests/statement/Function.spec.js +0 -332
- package/dist/parser/tests/statement/Function.spec.js.map +0 -1
- package/dist/parser/tests/statement/Goto.spec.d.ts +0 -1
- package/dist/parser/tests/statement/Goto.spec.js +0 -50
- package/dist/parser/tests/statement/Goto.spec.js.map +0 -1
- package/dist/parser/tests/statement/Increment.spec.d.ts +0 -1
- package/dist/parser/tests/statement/Increment.spec.js +0 -117
- package/dist/parser/tests/statement/Increment.spec.js.map +0 -1
- package/dist/parser/tests/statement/LibraryStatement.spec.d.ts +0 -1
- package/dist/parser/tests/statement/LibraryStatement.spec.js +0 -74
- package/dist/parser/tests/statement/LibraryStatement.spec.js.map +0 -1
- package/dist/parser/tests/statement/Misc.spec.d.ts +0 -1
- package/dist/parser/tests/statement/Misc.spec.js +0 -333
- package/dist/parser/tests/statement/Misc.spec.js.map +0 -1
- package/dist/parser/tests/statement/PrintStatement.spec.d.ts +0 -1
- package/dist/parser/tests/statement/PrintStatement.spec.js +0 -181
- package/dist/parser/tests/statement/PrintStatement.spec.js.map +0 -1
- package/dist/parser/tests/statement/ReturnStatement.spec.d.ts +0 -1
- package/dist/parser/tests/statement/ReturnStatement.spec.js +0 -94
- package/dist/parser/tests/statement/ReturnStatement.spec.js.map +0 -1
- package/dist/parser/tests/statement/Set.spec.d.ts +0 -1
- package/dist/parser/tests/statement/Set.spec.js +0 -218
- package/dist/parser/tests/statement/Set.spec.js.map +0 -1
- package/dist/parser/tests/statement/Stop.spec.d.ts +0 -1
- package/dist/parser/tests/statement/Stop.spec.js +0 -37
- package/dist/parser/tests/statement/Stop.spec.js.map +0 -1
- package/dist/parser/tests/statement/Throw.spec.d.ts +0 -1
- package/dist/parser/tests/statement/Throw.spec.js +0 -35
- package/dist/parser/tests/statement/Throw.spec.js.map +0 -1
- package/dist/parser/tests/statement/TryCatch.spec.d.ts +0 -1
- package/dist/parser/tests/statement/TryCatch.spec.js +0 -140
- package/dist/parser/tests/statement/TryCatch.spec.js.map +0 -1
- package/dist/preprocessor/Chunk.d.ts +0 -82
- package/dist/preprocessor/Chunk.js +0 -77
- package/dist/preprocessor/Chunk.js.map +0 -1
- package/dist/preprocessor/Manifest.spec.d.ts +0 -0
- package/dist/preprocessor/Manifest.spec.js +0 -105
- package/dist/preprocessor/Manifest.spec.js.map +0 -1
- package/dist/preprocessor/Preprocessor.d.ts +0 -60
- package/dist/preprocessor/Preprocessor.js +0 -156
- package/dist/preprocessor/Preprocessor.js.map +0 -1
- package/dist/preprocessor/Preprocessor.spec.d.ts +0 -1
- package/dist/preprocessor/Preprocessor.spec.js +0 -152
- package/dist/preprocessor/Preprocessor.spec.js.map +0 -1
- package/dist/preprocessor/PreprocessorParser.d.ts +0 -61
- package/dist/preprocessor/PreprocessorParser.js +0 -194
- package/dist/preprocessor/PreprocessorParser.js.map +0 -1
- package/dist/preprocessor/PreprocessorParser.spec.d.ts +0 -1
- package/dist/preprocessor/PreprocessorParser.spec.js +0 -116
- package/dist/preprocessor/PreprocessorParser.spec.js.map +0 -1
- package/dist/preprocessor/index.d.ts +0 -3
- package/dist/preprocessor/index.js +0 -16
- package/dist/preprocessor/index.js.map +0 -1
- package/dist/types/ArrayType.spec.d.ts +0 -1
- package/dist/types/ArrayType.spec.js +0 -30
- package/dist/types/ArrayType.spec.js.map +0 -1
- package/dist/types/BooleanType.spec.d.ts +0 -1
- package/dist/types/BooleanType.spec.js +0 -12
- package/dist/types/BooleanType.spec.js.map +0 -1
- package/dist/types/CustomType.d.ts +0 -10
- package/dist/types/CustomType.js +0 -35
- package/dist/types/CustomType.js.map +0 -1
- package/dist/types/DoubleType.spec.d.ts +0 -1
- package/dist/types/DoubleType.spec.js +0 -12
- package/dist/types/DoubleType.spec.js.map +0 -1
- package/dist/types/DynamicType.spec.d.ts +0 -1
- package/dist/types/DynamicType.spec.js +0 -12
- package/dist/types/DynamicType.spec.js.map +0 -1
- package/dist/types/FloatType.spec.d.ts +0 -1
- package/dist/types/FloatType.spec.js +0 -12
- package/dist/types/FloatType.spec.js.map +0 -1
- package/dist/types/FunctionType.spec.d.ts +0 -1
- package/dist/types/FunctionType.spec.js +0 -29
- package/dist/types/FunctionType.spec.js.map +0 -1
- package/dist/types/IntegerType.spec.d.ts +0 -1
- package/dist/types/IntegerType.spec.js +0 -12
- package/dist/types/IntegerType.spec.js.map +0 -1
- package/dist/types/InvalidType.spec.d.ts +0 -1
- package/dist/types/InvalidType.spec.js +0 -12
- package/dist/types/InvalidType.spec.js.map +0 -1
- package/dist/types/LazyType.d.ts +0 -15
- package/dist/types/LazyType.js +0 -32
- package/dist/types/LazyType.js.map +0 -1
- package/dist/types/LongIntegerType.spec.d.ts +0 -1
- package/dist/types/LongIntegerType.spec.js +0 -12
- package/dist/types/LongIntegerType.spec.js.map +0 -1
- package/dist/types/ObjectType.spec.d.ts +0 -1
- package/dist/types/ObjectType.spec.js +0 -12
- package/dist/types/ObjectType.spec.js.map +0 -1
- package/dist/types/StringType.spec.d.ts +0 -1
- package/dist/types/StringType.spec.js +0 -12
- package/dist/types/StringType.spec.js.map +0 -1
- package/dist/types/VoidType.spec.d.ts +0 -1
- package/dist/types/VoidType.spec.js +0 -12
- package/dist/types/VoidType.spec.js.map +0 -1
- /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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"}
|
package/dist/types/VoidType.d.ts
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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
|
-
|
|
12
|
+
isEqual(targetType: BscType): boolean;
|
|
13
|
+
getMemberType(memberName: string, options: GetTypeOptions): DynamicType;
|
|
8
14
|
}
|
package/dist/types/VoidType.js
CHANGED
|
@@ -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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
11
|
-
return
|
|
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
|
-
|
|
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,
|
|
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
|