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.
- package/CHANGELOG.md +585 -218
- package/README.md +45 -139
- package/bsconfig.schema.json +41 -0
- 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 +25 -0
- package/dist/AstValidationSegmenter.js +152 -0
- package/dist/AstValidationSegmenter.js.map +1 -0
- package/dist/BsConfig.d.ts +39 -4
- package/dist/BusyStatusTracker.d.ts +31 -0
- package/dist/BusyStatusTracker.js +83 -0
- package/dist/BusyStatusTracker.js.map +1 -0
- package/dist/Cache.js +3 -3
- 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 +3 -3
- package/dist/CodeActionUtil.js.map +1 -1
- package/dist/CommentFlagProcessor.d.ts +3 -2
- package/dist/CommentFlagProcessor.js +5 -4
- package/dist/CommentFlagProcessor.js.map +1 -1
- package/dist/DependencyGraph.d.ts +3 -2
- package/dist/DependencyGraph.js +11 -10
- package/dist/DependencyGraph.js.map +1 -1
- package/dist/DiagnosticCollection.js +9 -5
- package/dist/DiagnosticCollection.js.map +1 -1
- package/dist/DiagnosticFilterer.d.ts +1 -0
- package/dist/DiagnosticFilterer.js +5 -3
- package/dist/DiagnosticFilterer.js.map +1 -1
- package/dist/DiagnosticMessages.d.ts +79 -15
- package/dist/DiagnosticMessages.js +134 -21
- package/dist/DiagnosticMessages.js.map +1 -1
- package/dist/DiagnosticSeverityAdjuster.d.ts +7 -0
- package/dist/DiagnosticSeverityAdjuster.js +41 -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 +23 -11
- package/dist/LanguageServer.js +222 -87
- package/dist/LanguageServer.js.map +1 -1
- package/dist/Logger.d.ts +3 -2
- package/dist/Logger.js +11 -3
- package/dist/Logger.js.map +1 -1
- package/dist/PluginInterface.d.ts +21 -3
- package/dist/PluginInterface.js +74 -6
- package/dist/PluginInterface.js.map +1 -1
- package/dist/Program.d.ts +162 -81
- package/dist/Program.js +903 -732
- package/dist/Program.js.map +1 -1
- package/dist/ProgramBuilder.d.ts +22 -12
- package/dist/ProgramBuilder.js +132 -104
- package/dist/ProgramBuilder.js.map +1 -1
- package/dist/Scope.d.ts +95 -134
- package/dist/Scope.js +477 -551
- package/dist/Scope.js.map +1 -1
- package/dist/Stopwatch.js +1 -1
- package/dist/Stopwatch.js.map +1 -1
- package/dist/SymbolTable.d.ts +95 -29
- package/dist/SymbolTable.js +256 -102
- package/dist/SymbolTable.js.map +1 -1
- 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 +4 -6
- package/dist/XmlScope.js +74 -68
- package/dist/XmlScope.js.map +1 -1
- package/dist/astUtils/CachedLookups.d.ts +48 -0
- package/dist/astUtils/CachedLookups.js +323 -0
- package/dist/astUtils/CachedLookups.js.map +1 -0
- package/dist/astUtils/{AstEditor.d.ts → Editor.d.ts} +9 -5
- package/dist/astUtils/{AstEditor.js → Editor.js} +10 -4
- package/dist/astUtils/Editor.js.map +1 -0
- package/dist/astUtils/{AstEditor.spec.js → Editor.spec.js} +68 -64
- package/dist/astUtils/Editor.spec.js.map +1 -0
- package/dist/astUtils/creators.d.ts +10 -10
- package/dist/astUtils/creators.js +26 -16
- package/dist/astUtils/creators.js.map +1 -1
- package/dist/astUtils/creators.spec.js +5 -5
- package/dist/astUtils/creators.spec.js.map +1 -1
- package/dist/astUtils/reflection.d.ts +132 -100
- package/dist/astUtils/reflection.js +225 -166
- package/dist/astUtils/reflection.js.map +1 -1
- package/dist/astUtils/reflection.spec.js +208 -126
- package/dist/astUtils/reflection.spec.js.map +1 -1
- package/dist/astUtils/stackedVisitor.spec.js +12 -12
- package/dist/astUtils/stackedVisitor.spec.js.map +1 -1
- package/dist/astUtils/visitors.d.ts +54 -35
- package/dist/astUtils/visitors.js +29 -3
- package/dist/astUtils/visitors.js.map +1 -1
- package/dist/astUtils/visitors.spec.js +178 -33
- package/dist/astUtils/visitors.spec.js.map +1 -1
- package/dist/astUtils/xml.d.ts +9 -9
- package/dist/astUtils/xml.js +9 -9
- package/dist/astUtils/xml.js.map +1 -1
- package/dist/bscPlugin/BscPlugin.d.ts +12 -2
- package/dist/bscPlugin/BscPlugin.js +41 -3
- package/dist/bscPlugin/BscPlugin.js.map +1 -1
- package/dist/bscPlugin/CallExpressionInfo.d.ts +36 -0
- package/dist/bscPlugin/CallExpressionInfo.js +131 -0
- package/dist/bscPlugin/CallExpressionInfo.js.map +1 -0
- package/dist/bscPlugin/FileWriter.d.ts +6 -0
- package/dist/bscPlugin/FileWriter.js +24 -0
- package/dist/bscPlugin/FileWriter.js.map +1 -0
- package/dist/bscPlugin/SignatureHelpUtil.d.ts +10 -0
- package/dist/bscPlugin/SignatureHelpUtil.js +135 -0
- package/dist/bscPlugin/SignatureHelpUtil.js.map +1 -0
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.d.ts +1 -1
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +21 -12
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +86 -12
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +57 -0
- package/dist/bscPlugin/completions/CompletionsProcessor.js +544 -0
- package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -0
- package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +1909 -0
- package/dist/bscPlugin/completions/CompletionsProcessor.spec.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 +17 -0
- package/dist/bscPlugin/hover/HoverProcessor.js +188 -0
- package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -0
- package/dist/bscPlugin/hover/HoverProcessor.spec.js +513 -0
- package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -0
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +3 -1
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +102 -29
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +167 -6
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/serialize/BslibInjector.spec.d.ts +1 -0
- package/dist/bscPlugin/serialize/BslibInjector.spec.js +19 -0
- package/dist/bscPlugin/serialize/BslibInjector.spec.js.map +1 -0
- package/dist/bscPlugin/serialize/BslibManager.d.ts +9 -0
- package/dist/bscPlugin/serialize/BslibManager.js +40 -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 +72 -0
- package/dist/bscPlugin/serialize/FileSerializer.js.map +1 -0
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.d.ts +16 -0
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js +123 -0
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +1 -0
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.d.ts +1 -0
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js +41 -0
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.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/BrsFileValidator.d.ts +22 -1
- package/dist/bscPlugin/validation/BrsFileValidator.js +316 -29
- package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
- package/dist/bscPlugin/validation/BrsFileValidator.spec.d.ts +1 -0
- package/dist/bscPlugin/validation/BrsFileValidator.spec.js +264 -0
- package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +1 -0
- package/dist/bscPlugin/validation/ProgramValidator.d.ts +10 -0
- package/dist/bscPlugin/validation/ProgramValidator.js +32 -0
- package/dist/bscPlugin/validation/ProgramValidator.js.map +1 -0
- package/dist/bscPlugin/validation/ScopeValidator.d.ts +56 -8
- package/dist/bscPlugin/validation/ScopeValidator.js +514 -116
- package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.spec.d.ts +1 -0
- package/dist/bscPlugin/validation/ScopeValidator.spec.js +2454 -0
- package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -0
- package/dist/bscPlugin/validation/XmlFileValidator.d.ts +8 -0
- package/dist/bscPlugin/validation/XmlFileValidator.js +44 -0
- package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -0
- package/dist/cli.js +107 -8
- package/dist/cli.js.map +1 -1
- package/dist/deferred.d.ts +3 -3
- package/dist/deferred.js.map +1 -1
- package/dist/diagnosticUtils.d.ts +8 -2
- package/dist/diagnosticUtils.js +47 -17
- package/dist/diagnosticUtils.js.map +1 -1
- package/dist/examples/plugins/removePrint.js +8 -10
- package/dist/examples/plugins/removePrint.js.map +1 -1
- package/dist/files/AssetFile.d.ts +26 -0
- package/dist/files/AssetFile.js +26 -0
- package/dist/files/AssetFile.js.map +1 -0
- package/dist/files/BrsFile.Class.spec.js +529 -486
- package/dist/files/BrsFile.Class.spec.js.map +1 -1
- package/dist/files/BrsFile.d.ts +124 -112
- package/dist/files/BrsFile.js +819 -1131
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +1869 -1277
- package/dist/files/BrsFile.spec.js.map +1 -1
- package/dist/files/BscFile.d.ts +104 -0
- package/dist/files/BscFile.js +16 -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 +20 -0
- package/dist/files/LazyFileData.js +54 -0
- package/dist/files/LazyFileData.js.map +1 -0
- package/dist/files/LazyFileData.spec.d.ts +1 -0
- package/dist/files/LazyFileData.spec.js +27 -0
- package/dist/files/LazyFileData.spec.js.map +1 -0
- package/dist/files/XmlFile.d.ts +70 -32
- package/dist/files/XmlFile.js +106 -117
- package/dist/files/XmlFile.js.map +1 -1
- package/dist/files/XmlFile.spec.js +325 -262
- package/dist/files/XmlFile.spec.js.map +1 -1
- package/dist/files/tests/imports.spec.js +49 -41
- package/dist/files/tests/imports.spec.js.map +1 -1
- package/dist/files/tests/optionalChaning.spec.js +104 -40
- package/dist/files/tests/optionalChaning.spec.js.map +1 -1
- package/dist/globalCallables.js +16 -18
- package/dist/globalCallables.js.map +1 -1
- package/dist/index.d.ts +13 -2
- package/dist/index.js +15 -2
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +440 -150
- package/dist/interfaces.js +27 -0
- package/dist/interfaces.js.map +1 -1
- package/dist/lexer/Character.spec.js +5 -5
- package/dist/lexer/Character.spec.js.map +1 -1
- package/dist/lexer/Lexer.d.ts +12 -5
- package/dist/lexer/Lexer.js +28 -13
- package/dist/lexer/Lexer.js.map +1 -1
- package/dist/lexer/Lexer.spec.js +187 -134
- package/dist/lexer/Lexer.spec.js.map +1 -1
- package/dist/lexer/Token.d.ts +9 -1
- package/dist/lexer/Token.js +9 -1
- package/dist/lexer/Token.js.map +1 -1
- package/dist/lexer/TokenKind.d.ts +9 -0
- package/dist/lexer/TokenKind.js +30 -5
- package/dist/lexer/TokenKind.js.map +1 -1
- package/dist/parser/AstNode.d.ts +162 -0
- package/dist/parser/AstNode.js +225 -0
- package/dist/parser/AstNode.js.map +1 -0
- package/dist/parser/AstNode.spec.d.ts +1 -0
- package/dist/parser/AstNode.spec.js +165 -0
- package/dist/parser/AstNode.spec.js.map +1 -0
- package/dist/parser/BrsTranspileState.d.ts +4 -7
- package/dist/parser/BrsTranspileState.js +4 -12
- package/dist/parser/BrsTranspileState.js.map +1 -1
- package/dist/parser/Expression.d.ts +126 -167
- package/dist/parser/Expression.js +524 -394
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.Class.spec.js +152 -146
- package/dist/parser/Parser.Class.spec.js.map +1 -1
- package/dist/parser/Parser.d.ts +45 -196
- package/dist/parser/Parser.js +470 -926
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/Parser.spec.d.ts +3 -1
- package/dist/parser/Parser.spec.js +1034 -805
- package/dist/parser/Parser.spec.js.map +1 -1
- package/dist/parser/SGParser.d.ts +9 -8
- package/dist/parser/SGParser.js +10 -8
- package/dist/parser/SGParser.js.map +1 -1
- package/dist/parser/SGParser.spec.js +27 -38
- package/dist/parser/SGParser.spec.js.map +1 -1
- package/dist/parser/SGTypes.d.ts +98 -35
- package/dist/parser/SGTypes.js +169 -99
- package/dist/parser/SGTypes.js.map +1 -1
- package/dist/parser/Statement.d.ts +208 -122
- package/dist/parser/Statement.js +599 -364
- package/dist/parser/Statement.js.map +1 -1
- package/dist/parser/Statement.spec.js +45 -21
- package/dist/parser/Statement.spec.js.map +1 -1
- package/dist/parser/TranspileState.d.ts +1 -1
- package/dist/parser/TranspileState.js +7 -12
- package/dist/parser/TranspileState.js.map +1 -1
- package/dist/parser/tests/Parser.spec.js +3 -2
- package/dist/parser/tests/Parser.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/For.spec.js +33 -23
- package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/ForEach.spec.js +25 -20
- package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/If.spec.js +96 -94
- package/dist/parser/tests/controlFlow/If.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/While.spec.js +22 -16
- package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
- package/dist/parser/tests/expression/Additive.spec.js +8 -8
- package/dist/parser/tests/expression/Additive.spec.js.map +1 -1
- package/dist/parser/tests/expression/ArrayLiterals.spec.js +58 -21
- package/dist/parser/tests/expression/ArrayLiterals.spec.js.map +1 -1
- package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +61 -20
- package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +1 -1
- package/dist/parser/tests/expression/Boolean.spec.js +8 -8
- package/dist/parser/tests/expression/Boolean.spec.js.map +1 -1
- package/dist/parser/tests/expression/Call.spec.js +129 -21
- package/dist/parser/tests/expression/Call.spec.js.map +1 -1
- package/dist/parser/tests/expression/Exponential.spec.js +5 -5
- package/dist/parser/tests/expression/Exponential.spec.js.map +1 -1
- package/dist/parser/tests/expression/Function.spec.js +36 -36
- package/dist/parser/tests/expression/Function.spec.js.map +1 -1
- package/dist/parser/tests/expression/Indexing.spec.js +67 -22
- package/dist/parser/tests/expression/Indexing.spec.js.map +1 -1
- package/dist/parser/tests/expression/Multiplicative.spec.js +9 -9
- package/dist/parser/tests/expression/Multiplicative.spec.js.map +1 -1
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +123 -81
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/PrefixUnary.spec.js +12 -12
- package/dist/parser/tests/expression/PrefixUnary.spec.js.map +1 -1
- package/dist/parser/tests/expression/Primary.spec.js +12 -12
- package/dist/parser/tests/expression/Primary.spec.js.map +1 -1
- package/dist/parser/tests/expression/RegexLiteralExpression.spec.js +10 -10
- package/dist/parser/tests/expression/RegexLiteralExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/Relational.spec.js +13 -13
- package/dist/parser/tests/expression/Relational.spec.js.map +1 -1
- package/dist/parser/tests/expression/SourceLiteralExpression.spec.js +24 -24
- package/dist/parser/tests/expression/SourceLiteralExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/TemplateStringExpression.spec.js +221 -81
- package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/TernaryExpression.spec.js +287 -105
- package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/TypeExpression.spec.d.ts +1 -0
- package/dist/parser/tests/expression/TypeExpression.spec.js +127 -0
- package/dist/parser/tests/expression/TypeExpression.spec.js.map +1 -0
- package/dist/parser/tests/expression/UnaryExpression.spec.d.ts +1 -0
- package/dist/parser/tests/expression/UnaryExpression.spec.js +52 -0
- package/dist/parser/tests/expression/UnaryExpression.spec.js.map +1 -0
- package/dist/parser/tests/statement/AssignmentOperators.spec.js +15 -15
- package/dist/parser/tests/statement/AssignmentOperators.spec.js.map +1 -1
- package/dist/parser/tests/statement/ConstStatement.spec.d.ts +1 -0
- package/dist/parser/tests/statement/ConstStatement.spec.js +262 -0
- package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -0
- package/dist/parser/tests/statement/Continue.spec.d.ts +1 -0
- package/dist/parser/tests/statement/Continue.spec.js +119 -0
- package/dist/parser/tests/statement/Continue.spec.js.map +1 -0
- package/dist/parser/tests/statement/Declaration.spec.js +19 -19
- package/dist/parser/tests/statement/Declaration.spec.js.map +1 -1
- package/dist/parser/tests/statement/Dim.spec.js +22 -22
- package/dist/parser/tests/statement/Dim.spec.js.map +1 -1
- package/dist/parser/tests/statement/Enum.spec.js +111 -300
- package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
- package/dist/parser/tests/statement/For.spec.js +9 -10
- package/dist/parser/tests/statement/For.spec.js.map +1 -1
- package/dist/parser/tests/statement/ForEach.spec.js +8 -9
- package/dist/parser/tests/statement/ForEach.spec.js.map +1 -1
- package/dist/parser/tests/statement/Function.spec.js +44 -35
- package/dist/parser/tests/statement/Function.spec.js.map +1 -1
- package/dist/parser/tests/statement/Goto.spec.js +5 -5
- package/dist/parser/tests/statement/Goto.spec.js.map +1 -1
- package/dist/parser/tests/statement/Increment.spec.js +20 -20
- package/dist/parser/tests/statement/Increment.spec.js.map +1 -1
- package/dist/parser/tests/statement/InterfaceStatement.spec.js +30 -196
- package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/LibraryStatement.spec.js +11 -11
- package/dist/parser/tests/statement/LibraryStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Misc.spec.js +16 -78
- package/dist/parser/tests/statement/Misc.spec.js.map +1 -1
- package/dist/parser/tests/statement/PrintStatement.spec.js +107 -90
- package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/ReturnStatement.spec.js +14 -12
- package/dist/parser/tests/statement/ReturnStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Set.spec.js +48 -35
- package/dist/parser/tests/statement/Set.spec.js.map +1 -1
- package/dist/parser/tests/statement/Stop.spec.js +6 -6
- package/dist/parser/tests/statement/Stop.spec.js.map +1 -1
- package/dist/parser/tests/statement/Throw.spec.js +6 -6
- package/dist/parser/tests/statement/Throw.spec.js.map +1 -1
- package/dist/parser/tests/statement/TryCatch.spec.js +18 -16
- package/dist/parser/tests/statement/TryCatch.spec.js.map +1 -1
- package/dist/preprocessor/Manifest.d.ts +1 -1
- package/dist/preprocessor/Manifest.js +3 -3
- package/dist/preprocessor/Manifest.js.map +1 -1
- package/dist/preprocessor/Manifest.spec.js +8 -8
- package/dist/preprocessor/Manifest.spec.js.map +1 -1
- package/dist/preprocessor/Preprocessor.d.ts +5 -6
- package/dist/preprocessor/Preprocessor.js +15 -11
- package/dist/preprocessor/Preprocessor.js.map +1 -1
- package/dist/preprocessor/Preprocessor.spec.js +25 -25
- package/dist/preprocessor/Preprocessor.spec.js.map +1 -1
- package/dist/preprocessor/PreprocessorParser.d.ts +1 -1
- package/dist/preprocessor/PreprocessorParser.js +7 -1
- package/dist/preprocessor/PreprocessorParser.js.map +1 -1
- package/dist/preprocessor/PreprocessorParser.spec.js +13 -13
- package/dist/preprocessor/PreprocessorParser.spec.js.map +1 -1
- package/dist/roku-types/data.json +6544 -10519
- package/dist/roku-types/index.d.ts +662 -1934
- package/dist/types/ArrayType.d.ts +10 -9
- package/dist/types/ArrayType.js +65 -60
- package/dist/types/ArrayType.js.map +1 -1
- package/dist/types/ArrayType.spec.js +36 -68
- package/dist/types/ArrayType.spec.js.map +1 -1
- package/dist/types/AssociativeArrayType.d.ts +11 -0
- package/dist/types/AssociativeArrayType.js +52 -0
- package/dist/types/AssociativeArrayType.js.map +1 -0
- package/dist/types/BaseFunctionType.d.ts +9 -0
- package/dist/types/BaseFunctionType.js +25 -0
- package/dist/types/BaseFunctionType.js.map +1 -0
- package/dist/types/BooleanType.d.ts +8 -5
- package/dist/types/BooleanType.js +14 -7
- package/dist/types/BooleanType.js.map +1 -1
- package/dist/types/BooleanType.spec.js +10 -6
- package/dist/types/BooleanType.spec.js.map +1 -1
- package/dist/types/BscType.d.ts +32 -21
- package/dist/types/BscType.js +118 -21
- package/dist/types/BscType.js.map +1 -1
- package/dist/types/BscTypeKind.d.ts +25 -0
- package/dist/types/BscTypeKind.js +30 -0
- package/dist/types/BscTypeKind.js.map +1 -0
- package/dist/types/BuiltInInterfaceAdder.d.ts +23 -0
- package/dist/types/BuiltInInterfaceAdder.js +164 -0
- package/dist/types/BuiltInInterfaceAdder.js.map +1 -0
- package/dist/types/BuiltInInterfaceAdder.spec.d.ts +1 -0
- package/dist/types/BuiltInInterfaceAdder.spec.js +116 -0
- package/dist/types/BuiltInInterfaceAdder.spec.js.map +1 -0
- package/dist/types/ClassType.d.ts +17 -0
- package/dist/types/ClassType.js +58 -0
- package/dist/types/ClassType.js.map +1 -0
- package/dist/types/ClassType.spec.d.ts +1 -0
- package/dist/types/ClassType.spec.js +77 -0
- package/dist/types/ClassType.spec.js.map +1 -0
- package/dist/types/ComponentType.d.ts +26 -0
- package/dist/types/ComponentType.js +83 -0
- package/dist/types/ComponentType.js.map +1 -0
- package/dist/types/DoubleType.d.ts +8 -5
- package/dist/types/DoubleType.js +18 -16
- package/dist/types/DoubleType.js.map +1 -1
- package/dist/types/DoubleType.spec.js +12 -6
- package/dist/types/DoubleType.spec.js.map +1 -1
- package/dist/types/DynamicType.d.ts +10 -5
- package/dist/types/DynamicType.js +16 -4
- package/dist/types/DynamicType.js.map +1 -1
- package/dist/types/DynamicType.spec.js +16 -5
- package/dist/types/DynamicType.spec.js.map +1 -1
- package/dist/types/EnumType.d.ts +30 -12
- package/dist/types/EnumType.js +43 -17
- package/dist/types/EnumType.js.map +1 -1
- package/dist/types/EnumType.spec.d.ts +1 -0
- package/dist/types/EnumType.spec.js +33 -0
- package/dist/types/EnumType.spec.js.map +1 -0
- package/dist/types/FloatType.d.ts +8 -5
- package/dist/types/FloatType.js +18 -16
- package/dist/types/FloatType.js.map +1 -1
- package/dist/types/FloatType.spec.js +4 -6
- package/dist/types/FloatType.spec.js.map +1 -1
- package/dist/types/FunctionType.d.ts +13 -8
- package/dist/types/FunctionType.js +30 -14
- package/dist/types/FunctionType.js.map +1 -1
- package/dist/types/InheritableType.d.ts +28 -0
- package/dist/types/InheritableType.js +152 -0
- package/dist/types/InheritableType.js.map +1 -0
- package/dist/types/IntegerType.d.ts +8 -5
- package/dist/types/IntegerType.js +18 -16
- package/dist/types/IntegerType.js.map +1 -1
- package/dist/types/IntegerType.spec.js +8 -6
- package/dist/types/IntegerType.spec.js.map +1 -1
- package/dist/types/InterfaceType.d.ts +12 -13
- package/dist/types/InterfaceType.js +20 -48
- package/dist/types/InterfaceType.js.map +1 -1
- package/dist/types/InterfaceType.spec.js +90 -56
- package/dist/types/InterfaceType.spec.js.map +1 -1
- package/dist/types/InvalidType.d.ts +7 -5
- package/dist/types/InvalidType.js +13 -7
- package/dist/types/InvalidType.js.map +1 -1
- package/dist/types/InvalidType.spec.js +8 -6
- package/dist/types/InvalidType.spec.js.map +1 -1
- package/dist/types/LongIntegerType.d.ts +8 -5
- package/dist/types/LongIntegerType.js +17 -15
- package/dist/types/LongIntegerType.js.map +1 -1
- package/dist/types/LongIntegerType.spec.js +10 -6
- package/dist/types/LongIntegerType.spec.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 +9 -8
- package/dist/types/ObjectType.js +21 -11
- package/dist/types/ObjectType.js.map +1 -1
- package/dist/types/ObjectType.spec.js +3 -3
- package/dist/types/ObjectType.spec.js.map +1 -1
- package/dist/types/ReferenceType.d.ts +63 -0
- package/dist/types/ReferenceType.js +423 -0
- package/dist/types/ReferenceType.js.map +1 -0
- package/dist/types/ReferenceType.spec.d.ts +1 -0
- package/dist/types/ReferenceType.spec.js +137 -0
- package/dist/types/ReferenceType.spec.js.map +1 -0
- package/dist/types/StringType.d.ts +11 -5
- package/dist/types/StringType.js +18 -7
- package/dist/types/StringType.js.map +1 -1
- package/dist/types/StringType.spec.js +3 -5
- package/dist/types/StringType.spec.js.map +1 -1
- package/dist/types/TypedFunctionType.d.ts +22 -17
- package/dist/types/TypedFunctionType.js +78 -60
- package/dist/types/TypedFunctionType.js.map +1 -1
- package/dist/types/TypedFunctionType.spec.js +105 -20
- package/dist/types/TypedFunctionType.spec.js.map +1 -1
- package/dist/types/UninitializedType.d.ts +8 -6
- package/dist/types/UninitializedType.js +13 -7
- package/dist/types/UninitializedType.js.map +1 -1
- package/dist/types/UnionType.d.ts +20 -0
- package/dist/types/UnionType.js +123 -0
- package/dist/types/UnionType.js.map +1 -0
- package/dist/types/UnionType.spec.d.ts +1 -0
- package/dist/types/UnionType.spec.js +130 -0
- package/dist/types/UnionType.spec.js.map +1 -0
- package/dist/types/VoidType.d.ts +8 -5
- package/dist/types/VoidType.js +14 -7
- package/dist/types/VoidType.js.map +1 -1
- package/dist/types/VoidType.spec.js +3 -3
- package/dist/types/VoidType.spec.js.map +1 -1
- package/dist/types/helper.spec.d.ts +1 -0
- package/dist/types/helper.spec.js +145 -0
- package/dist/types/helper.spec.js.map +1 -0
- package/dist/types/helpers.d.ts +19 -37
- package/dist/types/helpers.js +159 -99
- package/dist/types/helpers.js.map +1 -1
- 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/util.d.ts +167 -131
- package/dist/util.js +890 -350
- package/dist/util.js.map +1 -1
- package/dist/validators/ClassValidator.d.ts +7 -25
- package/dist/validators/ClassValidator.js +103 -194
- package/dist/validators/ClassValidator.js.map +1 -1
- package/package.json +165 -149
- package/dist/astUtils/AstEditor.js.map +0 -1
- package/dist/astUtils/AstEditor.spec.js.map +0 -1
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.d.ts +0 -8
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js +0 -40
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +0 -1
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js +0 -32
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js.map +0 -1
- package/dist/parser/SGTypes.spec.js +0 -351
- package/dist/parser/SGTypes.spec.js.map +0 -1
- package/dist/types/CustomType.d.ts +0 -12
- package/dist/types/CustomType.js +0 -44
- package/dist/types/CustomType.js.map +0 -1
- package/dist/types/LazyType.d.ts +0 -16
- package/dist/types/LazyType.js +0 -44
- package/dist/types/LazyType.js.map +0 -1
- /package/dist/astUtils/{AstEditor.spec.d.ts → Editor.spec.d.ts} +0 -0
- /package/dist/bscPlugin/{transpile/BrsFilePreTranspileProcessor.spec.d.ts → completions/CompletionsProcessor.spec.d.ts} +0 -0
- /package/dist/{parser/SGTypes.spec.d.ts → bscPlugin/hover/HoverProcessor.spec.d.ts} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const
|
|
3
|
+
const chai_config_spec_1 = require("../../../chai-config.spec");
|
|
4
4
|
const Expression_1 = require("../../Expression");
|
|
5
5
|
const DiagnosticMessages_1 = require("../../../DiagnosticMessages");
|
|
6
6
|
const testHelpers_spec_1 = require("../../../testHelpers.spec");
|
|
@@ -13,13 +13,13 @@ const vscode_languageserver_protocol_1 = require("vscode-languageserver-protocol
|
|
|
13
13
|
const visitors_1 = require("../../../astUtils/visitors");
|
|
14
14
|
const reflection_1 = require("../../../astUtils/reflection");
|
|
15
15
|
const vscode_uri_1 = require("vscode-uri");
|
|
16
|
+
const testHelpers_spec_2 = require("../../../testHelpers.spec");
|
|
16
17
|
const sinon = (0, sinon_1.createSandbox)();
|
|
17
18
|
describe('EnumStatement', () => {
|
|
18
|
-
let rootDir = (0, util_1.standardizePath) `${process.cwd()}/.tmp/rootDir`;
|
|
19
19
|
let program;
|
|
20
|
-
let testTranspile = (0, testHelpers_spec_1.getTestTranspile)(() => [program, rootDir]);
|
|
20
|
+
let testTranspile = (0, testHelpers_spec_1.getTestTranspile)(() => [program, testHelpers_spec_2.rootDir]);
|
|
21
21
|
beforeEach(() => {
|
|
22
|
-
program = new Program_1.Program({ rootDir: rootDir, sourceMap: true });
|
|
22
|
+
program = new Program_1.Program({ rootDir: testHelpers_spec_2.rootDir, sourceMap: true });
|
|
23
23
|
});
|
|
24
24
|
afterEach(() => {
|
|
25
25
|
sinon.restore();
|
|
@@ -31,7 +31,7 @@ describe('EnumStatement', () => {
|
|
|
31
31
|
end enum
|
|
32
32
|
`, { mode: Parser_1.ParseMode.BrighterScript });
|
|
33
33
|
(0, testHelpers_spec_1.expectZeroDiagnostics)(parser);
|
|
34
|
-
(0,
|
|
34
|
+
(0, chai_config_spec_1.expect)(parser.ast.statements[0]).to.be.instanceOf(Statement_1.EnumStatement);
|
|
35
35
|
});
|
|
36
36
|
it('supports annotations above', () => {
|
|
37
37
|
const parser = Parser_1.Parser.parse(`
|
|
@@ -40,7 +40,7 @@ describe('EnumStatement', () => {
|
|
|
40
40
|
end enum
|
|
41
41
|
`, { mode: Parser_1.ParseMode.BrighterScript });
|
|
42
42
|
(0, testHelpers_spec_1.expectZeroDiagnostics)(parser);
|
|
43
|
-
(0,
|
|
43
|
+
(0, chai_config_spec_1.expect)(parser.ast.statements[0].annotations[0].name).to.eql('someAnnotation');
|
|
44
44
|
});
|
|
45
45
|
it('constructs when missing enum name', () => {
|
|
46
46
|
const parser = Parser_1.Parser.parse(`
|
|
@@ -50,7 +50,7 @@ describe('EnumStatement', () => {
|
|
|
50
50
|
(0, testHelpers_spec_1.expectDiagnostics)(parser, [
|
|
51
51
|
DiagnosticMessages_1.DiagnosticMessages.expectedIdentifier()
|
|
52
52
|
]);
|
|
53
|
-
(0,
|
|
53
|
+
(0, chai_config_spec_1.expect)(parser.ast.statements[0]).to.be.instanceOf(Statement_1.EnumStatement);
|
|
54
54
|
});
|
|
55
55
|
it('collects uninitialized members', () => {
|
|
56
56
|
const parser = Parser_1.Parser.parse(`
|
|
@@ -62,7 +62,7 @@ describe('EnumStatement', () => {
|
|
|
62
62
|
end enum
|
|
63
63
|
`, { mode: Parser_1.ParseMode.BrighterScript });
|
|
64
64
|
(0, testHelpers_spec_1.expectZeroDiagnostics)(parser);
|
|
65
|
-
(0,
|
|
65
|
+
(0, chai_config_spec_1.expect)(parser.ast.statements[0].getMembers().map(x => x.tokens.name.text)).to.eql([
|
|
66
66
|
'up',
|
|
67
67
|
'down',
|
|
68
68
|
'left',
|
|
@@ -86,7 +86,7 @@ describe('EnumStatement', () => {
|
|
|
86
86
|
Expression_1.LiteralExpression,
|
|
87
87
|
Expression_1.LiteralExpression
|
|
88
88
|
]);
|
|
89
|
-
(0,
|
|
89
|
+
(0, chai_config_spec_1.expect)(values.map(x => x.token.text)).to.eql([
|
|
90
90
|
'1',
|
|
91
91
|
'2',
|
|
92
92
|
'3',
|
|
@@ -110,7 +110,7 @@ describe('EnumStatement', () => {
|
|
|
110
110
|
Expression_1.LiteralExpression,
|
|
111
111
|
Expression_1.LiteralExpression
|
|
112
112
|
]);
|
|
113
|
-
(0,
|
|
113
|
+
(0, chai_config_spec_1.expect)(values.map(x => x.token.text)).to.eql([
|
|
114
114
|
'"u"',
|
|
115
115
|
'"d"',
|
|
116
116
|
'"l"',
|
|
@@ -141,8 +141,8 @@ describe('EnumStatement', () => {
|
|
|
141
141
|
end interface
|
|
142
142
|
`, { mode: Parser_1.ParseMode.BrighterScript });
|
|
143
143
|
(0, testHelpers_spec_1.expectZeroDiagnostics)(parser);
|
|
144
|
-
(0,
|
|
145
|
-
(0,
|
|
144
|
+
(0, chai_config_spec_1.expect)(parser.statements[0]).instanceof(Statement_1.EnumStatement);
|
|
145
|
+
(0, chai_config_spec_1.expect)(parser.statements[1]).instanceof(Statement_1.InterfaceStatement);
|
|
146
146
|
});
|
|
147
147
|
it('allows enum at bottom of file', () => {
|
|
148
148
|
const parser = Parser_1.Parser.parse(`
|
|
@@ -155,11 +155,11 @@ describe('EnumStatement', () => {
|
|
|
155
155
|
end enum
|
|
156
156
|
`, { mode: Parser_1.ParseMode.BrighterScript });
|
|
157
157
|
(0, testHelpers_spec_1.expectZeroDiagnostics)(parser);
|
|
158
|
-
(0,
|
|
159
|
-
(0,
|
|
158
|
+
(0, chai_config_spec_1.expect)(parser.statements[0]).instanceof(Statement_1.InterfaceStatement);
|
|
159
|
+
(0, chai_config_spec_1.expect)(parser.statements[1]).instanceof(Statement_1.EnumStatement);
|
|
160
160
|
});
|
|
161
161
|
it('allows enum in namespace', () => {
|
|
162
|
-
const
|
|
162
|
+
const file = program.setFile('source/types.bs', `
|
|
163
163
|
namespace entities
|
|
164
164
|
enum Person
|
|
165
165
|
name
|
|
@@ -169,14 +169,24 @@ describe('EnumStatement', () => {
|
|
|
169
169
|
enum Direction
|
|
170
170
|
up
|
|
171
171
|
end enum
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
(0,
|
|
172
|
+
`);
|
|
173
|
+
program.validate();
|
|
174
|
+
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
175
|
+
(0, chai_config_spec_1.expect)(file.ast.findChildren(reflection_1.isEnumStatement).map(x => x.fullName)).to.eql([
|
|
175
176
|
'entities.Person',
|
|
176
177
|
'Direction'
|
|
177
178
|
]);
|
|
178
179
|
});
|
|
179
180
|
describe('validation', () => {
|
|
181
|
+
it('allows enums named `optional`', () => {
|
|
182
|
+
program.setFile('source/main.bs', `
|
|
183
|
+
enum optional
|
|
184
|
+
thing = 1
|
|
185
|
+
end enum
|
|
186
|
+
`);
|
|
187
|
+
program.validate();
|
|
188
|
+
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
189
|
+
});
|
|
180
190
|
it('catches duplicate enums from same file', () => {
|
|
181
191
|
program.setFile('source/main.bs', `
|
|
182
192
|
enum Direction
|
|
@@ -188,8 +198,8 @@ describe('EnumStatement', () => {
|
|
|
188
198
|
end enum
|
|
189
199
|
`);
|
|
190
200
|
program.validate();
|
|
191
|
-
(0, testHelpers_spec_1.
|
|
192
|
-
location:
|
|
201
|
+
(0, testHelpers_spec_1.expectDiagnosticsIncludes)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.duplicateEnumDeclaration('source', 'Direction')), { relatedInformation: [{
|
|
202
|
+
location: util_1.util.createLocation(vscode_uri_1.URI.file((0, util_1.standardizePath) `${testHelpers_spec_2.rootDir}/source/main.bs`).toString(), util_1.util.createRange(1, 21, 1, 30)),
|
|
193
203
|
message: 'Enum declared here'
|
|
194
204
|
}] })]);
|
|
195
205
|
});
|
|
@@ -205,8 +215,8 @@ describe('EnumStatement', () => {
|
|
|
205
215
|
end enum
|
|
206
216
|
`);
|
|
207
217
|
program.validate();
|
|
208
|
-
(0, testHelpers_spec_1.
|
|
209
|
-
location:
|
|
218
|
+
(0, testHelpers_spec_1.expectDiagnosticsIncludes)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.duplicateEnumDeclaration('source', 'Direction')), { relatedInformation: [{
|
|
219
|
+
location: util_1.util.createLocation(vscode_uri_1.URI.file((0, util_1.standardizePath) `${testHelpers_spec_2.rootDir}/source/lib.bs`).toString(), util_1.util.createRange(1, 21, 1, 30)),
|
|
210
220
|
message: 'Enum declared here'
|
|
211
221
|
}] })]);
|
|
212
222
|
});
|
|
@@ -299,6 +309,16 @@ describe('EnumStatement', () => {
|
|
|
299
309
|
program.validate();
|
|
300
310
|
(0, testHelpers_spec_1.expectDiagnostics)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.enumValueMustBeType('integer')), { range: util_1.util.createRange(2, 33, 2, 35) })]);
|
|
301
311
|
});
|
|
312
|
+
it('considers -1 to be an integer', () => {
|
|
313
|
+
program.setFile('source/main.bs', `
|
|
314
|
+
enum AppConfig
|
|
315
|
+
alpha = 1
|
|
316
|
+
beta = -1
|
|
317
|
+
end enum
|
|
318
|
+
`);
|
|
319
|
+
program.validate();
|
|
320
|
+
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
321
|
+
});
|
|
302
322
|
it('flags missing value for string enum where string is not first item', () => {
|
|
303
323
|
program.setFile('source/main.bs', `
|
|
304
324
|
enum Direction
|
|
@@ -356,9 +376,9 @@ describe('EnumStatement', () => {
|
|
|
356
376
|
walkMode: visitors_1.WalkMode.visitStatements,
|
|
357
377
|
cancel: cancel.token
|
|
358
378
|
});
|
|
359
|
-
(0,
|
|
379
|
+
(0, chai_config_spec_1.expect)(firstEnum).to.exist;
|
|
360
380
|
const values = firstEnum.getMemberValueMap();
|
|
361
|
-
(0,
|
|
381
|
+
(0, chai_config_spec_1.expect)([...values].reduce((prev, [key, value]) => {
|
|
362
382
|
prev[key] = value;
|
|
363
383
|
return prev;
|
|
364
384
|
}, {})).to.eql(expected);
|
|
@@ -412,8 +432,22 @@ describe('EnumStatement', () => {
|
|
|
412
432
|
});
|
|
413
433
|
});
|
|
414
434
|
describe('transpile', () => {
|
|
415
|
-
it('
|
|
416
|
-
testTranspile(`
|
|
435
|
+
it('transpiles negative number', async () => {
|
|
436
|
+
await testTranspile(`
|
|
437
|
+
sub main()
|
|
438
|
+
print Direction.up
|
|
439
|
+
end sub
|
|
440
|
+
enum Direction
|
|
441
|
+
up = -1
|
|
442
|
+
end enum
|
|
443
|
+
`, `
|
|
444
|
+
sub main()
|
|
445
|
+
print -1
|
|
446
|
+
end sub
|
|
447
|
+
`, undefined, undefined, false);
|
|
448
|
+
});
|
|
449
|
+
it('includes original value when no value could be computed', async () => {
|
|
450
|
+
await testTranspile(`
|
|
417
451
|
sub main()
|
|
418
452
|
print Direction.up
|
|
419
453
|
end sub
|
|
@@ -426,8 +460,8 @@ describe('EnumStatement', () => {
|
|
|
426
460
|
end sub
|
|
427
461
|
`, undefined, undefined, false);
|
|
428
462
|
});
|
|
429
|
-
it('writes all literal values as-is (even if there are errors)', () => {
|
|
430
|
-
testTranspile(`
|
|
463
|
+
it('writes all literal values as-is (even if there are errors)', async () => {
|
|
464
|
+
await testTranspile(`
|
|
431
465
|
sub main()
|
|
432
466
|
print Direction.up
|
|
433
467
|
print Direction.down
|
|
@@ -452,8 +486,8 @@ describe('EnumStatement', () => {
|
|
|
452
486
|
end sub
|
|
453
487
|
`, 'trim', undefined, false);
|
|
454
488
|
});
|
|
455
|
-
it('supports default-as-integer', () => {
|
|
456
|
-
testTranspile(`
|
|
489
|
+
it('supports default-as-integer', async () => {
|
|
490
|
+
await testTranspile(`
|
|
457
491
|
enum Direction
|
|
458
492
|
up
|
|
459
493
|
down
|
|
@@ -469,8 +503,8 @@ describe('EnumStatement', () => {
|
|
|
469
503
|
end sub
|
|
470
504
|
`);
|
|
471
505
|
});
|
|
472
|
-
it('supports string enums', () => {
|
|
473
|
-
testTranspile(`
|
|
506
|
+
it('supports string enums', async () => {
|
|
507
|
+
await testTranspile(`
|
|
474
508
|
enum Direction
|
|
475
509
|
up = "up"
|
|
476
510
|
down = "down"
|
|
@@ -486,7 +520,23 @@ describe('EnumStatement', () => {
|
|
|
486
520
|
end sub
|
|
487
521
|
`);
|
|
488
522
|
});
|
|
489
|
-
it('
|
|
523
|
+
it('recognizes namespace-relative enums', () => {
|
|
524
|
+
program.setFile('source/main.bs', `
|
|
525
|
+
namespace MyNamespace
|
|
526
|
+
enum MyEnum
|
|
527
|
+
val1
|
|
528
|
+
val2
|
|
529
|
+
end enum
|
|
530
|
+
|
|
531
|
+
function foo() as MyEnum
|
|
532
|
+
return MyEnum.val1
|
|
533
|
+
end function
|
|
534
|
+
end namespace
|
|
535
|
+
`);
|
|
536
|
+
program.validate();
|
|
537
|
+
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
538
|
+
});
|
|
539
|
+
it('replaces enum values from separate file with literals', async () => {
|
|
490
540
|
program.setFile('source/enum.bs', `
|
|
491
541
|
enum CharacterType
|
|
492
542
|
Human = "Human"
|
|
@@ -499,7 +549,7 @@ describe('EnumStatement', () => {
|
|
|
499
549
|
end enum
|
|
500
550
|
end namespace
|
|
501
551
|
`);
|
|
502
|
-
testTranspile(`
|
|
552
|
+
await testTranspile(`
|
|
503
553
|
sub test()
|
|
504
554
|
print CharacterType.Human
|
|
505
555
|
print CharacterType.Zombie
|
|
@@ -515,8 +565,8 @@ describe('EnumStatement', () => {
|
|
|
515
565
|
end sub
|
|
516
566
|
`);
|
|
517
567
|
});
|
|
518
|
-
it('replaces enums in if statements', () => {
|
|
519
|
-
testTranspile(`
|
|
568
|
+
it('replaces enums in if statements', async () => {
|
|
569
|
+
await testTranspile(`
|
|
520
570
|
enum CharacterType
|
|
521
571
|
zombie = "zombie"
|
|
522
572
|
end enum
|
|
@@ -533,262 +583,8 @@ describe('EnumStatement', () => {
|
|
|
533
583
|
end sub
|
|
534
584
|
`);
|
|
535
585
|
});
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
it('does not crash when completing enum members with unsupported values', () => {
|
|
539
|
-
program.setFile('source/main.bs', `
|
|
540
|
-
sub Main()
|
|
541
|
-
direction.obj
|
|
542
|
-
end sub
|
|
543
|
-
enum Direction
|
|
544
|
-
up
|
|
545
|
-
down
|
|
546
|
-
obj = {}
|
|
547
|
-
end enum
|
|
548
|
-
`);
|
|
549
|
-
// direction.|obj
|
|
550
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(2, 30)), [{
|
|
551
|
-
label: 'up',
|
|
552
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
553
|
-
}, {
|
|
554
|
-
label: 'down',
|
|
555
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
556
|
-
}, {
|
|
557
|
-
label: 'obj',
|
|
558
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
559
|
-
}]);
|
|
560
|
-
});
|
|
561
|
-
it('gets enum statement completions from global enum', () => {
|
|
562
|
-
program.setFile('source/main.bs', `
|
|
563
|
-
sub Main()
|
|
564
|
-
direction.down
|
|
565
|
-
end sub
|
|
566
|
-
enum Direction
|
|
567
|
-
up
|
|
568
|
-
down
|
|
569
|
-
end enum
|
|
570
|
-
`);
|
|
571
|
-
// |direction.down
|
|
572
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(2, 20)), [{
|
|
573
|
-
label: 'Direction',
|
|
574
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.Enum
|
|
575
|
-
}]);
|
|
576
|
-
// dire|ction.down
|
|
577
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(2, 24)), [{
|
|
578
|
-
label: 'Direction',
|
|
579
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.Enum
|
|
580
|
-
}]);
|
|
581
|
-
// direction|.down
|
|
582
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(2, 29)), [{
|
|
583
|
-
label: 'Direction',
|
|
584
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.Enum
|
|
585
|
-
}]);
|
|
586
|
-
});
|
|
587
|
-
it('gets enum member completions from global enum', () => {
|
|
588
|
-
program.setFile('source/main.bs', `
|
|
589
|
-
sub Main()
|
|
590
|
-
direction.down
|
|
591
|
-
end sub
|
|
592
|
-
enum Direction
|
|
593
|
-
up
|
|
594
|
-
down
|
|
595
|
-
end enum
|
|
596
|
-
`);
|
|
597
|
-
// direction.|down
|
|
598
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(2, 30)), [{
|
|
599
|
-
label: 'up',
|
|
600
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
601
|
-
}, {
|
|
602
|
-
label: 'down',
|
|
603
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
604
|
-
}]);
|
|
605
|
-
// direction.do|wn
|
|
606
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(2, 32)), [{
|
|
607
|
-
label: 'up',
|
|
608
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
609
|
-
}, {
|
|
610
|
-
label: 'down',
|
|
611
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
612
|
-
}]);
|
|
613
|
-
// direction.down|
|
|
614
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(2, 34)), [{
|
|
615
|
-
label: 'up',
|
|
616
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
617
|
-
}, {
|
|
618
|
-
label: 'down',
|
|
619
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
620
|
-
}]);
|
|
621
|
-
});
|
|
622
|
-
it('gets enum statement completions from namespaced enum', () => {
|
|
623
|
-
program.setFile('source/main.bs', `
|
|
624
|
-
sub Main()
|
|
625
|
-
enums.direction.down
|
|
626
|
-
end sub
|
|
627
|
-
namespace enums
|
|
628
|
-
enum Direction
|
|
629
|
-
up
|
|
630
|
-
down
|
|
631
|
-
end enum
|
|
632
|
-
end namespace
|
|
633
|
-
`);
|
|
634
|
-
// enums.|direction.down
|
|
635
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(2, 26)), [{
|
|
636
|
-
label: 'Direction',
|
|
637
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.Enum
|
|
638
|
-
}]);
|
|
639
|
-
// enums.dire|ction.down
|
|
640
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(2, 30)), [{
|
|
641
|
-
label: 'Direction',
|
|
642
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.Enum
|
|
643
|
-
}]);
|
|
644
|
-
// enums.direction|.down
|
|
645
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(2, 35)), [{
|
|
646
|
-
label: 'Direction',
|
|
647
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.Enum
|
|
648
|
-
}]);
|
|
649
|
-
});
|
|
650
|
-
it('gets enum member completions from namespaced enum', () => {
|
|
651
|
-
program.setFile('source/main.bs', `
|
|
652
|
-
sub Main()
|
|
653
|
-
enums.direction.down
|
|
654
|
-
end sub
|
|
655
|
-
namespace enums
|
|
656
|
-
enum Direction
|
|
657
|
-
up
|
|
658
|
-
down
|
|
659
|
-
end enum
|
|
660
|
-
end namespace
|
|
661
|
-
`);
|
|
662
|
-
// enums.direction.|down
|
|
663
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(2, 36)), [{
|
|
664
|
-
label: 'up',
|
|
665
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
666
|
-
}, {
|
|
667
|
-
label: 'down',
|
|
668
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
669
|
-
}]);
|
|
670
|
-
// enums.direction.do|wn
|
|
671
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(2, 38)), [{
|
|
672
|
-
label: 'up',
|
|
673
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
674
|
-
}, {
|
|
675
|
-
label: 'down',
|
|
676
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
677
|
-
}]);
|
|
678
|
-
// enums.direction.down|
|
|
679
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(2, 40)), [{
|
|
680
|
-
label: 'up',
|
|
681
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
682
|
-
}, {
|
|
683
|
-
label: 'down',
|
|
684
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
685
|
-
}]);
|
|
686
|
-
});
|
|
687
|
-
it('excludes enum member completions from namespace enum', () => {
|
|
688
|
-
program.setFile('source/main.bs', `
|
|
689
|
-
sub Main()
|
|
690
|
-
direction.ba
|
|
691
|
-
end sub
|
|
692
|
-
namespace enums
|
|
693
|
-
enum Direction
|
|
694
|
-
up
|
|
695
|
-
down
|
|
696
|
-
end enum
|
|
697
|
-
end namespace
|
|
698
|
-
`);
|
|
699
|
-
//should NOT find Direction because it's not directly available at the top level (you need to go through `enums.` to get at it)
|
|
700
|
-
// dire|ction.down
|
|
701
|
-
(0, testHelpers_spec_1.expectCompletionsExcludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(2, 24)), [{
|
|
702
|
-
label: 'Direction',
|
|
703
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.Enum
|
|
704
|
-
}]);
|
|
705
|
-
});
|
|
706
|
-
it('infers namespace for enum statement completions', () => {
|
|
707
|
-
program.setFile('source/main.bs', `
|
|
708
|
-
namespace enums
|
|
709
|
-
sub Main()
|
|
710
|
-
direction.down
|
|
711
|
-
end sub
|
|
712
|
-
enum Direction
|
|
713
|
-
up
|
|
714
|
-
down
|
|
715
|
-
end enum
|
|
716
|
-
end namespace
|
|
717
|
-
enum Logic
|
|
718
|
-
yes
|
|
719
|
-
no
|
|
720
|
-
end enum
|
|
721
|
-
`);
|
|
722
|
-
// dire|ction.down
|
|
723
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(3, 33)), [{
|
|
724
|
-
label: 'Direction',
|
|
725
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.Enum
|
|
726
|
-
}, {
|
|
727
|
-
label: 'Logic',
|
|
728
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.Enum
|
|
729
|
-
}]);
|
|
730
|
-
});
|
|
731
|
-
it('infers namespace for enum member completions', () => {
|
|
732
|
-
program.setFile('source/main.bs', `
|
|
733
|
-
namespace enums
|
|
734
|
-
sub Main()
|
|
735
|
-
direction.down
|
|
736
|
-
end sub
|
|
737
|
-
enum Direction
|
|
738
|
-
up
|
|
739
|
-
down
|
|
740
|
-
end enum
|
|
741
|
-
end namespace
|
|
742
|
-
`);
|
|
743
|
-
// direction.do|wn
|
|
744
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(3, 36)), [{
|
|
745
|
-
label: 'up',
|
|
746
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
747
|
-
}, {
|
|
748
|
-
label: 'down',
|
|
749
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
750
|
-
}]);
|
|
751
|
-
});
|
|
752
|
-
it('supports explicit namespace for enum statement completions', () => {
|
|
753
|
-
program.setFile('source/main.bs', `
|
|
754
|
-
namespace enums
|
|
755
|
-
sub Main()
|
|
756
|
-
enums.direction.down
|
|
757
|
-
end sub
|
|
758
|
-
enum Direction
|
|
759
|
-
up
|
|
760
|
-
down
|
|
761
|
-
end enum
|
|
762
|
-
end namespace
|
|
763
|
-
`);
|
|
764
|
-
// enums.dire|ction.down
|
|
765
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(3, 38)), [{
|
|
766
|
-
label: 'Direction',
|
|
767
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.Enum
|
|
768
|
-
}]);
|
|
769
|
-
});
|
|
770
|
-
it('supports explicit namespace for enum statement completions', () => {
|
|
771
|
-
program.setFile('source/main.bs', `
|
|
772
|
-
namespace logger
|
|
773
|
-
sub log()
|
|
774
|
-
enums.direction.down
|
|
775
|
-
end sub
|
|
776
|
-
end namespace
|
|
777
|
-
namespace enums
|
|
778
|
-
enum Direction
|
|
779
|
-
up
|
|
780
|
-
down
|
|
781
|
-
end enum
|
|
782
|
-
end namespace
|
|
783
|
-
`);
|
|
784
|
-
// enums.dire|ction.down
|
|
785
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(3, 38)), [{
|
|
786
|
-
label: 'Direction',
|
|
787
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.Enum
|
|
788
|
-
}]);
|
|
789
|
-
});
|
|
790
|
-
it('handles both sides of a logical expression', () => {
|
|
791
|
-
testTranspile(`
|
|
586
|
+
it('handles both sides of a logical expression', async () => {
|
|
587
|
+
await testTranspile(`
|
|
792
588
|
sub main()
|
|
793
589
|
dir = m.direction = Direction.up
|
|
794
590
|
dir = Direction.up = m.direction
|
|
@@ -804,8 +600,8 @@ describe('EnumStatement', () => {
|
|
|
804
600
|
end sub
|
|
805
601
|
`);
|
|
806
602
|
});
|
|
807
|
-
it('handles when found in boolean expressions', () => {
|
|
808
|
-
testTranspile(`
|
|
603
|
+
it('handles when found in boolean expressions', async () => {
|
|
604
|
+
await testTranspile(`
|
|
809
605
|
sub main()
|
|
810
606
|
result = Direction.up = "up" or Direction.down = "down" and Direction.up = Direction.down
|
|
811
607
|
end sub
|
|
@@ -819,8 +615,8 @@ describe('EnumStatement', () => {
|
|
|
819
615
|
end sub
|
|
820
616
|
`);
|
|
821
617
|
});
|
|
822
|
-
it('replaces enum values in if statements', () => {
|
|
823
|
-
testTranspile(`
|
|
618
|
+
it('replaces enum values in if statements', async () => {
|
|
619
|
+
await testTranspile(`
|
|
824
620
|
sub main()
|
|
825
621
|
if m.direction = Direction.up
|
|
826
622
|
print Direction.up
|
|
@@ -838,8 +634,8 @@ describe('EnumStatement', () => {
|
|
|
838
634
|
end sub
|
|
839
635
|
`);
|
|
840
636
|
});
|
|
841
|
-
it('replaces enum values in function default parameter value expressions', () => {
|
|
842
|
-
testTranspile(`
|
|
637
|
+
it('replaces enum values in function default parameter value expressions', async () => {
|
|
638
|
+
await testTranspile(`
|
|
843
639
|
sub speak(dir = Direction.up)
|
|
844
640
|
end sub
|
|
845
641
|
enum Direction
|
|
@@ -850,8 +646,8 @@ describe('EnumStatement', () => {
|
|
|
850
646
|
end sub
|
|
851
647
|
`);
|
|
852
648
|
});
|
|
853
|
-
it('replaces enum values in for loops', () => {
|
|
854
|
-
testTranspile(`
|
|
649
|
+
it('replaces enum values in for loops', async () => {
|
|
650
|
+
await testTranspile(`
|
|
855
651
|
sub main()
|
|
856
652
|
for i = Loop.start to Loop.end step Loop.step
|
|
857
653
|
end for
|
|
@@ -868,6 +664,21 @@ describe('EnumStatement', () => {
|
|
|
868
664
|
end sub
|
|
869
665
|
`);
|
|
870
666
|
});
|
|
667
|
+
it('transpiles enum values when used in complex expressions', async () => {
|
|
668
|
+
await testTranspile(`
|
|
669
|
+
sub main()
|
|
670
|
+
print Direction.up.toStr()
|
|
671
|
+
end sub
|
|
672
|
+
enum Direction
|
|
673
|
+
up = "up"
|
|
674
|
+
down = "down"
|
|
675
|
+
end enum
|
|
676
|
+
`, `
|
|
677
|
+
sub main()
|
|
678
|
+
print "up".toStr()
|
|
679
|
+
end sub
|
|
680
|
+
`);
|
|
681
|
+
});
|
|
871
682
|
});
|
|
872
683
|
});
|
|
873
684
|
//# sourceMappingURL=Enum.spec.js.map
|