brighterscript 0.66.0-alpha.1 → 0.66.0-alpha.11
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 +224 -10
- package/README.md +13 -3
- package/bsconfig.schema.json +15 -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 +150 -0
- package/dist/AstValidationSegmenter.js.map +1 -0
- package/dist/BsConfig.d.ts +13 -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 +0 -1
- package/dist/CodeActionUtil.d.ts +2 -2
- package/dist/CommentFlagProcessor.d.ts +4 -3
- package/dist/CommentFlagProcessor.js.map +1 -1
- package/dist/DiagnosticCollection.js +8 -5
- package/dist/DiagnosticCollection.js.map +1 -1
- package/dist/DiagnosticMessages.d.ts +34 -4
- package/dist/DiagnosticMessages.js +59 -4
- package/dist/DiagnosticMessages.js.map +1 -1
- package/dist/FunctionScope.d.ts +1 -1
- package/dist/LanguageServer.d.ts +23 -1
- package/dist/LanguageServer.js +139 -57
- package/dist/LanguageServer.js.map +1 -1
- package/dist/Logger.d.ts +3 -2
- package/dist/Logger.js +10 -2
- package/dist/Logger.js.map +1 -1
- package/dist/PluginInterface.d.ts +11 -2
- package/dist/PluginInterface.js +69 -10
- package/dist/PluginInterface.js.map +1 -1
- package/dist/Program.d.ts +138 -49
- package/dist/Program.js +644 -349
- package/dist/Program.js.map +1 -1
- package/dist/ProgramBuilder.d.ts +10 -4
- package/dist/ProgramBuilder.js +76 -74
- package/dist/ProgramBuilder.js.map +1 -1
- package/dist/Scope.d.ts +52 -49
- package/dist/Scope.js +298 -274
- package/dist/Scope.js.map +1 -1
- package/dist/SymbolTable.d.ts +35 -14
- package/dist/SymbolTable.js +90 -29
- 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/XmlScope.d.ts +7 -4
- package/dist/XmlScope.js +52 -12
- package/dist/XmlScope.js.map +1 -1
- package/dist/astUtils/{AstEditor.d.ts → Editor.d.ts} +6 -1
- package/dist/astUtils/{AstEditor.js → Editor.js} +9 -3
- package/dist/astUtils/Editor.js.map +1 -0
- package/dist/astUtils/{AstEditor.spec.js → Editor.spec.js} +10 -6
- package/dist/astUtils/Editor.spec.js.map +1 -0
- package/dist/astUtils/creators.d.ts +3 -1
- package/dist/astUtils/creators.js +14 -4
- package/dist/astUtils/creators.js.map +1 -1
- package/dist/astUtils/reflection.d.ts +37 -9
- package/dist/astUtils/reflection.js +83 -14
- package/dist/astUtils/reflection.js.map +1 -1
- package/dist/astUtils/reflection.spec.js +87 -5
- package/dist/astUtils/reflection.spec.js.map +1 -1
- package/dist/astUtils/visitors.d.ts +14 -3
- package/dist/astUtils/visitors.js +22 -2
- package/dist/astUtils/visitors.js.map +1 -1
- package/dist/astUtils/visitors.spec.js +58 -7
- package/dist/astUtils/visitors.spec.js.map +1 -1
- package/dist/bscPlugin/BscPlugin.d.ts +10 -2
- package/dist/bscPlugin/BscPlugin.js +24 -4
- package/dist/bscPlugin/BscPlugin.js.map +1 -1
- package/dist/bscPlugin/CallExpressionInfo.d.ts +3 -3
- package/dist/bscPlugin/CallExpressionInfo.js.map +1 -1
- 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/codeActions/CodeActionsProcessor.js +8 -8
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +4 -4
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +50 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.js +445 -23
- package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +1737 -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 +7 -3
- package/dist/bscPlugin/hover/HoverProcessor.js +133 -103
- package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
- package/dist/bscPlugin/hover/HoverProcessor.spec.js +241 -29
- package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +1 -0
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +43 -0
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +22 -0
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -1
- 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/{BrsFilePreTranspileProcessor.d.ts → BrsFileTranspileProcessor.d.ts} +4 -2
- package/dist/bscPlugin/transpile/{BrsFilePreTranspileProcessor.js → BrsFileTranspileProcessor.js} +29 -5
- 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 +2 -2
- package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js.map +1 -1
- package/dist/bscPlugin/validation/BrsFileValidator.d.ts +0 -4
- package/dist/bscPlugin/validation/BrsFileValidator.js +34 -29
- package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
- package/dist/bscPlugin/validation/BrsFileValidator.spec.js +1 -1
- package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.d.ts +28 -7
- package/dist/bscPlugin/validation/ScopeValidator.js +393 -205
- 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 +2038 -0
- package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -0
- package/dist/bscPlugin/validation/XmlFileValidator.js +2 -2
- package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -1
- package/dist/cli.js +104 -13
- 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 +45 -16
- package/dist/diagnosticUtils.js.map +1 -1
- package/dist/examples/plugins/removePrint.js +1 -1
- 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 +383 -56
- package/dist/files/BrsFile.Class.spec.js.map +1 -1
- package/dist/files/BrsFile.d.ts +73 -46
- package/dist/files/BrsFile.js +370 -534
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +1139 -682
- package/dist/files/BrsFile.spec.js.map +1 -1
- 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/File.d.ts +106 -0
- package/dist/files/File.js +16 -0
- package/dist/files/File.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 +56 -23
- package/dist/files/XmlFile.js +88 -60
- package/dist/files/XmlFile.js.map +1 -1
- package/dist/files/XmlFile.spec.js +64 -93
- package/dist/files/XmlFile.spec.js.map +1 -1
- package/dist/files/tests/imports.spec.js +21 -8
- package/dist/files/tests/imports.spec.js.map +1 -1
- package/dist/files/tests/optionalChaning.spec.js +14 -14
- package/dist/files/tests/optionalChaning.spec.js.map +1 -1
- package/dist/globalCallables.js +88 -84
- package/dist/globalCallables.js.map +1 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +389 -94
- package/dist/interfaces.js +13 -2
- package/dist/interfaces.js.map +1 -1
- package/dist/lexer/Lexer.d.ts +12 -0
- package/dist/lexer/Lexer.js +28 -8
- package/dist/lexer/Lexer.js.map +1 -1
- package/dist/lexer/Lexer.spec.js +40 -0
- package/dist/lexer/Lexer.spec.js.map +1 -1
- package/dist/lexer/Token.d.ts +4 -0
- package/dist/lexer/Token.js.map +1 -1
- package/dist/lexer/TokenKind.d.ts +5 -0
- package/dist/lexer/TokenKind.js +14 -2
- package/dist/lexer/TokenKind.js.map +1 -1
- package/dist/parser/AstNode.d.ts +9 -2
- package/dist/parser/AstNode.js +16 -0
- package/dist/parser/AstNode.js.map +1 -1
- package/dist/parser/BrsTranspileState.d.ts +3 -2
- package/dist/parser/BrsTranspileState.js +3 -2
- package/dist/parser/BrsTranspileState.js.map +1 -1
- package/dist/parser/Expression.d.ts +21 -5
- package/dist/parser/Expression.js +130 -35
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.Class.spec.js +103 -1
- package/dist/parser/Parser.Class.spec.js.map +1 -1
- package/dist/parser/Parser.d.ts +7 -0
- package/dist/parser/Parser.js +117 -21
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/Parser.spec.js +557 -5
- package/dist/parser/Parser.spec.js.map +1 -1
- package/dist/parser/SGParser.d.ts +4 -4
- package/dist/parser/SGParser.js +3 -3
- package/dist/parser/SGParser.js.map +1 -1
- package/dist/parser/SGParser.spec.js +2 -2
- package/dist/parser/SGParser.spec.js.map +1 -1
- package/dist/parser/SGTypes.d.ts +2 -2
- package/dist/parser/Statement.d.ts +37 -12
- package/dist/parser/Statement.js +153 -46
- package/dist/parser/Statement.js.map +1 -1
- package/dist/parser/tests/Parser.spec.js +2 -1
- package/dist/parser/tests/Parser.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/For.spec.js +16 -8
- package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/ForEach.spec.js +12 -6
- package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/While.spec.js +8 -4
- package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
- package/dist/parser/tests/expression/Call.spec.js +4 -4
- package/dist/parser/tests/expression/Call.spec.js.map +1 -1
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +29 -29
- package/dist/parser/tests/expression/NullCoalescenceExpression.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/SourceLiteralExpression.spec.js +24 -24
- package/dist/parser/tests/expression/SourceLiteralExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/TemplateStringExpression.spec.js +75 -36
- package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/TernaryExpression.spec.js +36 -36
- package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
- 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/ConstStatement.spec.js +71 -22
- package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Continue.spec.js +2 -2
- package/dist/parser/tests/statement/Continue.spec.js.map +1 -1
- package/dist/parser/tests/statement/Enum.spec.js +38 -285
- package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
- package/dist/parser/tests/statement/For.spec.js +6 -6
- package/dist/parser/tests/statement/For.spec.js.map +1 -1
- package/dist/parser/tests/statement/ForEach.spec.js +4 -4
- package/dist/parser/tests/statement/ForEach.spec.js.map +1 -1
- package/dist/parser/tests/statement/InterfaceStatement.spec.js +26 -10
- package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/PrintStatement.spec.js +16 -13
- package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/ReturnStatement.spec.js +5 -3
- package/dist/parser/tests/statement/ReturnStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Set.spec.js +26 -13
- package/dist/parser/tests/statement/Set.spec.js.map +1 -1
- package/dist/preprocessor/Manifest.d.ts +1 -1
- package/dist/preprocessor/Manifest.js +2 -2
- package/dist/preprocessor/Manifest.js.map +1 -1
- package/dist/roku-types/data.json +244 -294
- package/dist/roku-types/index.d.ts +17 -38
- package/dist/types/ArrayType.d.ts +4 -1
- package/dist/types/ArrayType.js +46 -6
- package/dist/types/ArrayType.js.map +1 -1
- package/dist/types/ArrayType.spec.js +32 -3
- 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 +2 -1
- package/dist/types/BooleanType.js +8 -2
- package/dist/types/BooleanType.js.map +1 -1
- package/dist/types/BscType.d.ts +10 -6
- package/dist/types/BscType.js +69 -16
- package/dist/types/BscType.js.map +1 -1
- package/dist/types/BscTypeKind.d.ts +3 -0
- package/dist/types/BscTypeKind.js +3 -0
- package/dist/types/BscTypeKind.js.map +1 -1
- 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 +10 -4
- package/dist/types/ClassType.js +32 -5
- package/dist/types/ClassType.js.map +1 -1
- package/dist/types/ClassType.spec.js +5 -3
- package/dist/types/ClassType.spec.js.map +1 -1
- 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 +2 -1
- package/dist/types/DoubleType.js +9 -2
- package/dist/types/DoubleType.js.map +1 -1
- package/dist/types/DynamicType.d.ts +2 -2
- package/dist/types/DynamicType.js +3 -1
- package/dist/types/DynamicType.js.map +1 -1
- package/dist/types/EnumType.d.ts +24 -6
- package/dist/types/EnumType.js +29 -7
- package/dist/types/EnumType.js.map +1 -1
- package/dist/types/FloatType.d.ts +2 -1
- package/dist/types/FloatType.js +9 -2
- package/dist/types/FloatType.js.map +1 -1
- package/dist/types/FunctionType.d.ts +8 -20
- package/dist/types/FunctionType.js +17 -45
- package/dist/types/FunctionType.js.map +1 -1
- package/dist/types/InheritableType.d.ts +7 -4
- package/dist/types/InheritableType.js +67 -3
- package/dist/types/InheritableType.js.map +1 -1
- package/dist/types/IntegerType.d.ts +2 -1
- package/dist/types/IntegerType.js +9 -2
- package/dist/types/IntegerType.js.map +1 -1
- package/dist/types/InterfaceType.d.ts +6 -4
- package/dist/types/InterfaceType.js +8 -11
- package/dist/types/InterfaceType.js.map +1 -1
- package/dist/types/InterfaceType.spec.js +30 -2
- package/dist/types/InterfaceType.spec.js.map +1 -1
- package/dist/types/InvalidType.d.ts +2 -1
- package/dist/types/InvalidType.js +7 -1
- package/dist/types/InvalidType.js.map +1 -1
- package/dist/types/LongIntegerType.d.ts +2 -1
- package/dist/types/LongIntegerType.js +9 -2
- package/dist/types/LongIntegerType.js.map +1 -1
- package/dist/types/NamespaceType.d.ts +2 -1
- package/dist/types/NamespaceType.js +3 -0
- package/dist/types/NamespaceType.js.map +1 -1
- package/dist/types/ObjectType.d.ts +2 -2
- package/dist/types/ObjectType.js +5 -10
- package/dist/types/ObjectType.js.map +1 -1
- package/dist/types/ReferenceType.d.ts +15 -3
- package/dist/types/ReferenceType.js +173 -24
- package/dist/types/ReferenceType.js.map +1 -1
- package/dist/types/ReferenceType.spec.js +21 -6
- package/dist/types/ReferenceType.spec.js.map +1 -1
- package/dist/types/StringType.d.ts +2 -1
- package/dist/types/StringType.js +9 -2
- package/dist/types/StringType.js.map +1 -1
- package/dist/types/TypedFunctionType.d.ts +33 -0
- package/dist/types/TypedFunctionType.js +106 -0
- package/dist/types/TypedFunctionType.js.map +1 -0
- package/dist/types/TypedFunctionType.spec.d.ts +1 -0
- package/dist/types/TypedFunctionType.spec.js +122 -0
- package/dist/types/TypedFunctionType.spec.js.map +1 -0
- package/dist/types/UninitializedType.d.ts +2 -1
- package/dist/types/UninitializedType.js +1 -1
- package/dist/types/UninitializedType.js.map +1 -1
- package/dist/types/UnionType.d.ts +4 -2
- package/dist/types/UnionType.js +36 -4
- package/dist/types/UnionType.js.map +1 -1
- package/dist/types/UnionType.spec.js +46 -19
- package/dist/types/UnionType.spec.js.map +1 -1
- package/dist/types/VoidType.d.ts +2 -1
- package/dist/types/VoidType.js +7 -2
- package/dist/types/VoidType.js.map +1 -1
- package/dist/types/helper.spec.js +15 -0
- package/dist/types/helper.spec.js.map +1 -1
- package/dist/types/helpers.d.ts +5 -0
- package/dist/types/helpers.js +50 -3
- package/dist/types/helpers.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/util.d.ts +71 -15
- package/dist/util.js +578 -150
- package/dist/util.js.map +1 -1
- package/dist/validators/ClassValidator.d.ts +0 -1
- package/dist/validators/ClassValidator.js +0 -22
- package/dist/validators/ClassValidator.js.map +1 -1
- package/package.json +3 -2
- package/dist/astUtils/AstEditor.js.map +0 -1
- package/dist/astUtils/AstEditor.spec.js.map +0 -1
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +0 -1
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js +0 -31
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js.map +0 -1
- package/dist/types/FunctionType.spec.js +0 -23
- package/dist/types/FunctionType.spec.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/{types/FunctionType.spec.d.ts → bscPlugin/serialize/BslibInjector.spec.d.ts} +0 -0
|
@@ -8,8 +8,8 @@ const Parser_1 = require("../../Parser");
|
|
|
8
8
|
const chai_config_spec_1 = require("../../../chai-config.spec");
|
|
9
9
|
const TokenKind_1 = require("../../../lexer/TokenKind");
|
|
10
10
|
const Expression_1 = require("../../Expression");
|
|
11
|
-
const vscode_languageserver_protocol_1 = require("vscode-languageserver-protocol");
|
|
12
11
|
const testHelpers_spec_2 = require("../../../testHelpers.spec");
|
|
12
|
+
const vscode_languageserver_1 = require("vscode-languageserver");
|
|
13
13
|
const sinon = (0, sinon_1.createSandbox)();
|
|
14
14
|
describe('ConstStatement', () => {
|
|
15
15
|
let program;
|
|
@@ -30,7 +30,7 @@ describe('ConstStatement', () => {
|
|
|
30
30
|
const = {
|
|
31
31
|
name: "Bob"
|
|
32
32
|
}
|
|
33
|
-
print const.name =
|
|
33
|
+
print const.name = "John"
|
|
34
34
|
end sub
|
|
35
35
|
`);
|
|
36
36
|
program.validate();
|
|
@@ -52,16 +52,38 @@ describe('ConstStatement', () => {
|
|
|
52
52
|
//ensure range is correct
|
|
53
53
|
(0, chai_config_spec_1.expect)(statement.range).to.eql(util_1.util.createRange(0, 0, 0, 21));
|
|
54
54
|
});
|
|
55
|
-
it('produces typedef', () => {
|
|
56
|
-
testGetTypedef(`
|
|
55
|
+
it('produces typedef', async () => {
|
|
56
|
+
await testGetTypedef(`
|
|
57
57
|
const API_KEY = "abc"
|
|
58
58
|
const SOME_OBJ = {}
|
|
59
59
|
const SOME_ARR = []
|
|
60
60
|
`);
|
|
61
61
|
});
|
|
62
|
+
it('allows const with the name `optional`', () => {
|
|
63
|
+
program.setFile('source/main.bs', `
|
|
64
|
+
const optional = true
|
|
65
|
+
sub main()
|
|
66
|
+
print optional
|
|
67
|
+
end sub
|
|
68
|
+
`);
|
|
69
|
+
program.validate();
|
|
70
|
+
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
71
|
+
});
|
|
72
|
+
it('allows const with the name `optional` in a namespace', () => {
|
|
73
|
+
program.setFile('source/main.bs', `
|
|
74
|
+
namespace alpha
|
|
75
|
+
const optional = true
|
|
76
|
+
end namespace
|
|
77
|
+
sub main()
|
|
78
|
+
print alpha.optional
|
|
79
|
+
end sub
|
|
80
|
+
`);
|
|
81
|
+
program.validate();
|
|
82
|
+
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
83
|
+
});
|
|
62
84
|
describe('transpile', () => {
|
|
63
|
-
it('transpiles simple consts', () => {
|
|
64
|
-
testTranspile(`
|
|
85
|
+
it('transpiles simple consts', async () => {
|
|
86
|
+
await testTranspile(`
|
|
65
87
|
const API_KEY = "abc"
|
|
66
88
|
sub main()
|
|
67
89
|
print API_KEY
|
|
@@ -72,8 +94,8 @@ describe('ConstStatement', () => {
|
|
|
72
94
|
end sub
|
|
73
95
|
`);
|
|
74
96
|
});
|
|
75
|
-
it('transpiles arrays', () => {
|
|
76
|
-
testTranspile(`
|
|
97
|
+
it('transpiles arrays', async () => {
|
|
98
|
+
await testTranspile(`
|
|
77
99
|
const WORDS = [
|
|
78
100
|
"alpha"
|
|
79
101
|
"beta"
|
|
@@ -90,8 +112,8 @@ describe('ConstStatement', () => {
|
|
|
90
112
|
end sub
|
|
91
113
|
`);
|
|
92
114
|
});
|
|
93
|
-
it('transpiles objects', () => {
|
|
94
|
-
testTranspile(`
|
|
115
|
+
it('transpiles objects', async () => {
|
|
116
|
+
await testTranspile(`
|
|
95
117
|
const DEFAULTS = {
|
|
96
118
|
alpha: true
|
|
97
119
|
beta: true
|
|
@@ -108,8 +130,8 @@ describe('ConstStatement', () => {
|
|
|
108
130
|
end sub
|
|
109
131
|
`);
|
|
110
132
|
});
|
|
111
|
-
it('supports consts inside namespaces', () => {
|
|
112
|
-
testTranspile(`
|
|
133
|
+
it('supports consts inside namespaces', async () => {
|
|
134
|
+
await testTranspile(`
|
|
113
135
|
namespace network
|
|
114
136
|
const API_KEY = "abc"
|
|
115
137
|
sub get()
|
|
@@ -129,8 +151,8 @@ describe('ConstStatement', () => {
|
|
|
129
151
|
end sub
|
|
130
152
|
`);
|
|
131
153
|
});
|
|
132
|
-
it('supports property access on complex objects', () => {
|
|
133
|
-
testTranspile(`
|
|
154
|
+
it('supports property access on complex objects', async () => {
|
|
155
|
+
await testTranspile(`
|
|
134
156
|
const DEFAULTS = {
|
|
135
157
|
enabled: true
|
|
136
158
|
}
|
|
@@ -145,8 +167,8 @@ describe('ConstStatement', () => {
|
|
|
145
167
|
end sub
|
|
146
168
|
`);
|
|
147
169
|
});
|
|
148
|
-
it('supports calling methods on consts', () => {
|
|
149
|
-
testTranspile(`
|
|
170
|
+
it('supports calling methods on consts', async () => {
|
|
171
|
+
await testTranspile(`
|
|
150
172
|
const API_KEY ="ABC"
|
|
151
173
|
sub main()
|
|
152
174
|
print API_KEY.toString()
|
|
@@ -157,8 +179,8 @@ describe('ConstStatement', () => {
|
|
|
157
179
|
end sub
|
|
158
180
|
`);
|
|
159
181
|
});
|
|
160
|
-
it('transpiles within += operator', () => {
|
|
161
|
-
testTranspile(`
|
|
182
|
+
it('transpiles within += operator', async () => {
|
|
183
|
+
await testTranspile(`
|
|
162
184
|
namespace constants
|
|
163
185
|
const API_KEY = "test"
|
|
164
186
|
end namespace
|
|
@@ -185,13 +207,39 @@ describe('ConstStatement', () => {
|
|
|
185
207
|
log()
|
|
186
208
|
end sub
|
|
187
209
|
`);
|
|
188
|
-
(
|
|
210
|
+
program.validate();
|
|
189
211
|
// log(|)
|
|
190
|
-
program.getCompletions('source/main.bs', util_1.util.createPosition(3,
|
|
212
|
+
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(3, 34)), [{
|
|
191
213
|
label: 'API_KEY',
|
|
192
|
-
kind:
|
|
214
|
+
kind: vscode_languageserver_1.CompletionItemKind.Constant
|
|
193
215
|
}]);
|
|
194
216
|
});
|
|
217
|
+
it('transpiles simple const in a unary expression', async () => {
|
|
218
|
+
await testTranspile(`
|
|
219
|
+
const foo = 1
|
|
220
|
+
sub main()
|
|
221
|
+
bar = -foo
|
|
222
|
+
end sub
|
|
223
|
+
`, `
|
|
224
|
+
sub main()
|
|
225
|
+
bar = -1
|
|
226
|
+
end sub
|
|
227
|
+
`, undefined, 'source/main.bs');
|
|
228
|
+
});
|
|
229
|
+
it('transpiles complex const in a unary expression', async () => {
|
|
230
|
+
await testTranspile(`
|
|
231
|
+
namespace some.consts
|
|
232
|
+
const foo = 1
|
|
233
|
+
end namespace
|
|
234
|
+
sub main()
|
|
235
|
+
bar = -some.consts.foo
|
|
236
|
+
end sub
|
|
237
|
+
`, `
|
|
238
|
+
sub main()
|
|
239
|
+
bar = - 1
|
|
240
|
+
end sub
|
|
241
|
+
`, undefined, 'source/main.bs');
|
|
242
|
+
});
|
|
195
243
|
it('shows up in namespace completions', () => {
|
|
196
244
|
program.setFile('source/main.bs', `
|
|
197
245
|
namespace constants
|
|
@@ -201,11 +249,12 @@ describe('ConstStatement', () => {
|
|
|
201
249
|
log(constants.)
|
|
202
250
|
end sub
|
|
203
251
|
`);
|
|
252
|
+
program.validate();
|
|
204
253
|
(0, testHelpers_spec_1.expectCompletionsIncludes)(
|
|
205
254
|
// log(|)
|
|
206
255
|
program.getCompletions('source/main.bs', util_1.util.createPosition(5, 34)), [{
|
|
207
256
|
label: 'API_KEY',
|
|
208
|
-
kind:
|
|
257
|
+
kind: vscode_languageserver_1.CompletionItemKind.Constant
|
|
209
258
|
}]);
|
|
210
259
|
});
|
|
211
260
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConstStatement.spec.js","sourceRoot":"","sources":["../../../../src/parser/tests/statement/ConstStatement.spec.ts"],"names":[],"mappings":";;AAAA,gEAAkI;AAClI,wCAAqC;AACrC,8CAA2C;AAC3C,iCAAsC;AACtC,yCAAiD;AACjD,gEAAmD;AAEnD,wDAAqD;AACrD,iDAAqD;AACrD,
|
|
1
|
+
{"version":3,"file":"ConstStatement.spec.js","sourceRoot":"","sources":["../../../../src/parser/tests/statement/ConstStatement.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -89,8 +89,8 @@ describe('parser continue statements', () => {
|
|
|
89
89
|
program.validate();
|
|
90
90
|
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
91
91
|
});
|
|
92
|
-
it('transpiles properly', () => {
|
|
93
|
-
testTranspile(`
|
|
92
|
+
it('transpiles properly', async () => {
|
|
93
|
+
await testTranspile(`
|
|
94
94
|
sub main()
|
|
95
95
|
while true
|
|
96
96
|
continue while
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Continue.spec.js","sourceRoot":"","sources":["../../../../src/parser/tests/statement/Continue.spec.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Continue.spec.js","sourceRoot":"","sources":["../../../../src/parser/tests/statement/Continue.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -178,6 +178,15 @@ describe('EnumStatement', () => {
|
|
|
178
178
|
]);
|
|
179
179
|
});
|
|
180
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
|
+
});
|
|
181
190
|
it('catches duplicate enums from same file', () => {
|
|
182
191
|
program.setFile('source/main.bs', `
|
|
183
192
|
enum Direction
|
|
@@ -189,7 +198,7 @@ describe('EnumStatement', () => {
|
|
|
189
198
|
end enum
|
|
190
199
|
`);
|
|
191
200
|
program.validate();
|
|
192
|
-
(0, testHelpers_spec_1.
|
|
201
|
+
(0, testHelpers_spec_1.expectDiagnosticsIncludes)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.duplicateEnumDeclaration('source', 'Direction')), { relatedInformation: [{
|
|
193
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)),
|
|
194
203
|
message: 'Enum declared here'
|
|
195
204
|
}] })]);
|
|
@@ -206,7 +215,7 @@ describe('EnumStatement', () => {
|
|
|
206
215
|
end enum
|
|
207
216
|
`);
|
|
208
217
|
program.validate();
|
|
209
|
-
(0, testHelpers_spec_1.
|
|
218
|
+
(0, testHelpers_spec_1.expectDiagnosticsIncludes)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.duplicateEnumDeclaration('source', 'Direction')), { relatedInformation: [{
|
|
210
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)),
|
|
211
220
|
message: 'Enum declared here'
|
|
212
221
|
}] })]);
|
|
@@ -423,8 +432,8 @@ describe('EnumStatement', () => {
|
|
|
423
432
|
});
|
|
424
433
|
});
|
|
425
434
|
describe('transpile', () => {
|
|
426
|
-
it('transpiles negative number', () => {
|
|
427
|
-
testTranspile(`
|
|
435
|
+
it('transpiles negative number', async () => {
|
|
436
|
+
await testTranspile(`
|
|
428
437
|
sub main()
|
|
429
438
|
print Direction.up
|
|
430
439
|
end sub
|
|
@@ -437,8 +446,8 @@ describe('EnumStatement', () => {
|
|
|
437
446
|
end sub
|
|
438
447
|
`, undefined, undefined, false);
|
|
439
448
|
});
|
|
440
|
-
it('includes original value when no value could be computed', () => {
|
|
441
|
-
testTranspile(`
|
|
449
|
+
it('includes original value when no value could be computed', async () => {
|
|
450
|
+
await testTranspile(`
|
|
442
451
|
sub main()
|
|
443
452
|
print Direction.up
|
|
444
453
|
end sub
|
|
@@ -451,8 +460,8 @@ describe('EnumStatement', () => {
|
|
|
451
460
|
end sub
|
|
452
461
|
`, undefined, undefined, false);
|
|
453
462
|
});
|
|
454
|
-
it('writes all literal values as-is (even if there are errors)', () => {
|
|
455
|
-
testTranspile(`
|
|
463
|
+
it('writes all literal values as-is (even if there are errors)', async () => {
|
|
464
|
+
await testTranspile(`
|
|
456
465
|
sub main()
|
|
457
466
|
print Direction.up
|
|
458
467
|
print Direction.down
|
|
@@ -477,8 +486,8 @@ describe('EnumStatement', () => {
|
|
|
477
486
|
end sub
|
|
478
487
|
`, 'trim', undefined, false);
|
|
479
488
|
});
|
|
480
|
-
it('supports default-as-integer', () => {
|
|
481
|
-
testTranspile(`
|
|
489
|
+
it('supports default-as-integer', async () => {
|
|
490
|
+
await testTranspile(`
|
|
482
491
|
enum Direction
|
|
483
492
|
up
|
|
484
493
|
down
|
|
@@ -494,8 +503,8 @@ describe('EnumStatement', () => {
|
|
|
494
503
|
end sub
|
|
495
504
|
`);
|
|
496
505
|
});
|
|
497
|
-
it('supports string enums', () => {
|
|
498
|
-
testTranspile(`
|
|
506
|
+
it('supports string enums', async () => {
|
|
507
|
+
await testTranspile(`
|
|
499
508
|
enum Direction
|
|
500
509
|
up = "up"
|
|
501
510
|
down = "down"
|
|
@@ -519,7 +528,7 @@ describe('EnumStatement', () => {
|
|
|
519
528
|
val2
|
|
520
529
|
end enum
|
|
521
530
|
|
|
522
|
-
function foo() as
|
|
531
|
+
function foo() as MyEnum
|
|
523
532
|
return MyEnum.val1
|
|
524
533
|
end function
|
|
525
534
|
end namespace
|
|
@@ -527,7 +536,7 @@ describe('EnumStatement', () => {
|
|
|
527
536
|
program.validate();
|
|
528
537
|
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
529
538
|
});
|
|
530
|
-
it('replaces enum values from separate file with literals', () => {
|
|
539
|
+
it('replaces enum values from separate file with literals', async () => {
|
|
531
540
|
program.setFile('source/enum.bs', `
|
|
532
541
|
enum CharacterType
|
|
533
542
|
Human = "Human"
|
|
@@ -540,7 +549,7 @@ describe('EnumStatement', () => {
|
|
|
540
549
|
end enum
|
|
541
550
|
end namespace
|
|
542
551
|
`);
|
|
543
|
-
testTranspile(`
|
|
552
|
+
await testTranspile(`
|
|
544
553
|
sub test()
|
|
545
554
|
print CharacterType.Human
|
|
546
555
|
print CharacterType.Zombie
|
|
@@ -556,8 +565,8 @@ describe('EnumStatement', () => {
|
|
|
556
565
|
end sub
|
|
557
566
|
`);
|
|
558
567
|
});
|
|
559
|
-
it('replaces enums in if statements', () => {
|
|
560
|
-
testTranspile(`
|
|
568
|
+
it('replaces enums in if statements', async () => {
|
|
569
|
+
await testTranspile(`
|
|
561
570
|
enum CharacterType
|
|
562
571
|
zombie = "zombie"
|
|
563
572
|
end enum
|
|
@@ -574,264 +583,8 @@ describe('EnumStatement', () => {
|
|
|
574
583
|
end sub
|
|
575
584
|
`);
|
|
576
585
|
});
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
it('does not crash when completing enum members with unsupported values', () => {
|
|
580
|
-
program.setFile('source/main.bs', `
|
|
581
|
-
sub Main()
|
|
582
|
-
direction.obj
|
|
583
|
-
end sub
|
|
584
|
-
enum Direction
|
|
585
|
-
up
|
|
586
|
-
down
|
|
587
|
-
obj = {}
|
|
588
|
-
end enum
|
|
589
|
-
`);
|
|
590
|
-
// direction.|obj
|
|
591
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(2, 30)), [{
|
|
592
|
-
label: 'up',
|
|
593
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
594
|
-
}, {
|
|
595
|
-
label: 'down',
|
|
596
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
597
|
-
}, {
|
|
598
|
-
label: 'obj',
|
|
599
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
600
|
-
}]);
|
|
601
|
-
});
|
|
602
|
-
it('gets enum statement completions from global enum', () => {
|
|
603
|
-
program.setFile('source/main.bs', `
|
|
604
|
-
sub Main()
|
|
605
|
-
direction.down
|
|
606
|
-
end sub
|
|
607
|
-
enum Direction
|
|
608
|
-
up
|
|
609
|
-
down
|
|
610
|
-
end enum
|
|
611
|
-
`);
|
|
612
|
-
// |direction.down
|
|
613
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(2, 20)), [{
|
|
614
|
-
label: 'Direction',
|
|
615
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.Enum
|
|
616
|
-
}]);
|
|
617
|
-
// dire|ction.down
|
|
618
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(2, 24)), [{
|
|
619
|
-
label: 'Direction',
|
|
620
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.Enum
|
|
621
|
-
}]);
|
|
622
|
-
// direction|.down
|
|
623
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(2, 29)), [{
|
|
624
|
-
label: 'Direction',
|
|
625
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.Enum
|
|
626
|
-
}]);
|
|
627
|
-
});
|
|
628
|
-
it('gets enum member completions from global enum', () => {
|
|
629
|
-
program.setFile('source/main.bs', `
|
|
630
|
-
sub Main()
|
|
631
|
-
direction.down
|
|
632
|
-
end sub
|
|
633
|
-
enum Direction
|
|
634
|
-
up
|
|
635
|
-
down
|
|
636
|
-
end enum
|
|
637
|
-
`);
|
|
638
|
-
// direction.|down
|
|
639
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(2, 30)), [{
|
|
640
|
-
label: 'up',
|
|
641
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
642
|
-
}, {
|
|
643
|
-
label: 'down',
|
|
644
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
645
|
-
}]);
|
|
646
|
-
// direction.do|wn
|
|
647
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(2, 32)), [{
|
|
648
|
-
label: 'up',
|
|
649
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
650
|
-
}, {
|
|
651
|
-
label: 'down',
|
|
652
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
653
|
-
}]);
|
|
654
|
-
// direction.down|
|
|
655
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(2, 34)), [{
|
|
656
|
-
label: 'up',
|
|
657
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
658
|
-
}, {
|
|
659
|
-
label: 'down',
|
|
660
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
661
|
-
}]);
|
|
662
|
-
});
|
|
663
|
-
it('gets enum statement completions from namespaced enum', () => {
|
|
664
|
-
program.setFile('source/main.bs', `
|
|
665
|
-
sub Main()
|
|
666
|
-
enums.direction.down
|
|
667
|
-
end sub
|
|
668
|
-
namespace enums
|
|
669
|
-
enum Direction
|
|
670
|
-
up
|
|
671
|
-
down
|
|
672
|
-
end enum
|
|
673
|
-
end namespace
|
|
674
|
-
`);
|
|
675
|
-
// enums.|direction.down
|
|
676
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(2, 26)), [{
|
|
677
|
-
label: 'Direction',
|
|
678
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.Enum
|
|
679
|
-
}]);
|
|
680
|
-
// enums.dire|ction.down
|
|
681
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(2, 30)), [{
|
|
682
|
-
label: 'Direction',
|
|
683
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.Enum
|
|
684
|
-
}]);
|
|
685
|
-
// enums.direction|.down
|
|
686
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(2, 35)), [{
|
|
687
|
-
label: 'Direction',
|
|
688
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.Enum
|
|
689
|
-
}]);
|
|
690
|
-
});
|
|
691
|
-
it('gets enum member completions from namespaced enum', () => {
|
|
692
|
-
program.setFile('source/main.bs', `
|
|
693
|
-
sub Main()
|
|
694
|
-
enums.direction.down
|
|
695
|
-
end sub
|
|
696
|
-
namespace enums
|
|
697
|
-
enum Direction
|
|
698
|
-
up
|
|
699
|
-
down
|
|
700
|
-
end enum
|
|
701
|
-
end namespace
|
|
702
|
-
`);
|
|
703
|
-
program.validate();
|
|
704
|
-
// enums.direction.|down
|
|
705
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(2, 36)), [{
|
|
706
|
-
label: 'up',
|
|
707
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
708
|
-
}, {
|
|
709
|
-
label: 'down',
|
|
710
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
711
|
-
}]);
|
|
712
|
-
// enums.direction.do|wn
|
|
713
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(2, 38)), [{
|
|
714
|
-
label: 'up',
|
|
715
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
716
|
-
}, {
|
|
717
|
-
label: 'down',
|
|
718
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
719
|
-
}]);
|
|
720
|
-
// enums.direction.down|
|
|
721
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(2, 40)), [{
|
|
722
|
-
label: 'up',
|
|
723
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
724
|
-
}, {
|
|
725
|
-
label: 'down',
|
|
726
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
727
|
-
}]);
|
|
728
|
-
});
|
|
729
|
-
it('excludes enum member completions from namespace enum', () => {
|
|
730
|
-
program.setFile('source/main.bs', `
|
|
731
|
-
sub Main()
|
|
732
|
-
direction.ba
|
|
733
|
-
end sub
|
|
734
|
-
namespace enums
|
|
735
|
-
enum Direction
|
|
736
|
-
up
|
|
737
|
-
down
|
|
738
|
-
end enum
|
|
739
|
-
end namespace
|
|
740
|
-
`);
|
|
741
|
-
program.validate();
|
|
742
|
-
//should NOT find Direction because it's not directly available at the top level (you need to go through `enums.` to get at it)
|
|
743
|
-
// dire|ction.down
|
|
744
|
-
(0, testHelpers_spec_1.expectCompletionsExcludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(2, 24)), [{
|
|
745
|
-
label: 'Direction',
|
|
746
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.Enum
|
|
747
|
-
}]);
|
|
748
|
-
});
|
|
749
|
-
it('infers namespace for enum statement completions', () => {
|
|
750
|
-
program.setFile('source/main.bs', `
|
|
751
|
-
namespace enums
|
|
752
|
-
sub Main()
|
|
753
|
-
direction.down
|
|
754
|
-
end sub
|
|
755
|
-
enum Direction
|
|
756
|
-
up
|
|
757
|
-
down
|
|
758
|
-
end enum
|
|
759
|
-
end namespace
|
|
760
|
-
enum Logic
|
|
761
|
-
yes
|
|
762
|
-
no
|
|
763
|
-
end enum
|
|
764
|
-
`);
|
|
765
|
-
// dire|ction.down
|
|
766
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(3, 33)), [{
|
|
767
|
-
label: 'Direction',
|
|
768
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.Enum
|
|
769
|
-
}, {
|
|
770
|
-
label: 'Logic',
|
|
771
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.Enum
|
|
772
|
-
}]);
|
|
773
|
-
});
|
|
774
|
-
it('infers namespace for enum member completions', () => {
|
|
775
|
-
program.setFile('source/main.bs', `
|
|
776
|
-
namespace enums
|
|
777
|
-
sub Main()
|
|
778
|
-
direction.down
|
|
779
|
-
end sub
|
|
780
|
-
enum Direction
|
|
781
|
-
up
|
|
782
|
-
down
|
|
783
|
-
end enum
|
|
784
|
-
end namespace
|
|
785
|
-
`);
|
|
786
|
-
// direction.do|wn
|
|
787
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(3, 36)), [{
|
|
788
|
-
label: 'up',
|
|
789
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
790
|
-
}, {
|
|
791
|
-
label: 'down',
|
|
792
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.EnumMember
|
|
793
|
-
}]);
|
|
794
|
-
});
|
|
795
|
-
it('supports explicit namespace for enum statement completions', () => {
|
|
796
|
-
program.setFile('source/main.bs', `
|
|
797
|
-
namespace enums
|
|
798
|
-
sub Main()
|
|
799
|
-
enums.direction.down
|
|
800
|
-
end sub
|
|
801
|
-
enum Direction
|
|
802
|
-
up
|
|
803
|
-
down
|
|
804
|
-
end enum
|
|
805
|
-
end namespace
|
|
806
|
-
`);
|
|
807
|
-
// enums.dire|ction.down
|
|
808
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(3, 38)), [{
|
|
809
|
-
label: 'Direction',
|
|
810
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.Enum
|
|
811
|
-
}]);
|
|
812
|
-
});
|
|
813
|
-
it('supports explicit namespace for enum statement completions', () => {
|
|
814
|
-
program.setFile('source/main.bs', `
|
|
815
|
-
namespace logger
|
|
816
|
-
sub log()
|
|
817
|
-
enums.direction.down
|
|
818
|
-
end sub
|
|
819
|
-
end namespace
|
|
820
|
-
namespace enums
|
|
821
|
-
enum Direction
|
|
822
|
-
up
|
|
823
|
-
down
|
|
824
|
-
end enum
|
|
825
|
-
end namespace
|
|
826
|
-
`);
|
|
827
|
-
// enums.dire|ction.down
|
|
828
|
-
(0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.util.createPosition(3, 38)), [{
|
|
829
|
-
label: 'Direction',
|
|
830
|
-
kind: vscode_languageserver_protocol_1.CompletionItemKind.Enum
|
|
831
|
-
}]);
|
|
832
|
-
});
|
|
833
|
-
it('handles both sides of a logical expression', () => {
|
|
834
|
-
testTranspile(`
|
|
586
|
+
it('handles both sides of a logical expression', async () => {
|
|
587
|
+
await testTranspile(`
|
|
835
588
|
sub main()
|
|
836
589
|
dir = m.direction = Direction.up
|
|
837
590
|
dir = Direction.up = m.direction
|
|
@@ -847,8 +600,8 @@ describe('EnumStatement', () => {
|
|
|
847
600
|
end sub
|
|
848
601
|
`);
|
|
849
602
|
});
|
|
850
|
-
it('handles when found in boolean expressions', () => {
|
|
851
|
-
testTranspile(`
|
|
603
|
+
it('handles when found in boolean expressions', async () => {
|
|
604
|
+
await testTranspile(`
|
|
852
605
|
sub main()
|
|
853
606
|
result = Direction.up = "up" or Direction.down = "down" and Direction.up = Direction.down
|
|
854
607
|
end sub
|
|
@@ -862,8 +615,8 @@ describe('EnumStatement', () => {
|
|
|
862
615
|
end sub
|
|
863
616
|
`);
|
|
864
617
|
});
|
|
865
|
-
it('replaces enum values in if statements', () => {
|
|
866
|
-
testTranspile(`
|
|
618
|
+
it('replaces enum values in if statements', async () => {
|
|
619
|
+
await testTranspile(`
|
|
867
620
|
sub main()
|
|
868
621
|
if m.direction = Direction.up
|
|
869
622
|
print Direction.up
|
|
@@ -881,8 +634,8 @@ describe('EnumStatement', () => {
|
|
|
881
634
|
end sub
|
|
882
635
|
`);
|
|
883
636
|
});
|
|
884
|
-
it('replaces enum values in function default parameter value expressions', () => {
|
|
885
|
-
testTranspile(`
|
|
637
|
+
it('replaces enum values in function default parameter value expressions', async () => {
|
|
638
|
+
await testTranspile(`
|
|
886
639
|
sub speak(dir = Direction.up)
|
|
887
640
|
end sub
|
|
888
641
|
enum Direction
|
|
@@ -893,8 +646,8 @@ describe('EnumStatement', () => {
|
|
|
893
646
|
end sub
|
|
894
647
|
`);
|
|
895
648
|
});
|
|
896
|
-
it('replaces enum values in for loops', () => {
|
|
897
|
-
testTranspile(`
|
|
649
|
+
it('replaces enum values in for loops', async () => {
|
|
650
|
+
await testTranspile(`
|
|
898
651
|
sub main()
|
|
899
652
|
for i = Loop.start to Loop.end step Loop.step
|
|
900
653
|
end for
|
|
@@ -911,8 +664,8 @@ describe('EnumStatement', () => {
|
|
|
911
664
|
end sub
|
|
912
665
|
`);
|
|
913
666
|
});
|
|
914
|
-
it('transpiles enum values when used in complex expressions', () => {
|
|
915
|
-
testTranspile(`
|
|
667
|
+
it('transpiles enum values when used in complex expressions', async () => {
|
|
668
|
+
await testTranspile(`
|
|
916
669
|
sub main()
|
|
917
670
|
print Direction.up.toStr()
|
|
918
671
|
end sub
|