brighterscript 0.66.0-alpha.0 → 0.66.0-alpha.10
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 +223 -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 +656 -340
- package/dist/Program.js.map +1 -1
- package/dist/ProgramBuilder.d.ts +10 -4
- package/dist/ProgramBuilder.js +83 -66
- package/dist/ProgramBuilder.js.map +1 -1
- package/dist/Scope.d.ts +52 -49
- package/dist/Scope.js +312 -247
- package/dist/Scope.js.map +1 -1
- package/dist/SymbolTable.d.ts +35 -14
- package/dist/SymbolTable.js +89 -26
- 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 +11 -4
- package/dist/bscPlugin/BscPlugin.js +26 -6
- 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 +442 -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 +35 -65
- 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/ProgramValidator.d.ts +3 -3
- package/dist/bscPlugin/validation/ProgramValidator.js +6 -6
- package/dist/bscPlugin/validation/ProgramValidator.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 +63 -91
- 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 +436 -81
- 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 +128 -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 +243 -293
- 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 +157 -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
|
@@ -64,6 +64,27 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
64
64
|
DiagnosticMessages_1.DiagnosticMessages.classConstructorMissingSuperCall()
|
|
65
65
|
]);
|
|
66
66
|
});
|
|
67
|
+
it('allows class named `optional`', () => {
|
|
68
|
+
program.setFile('source/main.bs', `
|
|
69
|
+
class optional
|
|
70
|
+
thing = 1
|
|
71
|
+
end class
|
|
72
|
+
`);
|
|
73
|
+
program.validate();
|
|
74
|
+
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
75
|
+
});
|
|
76
|
+
it('supports optional fields', () => {
|
|
77
|
+
program.setFile('source/main.bs', `
|
|
78
|
+
class Movie
|
|
79
|
+
name as string
|
|
80
|
+
optional subtitles as string
|
|
81
|
+
public optional isRepeatEnabled as boolean
|
|
82
|
+
private optional wasPlayed
|
|
83
|
+
end class
|
|
84
|
+
`);
|
|
85
|
+
program.validate();
|
|
86
|
+
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
87
|
+
});
|
|
67
88
|
it('access modifier is option for override', () => {
|
|
68
89
|
let file = program.setFile({ src: `${testHelpers_spec_2.rootDir}/source/main.bs`, dest: 'source/main.bs' }, `
|
|
69
90
|
class Animal
|
|
@@ -143,7 +164,7 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
143
164
|
end sub
|
|
144
165
|
end class
|
|
145
166
|
class Duck extends Bird
|
|
146
|
-
sub new()
|
|
167
|
+
sub new(name)
|
|
147
168
|
thing = { m: "m"}
|
|
148
169
|
print thing.m
|
|
149
170
|
name = "Donald" + "Duck"
|
|
@@ -157,18 +178,20 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
157
178
|
it('allows non-`m` expressions and statements before the super call', () => {
|
|
158
179
|
program.setFile('source/main.bs', `
|
|
159
180
|
class Bird
|
|
160
|
-
|
|
181
|
+
name as string
|
|
182
|
+
sub new(name as string)
|
|
183
|
+
m.name = name
|
|
161
184
|
end sub
|
|
162
185
|
end class
|
|
163
186
|
class Duck extends Bird
|
|
164
187
|
sub new()
|
|
165
188
|
m.name = m.name + "Duck"
|
|
166
|
-
super()
|
|
189
|
+
super("Flappy")
|
|
167
190
|
end sub
|
|
168
191
|
end class
|
|
169
192
|
`);
|
|
170
193
|
program.validate();
|
|
171
|
-
(0, testHelpers_spec_1.expectDiagnostics)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.classConstructorIllegalUseOfMBeforeSuperCall()), { range: vscode_languageserver_1.Range.create(
|
|
194
|
+
(0, testHelpers_spec_1.expectDiagnostics)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.classConstructorIllegalUseOfMBeforeSuperCall()), { range: vscode_languageserver_1.Range.create(9, 24, 9, 25) }), Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.classConstructorIllegalUseOfMBeforeSuperCall()), { range: vscode_languageserver_1.Range.create(9, 33, 9, 34) })]);
|
|
172
195
|
});
|
|
173
196
|
});
|
|
174
197
|
describe('transpile', () => {
|
|
@@ -184,22 +207,22 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
184
207
|
end class
|
|
185
208
|
`);
|
|
186
209
|
(0, chai_config_spec_1.expect)(file.ast.statements[1].body[0].func.body.statements[0].expression.callee.name.text).to.eql('super');
|
|
187
|
-
await program.
|
|
210
|
+
await program.getTranspiledFileContents(file.srcPath);
|
|
188
211
|
(0, chai_config_spec_1.expect)(file.ast.statements[1].body[0].func.body.statements[0].expression.callee.name.text).to.eql('super');
|
|
189
212
|
});
|
|
190
|
-
it('follows correct sequence for property initializers', () => {
|
|
191
|
-
testTranspile(`
|
|
213
|
+
it('follows correct sequence for property initializers', async () => {
|
|
214
|
+
await testTranspile(`
|
|
192
215
|
class Animal
|
|
193
216
|
species1 = "Animal"
|
|
194
217
|
sub new()
|
|
195
|
-
print "From Animal: " + m.
|
|
218
|
+
print "From Animal: " + m.species1
|
|
196
219
|
end sub
|
|
197
220
|
end class
|
|
198
221
|
class Duck extends Animal
|
|
199
222
|
species2 = "Duck"
|
|
200
223
|
sub new()
|
|
201
224
|
super()
|
|
202
|
-
print "From Duck: " + m.
|
|
225
|
+
print "From Duck: " + m.species2
|
|
203
226
|
end sub
|
|
204
227
|
end class
|
|
205
228
|
`, `
|
|
@@ -207,7 +230,7 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
207
230
|
instance = {}
|
|
208
231
|
instance.new = sub()
|
|
209
232
|
m.species1 = "Animal"
|
|
210
|
-
print "From Animal: " + m.
|
|
233
|
+
print "From Animal: " + m.species1
|
|
211
234
|
end sub
|
|
212
235
|
return instance
|
|
213
236
|
end function
|
|
@@ -222,7 +245,7 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
222
245
|
instance.new = sub()
|
|
223
246
|
m.super0_new()
|
|
224
247
|
m.species2 = "Duck"
|
|
225
|
-
print "From Duck: " + m.
|
|
248
|
+
print "From Duck: " + m.species2
|
|
226
249
|
end sub
|
|
227
250
|
return instance
|
|
228
251
|
end function
|
|
@@ -233,8 +256,8 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
233
256
|
end function
|
|
234
257
|
`, 'trim', 'source/main.bs');
|
|
235
258
|
});
|
|
236
|
-
it('allows comments as first line of constructor', () => {
|
|
237
|
-
testTranspile(`
|
|
259
|
+
it('allows comments as first line of constructor', async () => {
|
|
260
|
+
await testTranspile(`
|
|
238
261
|
class Animal
|
|
239
262
|
end class
|
|
240
263
|
class Duck extends Animal
|
|
@@ -271,8 +294,8 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
271
294
|
end function
|
|
272
295
|
`);
|
|
273
296
|
});
|
|
274
|
-
it('does not inject a call to super if one exists', () => {
|
|
275
|
-
testTranspile(`
|
|
297
|
+
it('does not inject a call to super if one exists', async () => {
|
|
298
|
+
await testTranspile(`
|
|
276
299
|
class Animal
|
|
277
300
|
end class
|
|
278
301
|
class Duck extends Animal
|
|
@@ -309,8 +332,8 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
309
332
|
end function
|
|
310
333
|
`);
|
|
311
334
|
});
|
|
312
|
-
it('handles class inheritance inferred constructor calls', () => {
|
|
313
|
-
testTranspile(`
|
|
335
|
+
it('handles class inheritance inferred constructor calls', async () => {
|
|
336
|
+
await testTranspile(`
|
|
314
337
|
class Animal
|
|
315
338
|
className1 = "Animal"
|
|
316
339
|
end class
|
|
@@ -363,8 +386,8 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
363
386
|
end function
|
|
364
387
|
`, undefined, 'source/main.bs');
|
|
365
388
|
});
|
|
366
|
-
it('works with namespaces', () => {
|
|
367
|
-
testTranspile(`
|
|
389
|
+
it('works with namespaces', async () => {
|
|
390
|
+
await testTranspile(`
|
|
368
391
|
namespace Birds.WaterFowl
|
|
369
392
|
class Duck
|
|
370
393
|
end class
|
|
@@ -398,8 +421,8 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
398
421
|
end function
|
|
399
422
|
`, undefined, 'source/main.bs');
|
|
400
423
|
});
|
|
401
|
-
it('works for simple class', () => {
|
|
402
|
-
testTranspile(`
|
|
424
|
+
it('works for simple class', async () => {
|
|
425
|
+
await testTranspile(`
|
|
403
426
|
class Duck
|
|
404
427
|
end class
|
|
405
428
|
`, `
|
|
@@ -416,8 +439,8 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
416
439
|
end function
|
|
417
440
|
`, undefined, 'source/main.bs');
|
|
418
441
|
});
|
|
419
|
-
it('registers the constructor and properly handles its parameters', () => {
|
|
420
|
-
testTranspile(`
|
|
442
|
+
it('registers the constructor and properly handles its parameters', async () => {
|
|
443
|
+
await testTranspile(`
|
|
421
444
|
class Duck
|
|
422
445
|
sub new(name as string, age as integer)
|
|
423
446
|
end sub
|
|
@@ -436,11 +459,14 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
436
459
|
end function
|
|
437
460
|
`, undefined, 'source/main.bs');
|
|
438
461
|
});
|
|
439
|
-
it('properly handles child class constructor override and super calls', () => {
|
|
440
|
-
testTranspile(`
|
|
462
|
+
it('properly handles child class constructor override and super calls', async () => {
|
|
463
|
+
await testTranspile(`
|
|
441
464
|
class Animal
|
|
442
465
|
sub new(name as string)
|
|
443
466
|
end sub
|
|
467
|
+
|
|
468
|
+
sub DoSomething()
|
|
469
|
+
end sub
|
|
444
470
|
end class
|
|
445
471
|
|
|
446
472
|
class Duck extends Animal
|
|
@@ -454,6 +480,8 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
454
480
|
instance = {}
|
|
455
481
|
instance.new = sub(name as string)
|
|
456
482
|
end sub
|
|
483
|
+
instance.DoSomething = sub()
|
|
484
|
+
end sub
|
|
457
485
|
return instance
|
|
458
486
|
end function
|
|
459
487
|
function Animal(name as string)
|
|
@@ -477,8 +505,8 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
477
505
|
end function
|
|
478
506
|
`, undefined, 'source/main.bs');
|
|
479
507
|
});
|
|
480
|
-
it('transpiles super in nested blocks', () => {
|
|
481
|
-
testTranspile(`
|
|
508
|
+
it('transpiles super in nested blocks', async () => {
|
|
509
|
+
await testTranspile(`
|
|
482
510
|
class Creature
|
|
483
511
|
sub new(name as string)
|
|
484
512
|
end sub
|
|
@@ -532,7 +560,7 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
532
560
|
end function
|
|
533
561
|
`, 'trim', 'source/main.bs');
|
|
534
562
|
});
|
|
535
|
-
it('properly transpiles classes from outside current namespace', () => {
|
|
563
|
+
it('properly transpiles classes from outside current namespace', async () => {
|
|
536
564
|
addFile('source/Animals.bs', `
|
|
537
565
|
namespace Animals
|
|
538
566
|
class Duck
|
|
@@ -541,7 +569,7 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
541
569
|
class Bird
|
|
542
570
|
end class
|
|
543
571
|
`);
|
|
544
|
-
testTranspile(`
|
|
572
|
+
await testTranspile(`
|
|
545
573
|
namespace Animals
|
|
546
574
|
sub init()
|
|
547
575
|
donaldDuck = new Duck()
|
|
@@ -557,8 +585,8 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
557
585
|
end sub
|
|
558
586
|
`, undefined, 'source/main.bs');
|
|
559
587
|
});
|
|
560
|
-
it('properly transpiles new statement for missing class ', () => {
|
|
561
|
-
testTranspile(`
|
|
588
|
+
it('properly transpiles new statement for missing class ', async () => {
|
|
589
|
+
await testTranspile(`
|
|
562
590
|
sub main()
|
|
563
591
|
bob = new Human()
|
|
564
592
|
end sub
|
|
@@ -568,14 +596,14 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
568
596
|
end sub
|
|
569
597
|
`, undefined, 'source/main.bs', false);
|
|
570
598
|
});
|
|
571
|
-
it('new keyword transpiles correctly', () => {
|
|
599
|
+
it('new keyword transpiles correctly', async () => {
|
|
572
600
|
addFile('source/Animal.bs', `
|
|
573
601
|
class Animal
|
|
574
602
|
sub new(name as string)
|
|
575
603
|
end sub
|
|
576
604
|
end class
|
|
577
605
|
`);
|
|
578
|
-
testTranspile(`
|
|
606
|
+
await testTranspile(`
|
|
579
607
|
sub main()
|
|
580
608
|
a = new Animal("donald")
|
|
581
609
|
end sub
|
|
@@ -585,8 +613,8 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
585
613
|
end sub
|
|
586
614
|
`, undefined, 'source/main.bs');
|
|
587
615
|
});
|
|
588
|
-
it('calls super ', () => {
|
|
589
|
-
const { file } = testTranspile(`
|
|
616
|
+
it('calls super ', async () => {
|
|
617
|
+
const { file } = await testTranspile(`
|
|
590
618
|
class Parent
|
|
591
619
|
sub new()
|
|
592
620
|
end sub
|
|
@@ -625,8 +653,8 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
625
653
|
const constructor = file.ast.statements[0].body[0];
|
|
626
654
|
(0, chai_config_spec_1.expect)(constructor.func.body.statements).to.be.lengthOf(0);
|
|
627
655
|
});
|
|
628
|
-
it('adds field initializers', () => {
|
|
629
|
-
const { file } = testTranspile(`
|
|
656
|
+
it('adds field initializers', async () => {
|
|
657
|
+
const { file } = await testTranspile(`
|
|
630
658
|
class Person
|
|
631
659
|
sub new()
|
|
632
660
|
end sub
|
|
@@ -650,8 +678,8 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
650
678
|
const constructor = file.ast.statements[0].body[0];
|
|
651
679
|
(0, chai_config_spec_1.expect)(constructor.func.body.statements).to.be.lengthOf(0);
|
|
652
680
|
});
|
|
653
|
-
it('does not screw up local variable references', () => {
|
|
654
|
-
testTranspile(`
|
|
681
|
+
it('does not screw up local variable references', async () => {
|
|
682
|
+
await testTranspile(`
|
|
655
683
|
class Animal
|
|
656
684
|
sub new(name as string)
|
|
657
685
|
m.name = name
|
|
@@ -758,8 +786,8 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
758
786
|
end sub
|
|
759
787
|
`, 'trim', 'source/main.bs');
|
|
760
788
|
});
|
|
761
|
-
it('calculates the proper super index', () => {
|
|
762
|
-
testTranspile(`
|
|
789
|
+
it('calculates the proper super index', async () => {
|
|
790
|
+
await testTranspile(`
|
|
763
791
|
class Duck
|
|
764
792
|
public sub walk(meters as integer)
|
|
765
793
|
print "Walked " + meters.ToStr() + " meters"
|
|
@@ -807,6 +835,305 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
807
835
|
end function
|
|
808
836
|
`, 'trim', 'source/main.bs');
|
|
809
837
|
});
|
|
838
|
+
it('adds namespacing to constructors on field definitions', async () => {
|
|
839
|
+
await testTranspile(`
|
|
840
|
+
namespace MyNS
|
|
841
|
+
class KlassOne
|
|
842
|
+
other = new KlassTwo()
|
|
843
|
+
end class
|
|
844
|
+
|
|
845
|
+
class KlassTwo
|
|
846
|
+
end class
|
|
847
|
+
end namespace
|
|
848
|
+
`, `
|
|
849
|
+
function __MyNS_KlassOne_builder()
|
|
850
|
+
instance = {}
|
|
851
|
+
instance.new = sub()
|
|
852
|
+
m.other = MyNS_KlassTwo()
|
|
853
|
+
end sub
|
|
854
|
+
return instance
|
|
855
|
+
end function
|
|
856
|
+
function MyNS_KlassOne()
|
|
857
|
+
instance = __MyNS_KlassOne_builder()
|
|
858
|
+
instance.new()
|
|
859
|
+
return instance
|
|
860
|
+
end function
|
|
861
|
+
function __MyNS_KlassTwo_builder()
|
|
862
|
+
instance = {}
|
|
863
|
+
instance.new = sub()
|
|
864
|
+
end sub
|
|
865
|
+
return instance
|
|
866
|
+
end function
|
|
867
|
+
function MyNS_KlassTwo()
|
|
868
|
+
instance = __MyNS_KlassTwo_builder()
|
|
869
|
+
instance.new()
|
|
870
|
+
return instance
|
|
871
|
+
end function
|
|
872
|
+
`, 'trim', 'source/main.bs');
|
|
873
|
+
});
|
|
874
|
+
it('works with enums as field initial values inside a namespace', async () => {
|
|
875
|
+
await testTranspile(`
|
|
876
|
+
namespace MyNS
|
|
877
|
+
class HasEnumKlass
|
|
878
|
+
enumValue = MyEnum.A
|
|
879
|
+
end class
|
|
880
|
+
enum MyEnum
|
|
881
|
+
A = "A"
|
|
882
|
+
B = "B"
|
|
883
|
+
end enum
|
|
884
|
+
end namespace
|
|
885
|
+
`, `
|
|
886
|
+
function __MyNS_HasEnumKlass_builder()
|
|
887
|
+
instance = {}
|
|
888
|
+
instance.new = sub()
|
|
889
|
+
m.enumValue = "A"
|
|
890
|
+
end sub
|
|
891
|
+
return instance
|
|
892
|
+
end function
|
|
893
|
+
function MyNS_HasEnumKlass()
|
|
894
|
+
instance = __MyNS_HasEnumKlass_builder()
|
|
895
|
+
instance.new()
|
|
896
|
+
return instance
|
|
897
|
+
end function
|
|
898
|
+
`, 'trim', 'source/main.bs');
|
|
899
|
+
});
|
|
900
|
+
it('allows enums as super args inside a namespace', async () => {
|
|
901
|
+
await testTranspile(`
|
|
902
|
+
namespace MyNS
|
|
903
|
+
class SubKlass extends SuperKlass
|
|
904
|
+
sub new()
|
|
905
|
+
super(MyEnum.B)
|
|
906
|
+
end sub
|
|
907
|
+
end class
|
|
908
|
+
|
|
909
|
+
class SuperKlass
|
|
910
|
+
sub new(enumVal as MyEnum)
|
|
911
|
+
print enumVal
|
|
912
|
+
end sub
|
|
913
|
+
end class
|
|
914
|
+
|
|
915
|
+
enum MyEnum
|
|
916
|
+
A = "A"
|
|
917
|
+
B = "B"
|
|
918
|
+
end enum
|
|
919
|
+
end namespace
|
|
920
|
+
`, `
|
|
921
|
+
function __MyNS_SubKlass_builder()
|
|
922
|
+
instance = __MyNS_SuperKlass_builder()
|
|
923
|
+
instance.super0_new = instance.new
|
|
924
|
+
instance.new = sub()
|
|
925
|
+
m.super0_new("B")
|
|
926
|
+
end sub
|
|
927
|
+
return instance
|
|
928
|
+
end function
|
|
929
|
+
function MyNS_SubKlass()
|
|
930
|
+
instance = __MyNS_SubKlass_builder()
|
|
931
|
+
instance.new()
|
|
932
|
+
return instance
|
|
933
|
+
end function
|
|
934
|
+
function __MyNS_SuperKlass_builder()
|
|
935
|
+
instance = {}
|
|
936
|
+
instance.new = sub(enumVal as dynamic)
|
|
937
|
+
print enumVal
|
|
938
|
+
end sub
|
|
939
|
+
return instance
|
|
940
|
+
end function
|
|
941
|
+
function MyNS_SuperKlass(enumVal as dynamic)
|
|
942
|
+
instance = __MyNS_SuperKlass_builder()
|
|
943
|
+
instance.new(enumVal)
|
|
944
|
+
return instance
|
|
945
|
+
end function
|
|
946
|
+
`, 'trim', 'source/main.bs');
|
|
947
|
+
});
|
|
948
|
+
it('works with enums as values referenced in a namespace directly', async () => {
|
|
949
|
+
await testTranspile(`
|
|
950
|
+
namespace MyNS
|
|
951
|
+
class HasEnumKlass
|
|
952
|
+
myArray = [true, true] as boolean[]
|
|
953
|
+
sub new()
|
|
954
|
+
m.myArray[MyEnum.A] = true
|
|
955
|
+
m.myArray[MyEnum.B] = false
|
|
956
|
+
end sub
|
|
957
|
+
end class
|
|
958
|
+
enum MyEnum
|
|
959
|
+
A = 0
|
|
960
|
+
B = 1
|
|
961
|
+
end enum
|
|
962
|
+
end namespace
|
|
963
|
+
`, `
|
|
964
|
+
function __MyNS_HasEnumKlass_builder()
|
|
965
|
+
instance = {}
|
|
966
|
+
instance.new = sub()
|
|
967
|
+
m.myArray = [
|
|
968
|
+
true
|
|
969
|
+
true
|
|
970
|
+
]
|
|
971
|
+
m.myArray[0] = true
|
|
972
|
+
m.myArray[1] = false
|
|
973
|
+
end sub
|
|
974
|
+
return instance
|
|
975
|
+
end function
|
|
976
|
+
function MyNS_HasEnumKlass()
|
|
977
|
+
instance = __MyNS_HasEnumKlass_builder()
|
|
978
|
+
instance.new()
|
|
979
|
+
return instance
|
|
980
|
+
end function
|
|
981
|
+
`, 'trim', 'source/main.bs');
|
|
982
|
+
});
|
|
983
|
+
it('works with enums as values referenced in a namespace with namespace', async () => {
|
|
984
|
+
await testTranspile(`
|
|
985
|
+
namespace MyNS
|
|
986
|
+
class HasEnumKlass
|
|
987
|
+
myArray = [true, true] as boolean[]
|
|
988
|
+
sub new()
|
|
989
|
+
m.myArray[MyNS.MyEnum.A] = true
|
|
990
|
+
m.myArray[MyNS.MyEnum.B] = false
|
|
991
|
+
end sub
|
|
992
|
+
end class
|
|
993
|
+
enum MyEnum
|
|
994
|
+
A = 0
|
|
995
|
+
B = 1
|
|
996
|
+
end enum
|
|
997
|
+
end namespace
|
|
998
|
+
`, `
|
|
999
|
+
function __MyNS_HasEnumKlass_builder()
|
|
1000
|
+
instance = {}
|
|
1001
|
+
instance.new = sub()
|
|
1002
|
+
m.myArray = [
|
|
1003
|
+
true
|
|
1004
|
+
true
|
|
1005
|
+
]
|
|
1006
|
+
m.myArray[0] = true
|
|
1007
|
+
m.myArray[1] = false
|
|
1008
|
+
end sub
|
|
1009
|
+
return instance
|
|
1010
|
+
end function
|
|
1011
|
+
function MyNS_HasEnumKlass()
|
|
1012
|
+
instance = __MyNS_HasEnumKlass_builder()
|
|
1013
|
+
instance.new()
|
|
1014
|
+
return instance
|
|
1015
|
+
end function
|
|
1016
|
+
`, 'trim', 'source/main.bs');
|
|
1017
|
+
});
|
|
1018
|
+
it('allows namespaced class function as function parameters', async () => {
|
|
1019
|
+
await testTranspile(`
|
|
1020
|
+
namespace Alpha
|
|
1021
|
+
function foo()
|
|
1022
|
+
return 1
|
|
1023
|
+
end function
|
|
1024
|
+
|
|
1025
|
+
function callSomeFunc(f as function)
|
|
1026
|
+
return f()
|
|
1027
|
+
end function
|
|
1028
|
+
|
|
1029
|
+
sub callFoo()
|
|
1030
|
+
callSomeFunc(foo)
|
|
1031
|
+
end sub
|
|
1032
|
+
end namespace
|
|
1033
|
+
`, `
|
|
1034
|
+
function Alpha_foo()
|
|
1035
|
+
return 1
|
|
1036
|
+
end function
|
|
1037
|
+
|
|
1038
|
+
function Alpha_callSomeFunc(f as function)
|
|
1039
|
+
return f()
|
|
1040
|
+
end function
|
|
1041
|
+
|
|
1042
|
+
sub Alpha_callFoo()
|
|
1043
|
+
Alpha_callSomeFunc(Alpha_foo)
|
|
1044
|
+
end sub
|
|
1045
|
+
`, 'trim', 'source/main.bs');
|
|
1046
|
+
});
|
|
1047
|
+
it('allows namespaced class constructors as function parameters', async () => {
|
|
1048
|
+
await testTranspile(`
|
|
1049
|
+
namespace Alpha
|
|
1050
|
+
class Button
|
|
1051
|
+
end class
|
|
1052
|
+
|
|
1053
|
+
function callSomeFunc(f as function)
|
|
1054
|
+
return f()
|
|
1055
|
+
end function
|
|
1056
|
+
|
|
1057
|
+
sub makeButton()
|
|
1058
|
+
callSomeFunc(Button)
|
|
1059
|
+
end sub
|
|
1060
|
+
end namespace
|
|
1061
|
+
`, `
|
|
1062
|
+
function __Alpha_Button_builder()
|
|
1063
|
+
instance = {}
|
|
1064
|
+
instance.new = sub()
|
|
1065
|
+
end sub
|
|
1066
|
+
return instance
|
|
1067
|
+
end function
|
|
1068
|
+
function Alpha_Button()
|
|
1069
|
+
instance = __Alpha_Button_builder()
|
|
1070
|
+
instance.new()
|
|
1071
|
+
return instance
|
|
1072
|
+
end function
|
|
1073
|
+
|
|
1074
|
+
function Alpha_callSomeFunc(f as function)
|
|
1075
|
+
return f()
|
|
1076
|
+
end function
|
|
1077
|
+
|
|
1078
|
+
sub Alpha_makeButton()
|
|
1079
|
+
Alpha_callSomeFunc(Alpha_Button)
|
|
1080
|
+
end sub
|
|
1081
|
+
`, 'trim', 'source/main.bs');
|
|
1082
|
+
});
|
|
1083
|
+
it('allows class constructors as functions in array', async () => {
|
|
1084
|
+
await testTranspile(`
|
|
1085
|
+
namespace Alpha
|
|
1086
|
+
class Button
|
|
1087
|
+
end class
|
|
1088
|
+
|
|
1089
|
+
class ButtonContainer
|
|
1090
|
+
private button = new Alpha.Button()
|
|
1091
|
+
|
|
1092
|
+
sub new()
|
|
1093
|
+
m.init()
|
|
1094
|
+
end sub
|
|
1095
|
+
|
|
1096
|
+
sub init()
|
|
1097
|
+
button = new Alpha.Button()
|
|
1098
|
+
items = [m.button, button, Alpha.Button]
|
|
1099
|
+
end sub
|
|
1100
|
+
end class
|
|
1101
|
+
end namespace
|
|
1102
|
+
`, `
|
|
1103
|
+
function __Alpha_Button_builder()
|
|
1104
|
+
instance = {}
|
|
1105
|
+
instance.new = sub()
|
|
1106
|
+
end sub
|
|
1107
|
+
return instance
|
|
1108
|
+
end function
|
|
1109
|
+
function Alpha_Button()
|
|
1110
|
+
instance = __Alpha_Button_builder()
|
|
1111
|
+
instance.new()
|
|
1112
|
+
return instance
|
|
1113
|
+
end function
|
|
1114
|
+
function __Alpha_ButtonContainer_builder()
|
|
1115
|
+
instance = {}
|
|
1116
|
+
instance.new = sub()
|
|
1117
|
+
m.button = Alpha_Button()
|
|
1118
|
+
m.init()
|
|
1119
|
+
end sub
|
|
1120
|
+
instance.init = sub()
|
|
1121
|
+
button = Alpha_Button()
|
|
1122
|
+
items = [
|
|
1123
|
+
m.button
|
|
1124
|
+
Alpha_button
|
|
1125
|
+
Alpha_Button
|
|
1126
|
+
]
|
|
1127
|
+
end sub
|
|
1128
|
+
return instance
|
|
1129
|
+
end function
|
|
1130
|
+
function Alpha_ButtonContainer()
|
|
1131
|
+
instance = __Alpha_ButtonContainer_builder()
|
|
1132
|
+
instance.new()
|
|
1133
|
+
return instance
|
|
1134
|
+
end function
|
|
1135
|
+
`, 'trim', 'source/main.bs');
|
|
1136
|
+
});
|
|
810
1137
|
});
|
|
811
1138
|
it('detects using `new` keyword on non-classes', () => {
|
|
812
1139
|
program.setFile('source/main.bs', `
|
|
@@ -898,9 +1225,9 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
898
1225
|
end function
|
|
899
1226
|
end class
|
|
900
1227
|
`);
|
|
901
|
-
await program.
|
|
1228
|
+
await program.build({ stagingDir: testHelpers_spec_2.stagingDir });
|
|
902
1229
|
fsExtra.emptyDirSync(testHelpers_spec_2.stagingDir);
|
|
903
|
-
await program.
|
|
1230
|
+
await program.build({ stagingDir: testHelpers_spec_2.stagingDir });
|
|
904
1231
|
(0, chai_config_spec_1.expect)(fsExtra.readFileSync((0, util_1.standardizePath) `${testHelpers_spec_2.stagingDir}/source/lib.brs`).toString().trimEnd()).to.eql((0, testHelpers_spec_1.trim) `
|
|
905
1232
|
function __Being_builder()
|
|
906
1233
|
instance = {}
|
|
@@ -1137,7 +1464,7 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
1137
1464
|
`);
|
|
1138
1465
|
program.validate();
|
|
1139
1466
|
(0, testHelpers_spec_1.expectDiagnostics)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.cannotFindName('GroundedBird', 'Vertibrates.GroundedBird')), { relatedInformation: [{
|
|
1140
|
-
message: `
|
|
1467
|
+
message: `In scope 'source'`
|
|
1141
1468
|
}] })]);
|
|
1142
1469
|
});
|
|
1143
1470
|
it('namespaced parent class from inside namespace', () => {
|
|
@@ -1224,8 +1551,8 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
1224
1551
|
end class
|
|
1225
1552
|
`);
|
|
1226
1553
|
program.validate();
|
|
1227
|
-
(0, testHelpers_spec_1.
|
|
1228
|
-
DiagnosticMessages_1.DiagnosticMessages.
|
|
1554
|
+
(0, testHelpers_spec_1.expectDiagnosticsIncludes)(program, [
|
|
1555
|
+
DiagnosticMessages_1.DiagnosticMessages.nameCollision('Class', 'Class', 'Animal')
|
|
1229
1556
|
]);
|
|
1230
1557
|
});
|
|
1231
1558
|
it('catches duplicate namespace-level class declarations', () => {
|
|
@@ -1238,8 +1565,8 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
1238
1565
|
end namespace
|
|
1239
1566
|
`);
|
|
1240
1567
|
program.validate();
|
|
1241
|
-
(0, testHelpers_spec_1.
|
|
1242
|
-
DiagnosticMessages_1.DiagnosticMessages.
|
|
1568
|
+
(0, testHelpers_spec_1.expectDiagnosticsIncludes)(program, [
|
|
1569
|
+
DiagnosticMessages_1.DiagnosticMessages.nameCollision('Class', 'Class', 'Animal').message
|
|
1243
1570
|
]);
|
|
1244
1571
|
});
|
|
1245
1572
|
it('catches namespaced class name which is the same as a global class', () => {
|
|
@@ -1253,7 +1580,7 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
1253
1580
|
`);
|
|
1254
1581
|
program.validate();
|
|
1255
1582
|
(0, testHelpers_spec_1.expectDiagnostics)(program, [
|
|
1256
|
-
DiagnosticMessages_1.DiagnosticMessages.
|
|
1583
|
+
DiagnosticMessages_1.DiagnosticMessages.nameCollision('Class', 'Class', 'Animal').message
|
|
1257
1584
|
]);
|
|
1258
1585
|
});
|
|
1259
1586
|
it('catches class with same name as function', () => {
|
|
@@ -1264,7 +1591,7 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
1264
1591
|
end sub
|
|
1265
1592
|
`);
|
|
1266
1593
|
program.validate();
|
|
1267
|
-
(0, testHelpers_spec_1.
|
|
1594
|
+
(0, testHelpers_spec_1.expectDiagnosticsIncludes)(program, [
|
|
1268
1595
|
DiagnosticMessages_1.DiagnosticMessages.functionCannotHaveSameNameAsClass('Animal').message
|
|
1269
1596
|
]);
|
|
1270
1597
|
});
|
|
@@ -1276,7 +1603,7 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
1276
1603
|
end sub
|
|
1277
1604
|
`);
|
|
1278
1605
|
program.validate();
|
|
1279
|
-
(0, testHelpers_spec_1.
|
|
1606
|
+
(0, testHelpers_spec_1.expectDiagnosticsIncludes)(program, [
|
|
1280
1607
|
DiagnosticMessages_1.DiagnosticMessages.functionCannotHaveSameNameAsClass('animal').message
|
|
1281
1608
|
]);
|
|
1282
1609
|
});
|
|
@@ -1321,7 +1648,7 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
1321
1648
|
program.validate();
|
|
1322
1649
|
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
1323
1650
|
});
|
|
1324
|
-
it('computes correct super index for grandchild class', () => {
|
|
1651
|
+
it('computes correct super index for grandchild class', async () => {
|
|
1325
1652
|
program.setFile('source/main.bs', `
|
|
1326
1653
|
sub Main()
|
|
1327
1654
|
c = new App.ClassC()
|
|
@@ -1335,7 +1662,7 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
1335
1662
|
end class
|
|
1336
1663
|
end namespace
|
|
1337
1664
|
`);
|
|
1338
|
-
testTranspile(`
|
|
1665
|
+
await testTranspile(`
|
|
1339
1666
|
namespace App
|
|
1340
1667
|
class ClassC extends ClassB
|
|
1341
1668
|
sub new()
|
|
@@ -1359,12 +1686,12 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
1359
1686
|
end function
|
|
1360
1687
|
`, 'trim', 'source/App.ClassC.bs');
|
|
1361
1688
|
});
|
|
1362
|
-
it('computes correct super index for namespaced child class and global parent class', () => {
|
|
1689
|
+
it('computes correct super index for namespaced child class and global parent class', async () => {
|
|
1363
1690
|
program.setFile('source/ClassA.bs', `
|
|
1364
1691
|
class ClassA
|
|
1365
1692
|
end class
|
|
1366
1693
|
`);
|
|
1367
|
-
testTranspile(`
|
|
1694
|
+
await testTranspile(`
|
|
1368
1695
|
namespace App
|
|
1369
1696
|
class ClassB extends ClassA
|
|
1370
1697
|
end class
|
|
@@ -1418,7 +1745,7 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
1418
1745
|
`);
|
|
1419
1746
|
program.validate();
|
|
1420
1747
|
});
|
|
1421
|
-
it
|
|
1748
|
+
it('detects calling class constructors with too many parameters', () => {
|
|
1422
1749
|
program.setFile('source/main.bs', `
|
|
1423
1750
|
class Parameterless
|
|
1424
1751
|
sub new()
|