brighterscript 0.66.0-alpha.9 → 0.67.0
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 +116 -73
- package/README.md +14 -418
- package/dist/BsConfig.d.ts +25 -2
- package/dist/Cache.js +3 -3
- package/dist/Cache.js.map +1 -1
- package/dist/CodeActionUtil.d.ts +3 -3
- package/dist/CodeActionUtil.js.map +1 -1
- package/dist/CommentFlagProcessor.d.ts +3 -4
- package/dist/CommentFlagProcessor.js +4 -3
- package/dist/CommentFlagProcessor.js.map +1 -1
- package/dist/DependencyGraph.js +8 -8
- package/dist/DependencyGraph.js.map +1 -1
- package/dist/DiagnosticFilterer.d.ts +8 -4
- package/dist/DiagnosticFilterer.js +71 -38
- package/dist/DiagnosticFilterer.js.map +1 -1
- package/dist/DiagnosticMessages.d.ts +15 -36
- package/dist/DiagnosticMessages.js +15 -61
- package/dist/DiagnosticMessages.js.map +1 -1
- package/dist/DiagnosticSeverityAdjuster.js +3 -0
- package/dist/DiagnosticSeverityAdjuster.js.map +1 -1
- package/dist/FunctionScope.d.ts +2 -3
- package/dist/FunctionScope.js +0 -3
- package/dist/FunctionScope.js.map +1 -1
- package/dist/LanguageServer.d.ts +1 -2
- package/dist/LanguageServer.js +29 -35
- package/dist/LanguageServer.js.map +1 -1
- package/dist/Logger.d.ts +5 -9
- package/dist/Logger.js +18 -22
- package/dist/Logger.js.map +1 -1
- package/dist/PluginInterface.d.ts +13 -15
- package/dist/PluginInterface.js +16 -70
- package/dist/PluginInterface.js.map +1 -1
- package/dist/Program.d.ts +105 -138
- package/dist/Program.js +479 -702
- package/dist/Program.js.map +1 -1
- package/dist/ProgramBuilder.d.ts +8 -19
- package/dist/ProgramBuilder.js +82 -87
- package/dist/ProgramBuilder.js.map +1 -1
- package/dist/Scope.d.ts +56 -46
- package/dist/Scope.js +281 -217
- package/dist/Scope.js.map +1 -1
- package/dist/Stopwatch.js +1 -1
- package/dist/Stopwatch.js.map +1 -1
- package/dist/SymbolTable.d.ts +12 -68
- package/dist/SymbolTable.js +28 -213
- package/dist/SymbolTable.js.map +1 -1
- package/dist/XmlScope.d.ts +5 -7
- package/dist/XmlScope.js +36 -76
- package/dist/XmlScope.js.map +1 -1
- package/dist/astUtils/{Editor.d.ts → AstEditor.d.ts} +1 -6
- package/dist/astUtils/{Editor.js → AstEditor.js} +3 -9
- package/dist/astUtils/AstEditor.js.map +1 -0
- package/dist/astUtils/{Editor.spec.js → AstEditor.spec.js} +6 -10
- package/dist/astUtils/AstEditor.spec.js.map +1 -0
- package/dist/astUtils/creators.d.ts +8 -19
- package/dist/astUtils/creators.js +22 -54
- package/dist/astUtils/creators.js.map +1 -1
- package/dist/astUtils/creators.spec.js +0 -10
- package/dist/astUtils/creators.spec.js.map +1 -1
- package/dist/astUtils/reflection.d.ts +45 -81
- package/dist/astUtils/reflection.js +157 -220
- package/dist/astUtils/reflection.js.map +1 -1
- package/dist/astUtils/reflection.spec.js +19 -96
- package/dist/astUtils/reflection.spec.js.map +1 -1
- package/dist/astUtils/stackedVisitor.spec.js.map +1 -1
- package/dist/astUtils/visitors.d.ts +14 -18
- package/dist/astUtils/visitors.js +9 -22
- package/dist/astUtils/visitors.js.map +1 -1
- package/dist/astUtils/visitors.spec.js +9 -62
- package/dist/astUtils/visitors.spec.js.map +1 -1
- package/dist/astUtils/xml.d.ts +9 -9
- package/dist/astUtils/xml.js +6 -6
- package/dist/astUtils/xml.js.map +1 -1
- package/dist/bscPlugin/BscPlugin.d.ts +8 -11
- package/dist/bscPlugin/BscPlugin.js +21 -29
- package/dist/bscPlugin/BscPlugin.js.map +1 -1
- package/dist/bscPlugin/CallExpressionInfo.d.ts +6 -5
- package/dist/bscPlugin/CallExpressionInfo.js +2 -2
- package/dist/bscPlugin/CallExpressionInfo.js.map +1 -1
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +11 -11
- 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 +1 -49
- package/dist/bscPlugin/completions/CompletionsProcessor.js +23 -424
- package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
- package/dist/bscPlugin/definition/DefinitionProvider.d.ts +13 -0
- package/dist/bscPlugin/definition/DefinitionProvider.js +200 -0
- package/dist/bscPlugin/definition/DefinitionProvider.js.map +1 -0
- package/dist/bscPlugin/definition/DefinitionProvider.spec.js +87 -0
- package/dist/bscPlugin/definition/DefinitionProvider.spec.js.map +1 -0
- package/dist/bscPlugin/hover/HoverProcessor.d.ts +3 -7
- package/dist/bscPlugin/hover/HoverProcessor.js +88 -128
- package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
- package/dist/bscPlugin/hover/HoverProcessor.spec.js +24 -336
- package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/references/ReferencesProvider.d.ts +12 -0
- package/dist/bscPlugin/references/ReferencesProvider.js +56 -0
- package/dist/bscPlugin/references/ReferencesProvider.js.map +1 -0
- package/dist/bscPlugin/references/ReferencesProvider.spec.js +51 -0
- package/dist/bscPlugin/references/ReferencesProvider.spec.js.map +1 -0
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +0 -1
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +5 -49
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +0 -22
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/symbols/DocumentSymbolProcessor.d.ts +7 -0
- package/dist/bscPlugin/symbols/DocumentSymbolProcessor.js +22 -0
- package/dist/bscPlugin/symbols/DocumentSymbolProcessor.js.map +1 -0
- package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.js +290 -0
- package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.js.map +1 -0
- package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.d.ts +7 -0
- package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.js +26 -0
- package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.js.map +1 -0
- package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.js +245 -0
- package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.js.map +1 -0
- package/dist/bscPlugin/symbols/symbolUtils.d.ts +5 -0
- package/dist/bscPlugin/symbols/symbolUtils.js +140 -0
- package/dist/bscPlugin/symbols/symbolUtils.js.map +1 -0
- package/dist/bscPlugin/transpile/{BrsFileTranspileProcessor.d.ts → BrsFilePreTranspileProcessor.d.ts} +2 -4
- package/dist/bscPlugin/transpile/{BrsFileTranspileProcessor.js → BrsFilePreTranspileProcessor.js} +15 -36
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +1 -0
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js +46 -0
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js.map +1 -0
- package/dist/bscPlugin/validation/BrsFileValidator.d.ts +1 -0
- package/dist/bscPlugin/validation/BrsFileValidator.js +30 -41
- package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
- package/dist/bscPlugin/validation/BrsFileValidator.spec.js +2 -2
- 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 +6 -28
- package/dist/bscPlugin/validation/ScopeValidator.js +166 -387
- package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
- package/dist/bscPlugin/validation/XmlFileValidator.js +9 -9
- package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -1
- package/dist/diagnosticUtils.d.ts +2 -3
- package/dist/diagnosticUtils.js +5 -5
- 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/BrsFile.Class.spec.js +143 -114
- package/dist/files/BrsFile.Class.spec.js.map +1 -1
- package/dist/files/BrsFile.d.ts +61 -83
- package/dist/files/BrsFile.js +552 -607
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +1365 -1201
- package/dist/files/BrsFile.spec.js.map +1 -1
- package/dist/files/XmlFile.d.ts +28 -56
- package/dist/files/XmlFile.js +103 -89
- package/dist/files/XmlFile.js.map +1 -1
- package/dist/files/XmlFile.spec.js +179 -122
- package/dist/files/XmlFile.spec.js.map +1 -1
- package/dist/files/tests/imports.spec.js +19 -29
- 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 +83 -88
- package/dist/globalCallables.js.map +1 -1
- package/dist/index.d.ts +1 -9
- package/dist/index.js +1 -9
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +173 -423
- package/dist/interfaces.js +0 -24
- package/dist/interfaces.js.map +1 -1
- package/dist/lexer/Lexer.d.ts +9 -15
- package/dist/lexer/Lexer.js +35 -46
- package/dist/lexer/Lexer.js.map +1 -1
- package/dist/lexer/Lexer.spec.js +48 -40
- package/dist/lexer/Lexer.spec.js.map +1 -1
- package/dist/lexer/Token.d.ts +1 -5
- package/dist/lexer/Token.js +1 -1
- package/dist/lexer/Token.js.map +1 -1
- package/dist/lexer/TokenKind.d.ts +0 -6
- package/dist/lexer/TokenKind.js +2 -14
- package/dist/lexer/TokenKind.js.map +1 -1
- package/dist/logging.d.ts +9 -0
- package/dist/logging.js +16 -0
- package/dist/logging.js.map +1 -0
- package/dist/parser/AstNode.d.ts +6 -90
- package/dist/parser/AstNode.js +5 -96
- package/dist/parser/AstNode.js.map +1 -1
- package/dist/parser/AstNode.spec.js.map +1 -1
- package/dist/parser/BrsTranspileState.d.ts +3 -4
- package/dist/parser/BrsTranspileState.js +2 -3
- package/dist/parser/BrsTranspileState.js.map +1 -1
- package/dist/parser/Expression.d.ts +114 -137
- package/dist/parser/Expression.js +244 -373
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.Class.spec.js +19 -46
- package/dist/parser/Parser.Class.spec.js.map +1 -1
- package/dist/parser/Parser.d.ts +18 -14
- package/dist/parser/Parser.js +196 -175
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/Parser.spec.d.ts +0 -2
- package/dist/parser/Parser.spec.js +10 -674
- package/dist/parser/Parser.spec.js.map +1 -1
- package/dist/parser/SGParser.d.ts +6 -44
- package/dist/parser/SGParser.js +198 -194
- package/dist/parser/SGParser.js.map +1 -1
- package/dist/parser/SGParser.spec.js +11 -14
- package/dist/parser/SGParser.spec.js.map +1 -1
- package/dist/parser/SGTypes.d.ts +52 -280
- package/dist/parser/SGTypes.js +185 -562
- package/dist/parser/SGTypes.js.map +1 -1
- package/dist/parser/Statement.d.ts +140 -172
- package/dist/parser/Statement.js +201 -337
- package/dist/parser/Statement.js.map +1 -1
- package/dist/parser/Statement.spec.js.map +1 -1
- package/dist/parser/TranspileState.d.ts +3 -2
- package/dist/parser/TranspileState.js +8 -10
- package/dist/parser/TranspileState.js.map +1 -1
- package/dist/parser/tests/Parser.spec.js +3 -5
- package/dist/parser/tests/Parser.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/For.spec.js +8 -16
- package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/ForEach.spec.js +6 -12
- package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/While.spec.js +4 -8
- 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/Indexing.spec.js +25 -0
- package/dist/parser/tests/expression/Indexing.spec.js.map +1 -1
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +73 -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 +47 -35
- package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/TernaryExpression.spec.js +83 -36
- package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/UnaryExpression.spec.js +2 -2
- package/dist/parser/tests/expression/UnaryExpression.spec.js.map +1 -1
- package/dist/parser/tests/statement/ConstStatement.spec.js +26 -27
- 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/Dim.spec.js.map +1 -1
- package/dist/parser/tests/statement/Enum.spec.js +393 -90
- 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/Function.spec.js +1 -1
- package/dist/parser/tests/statement/Function.spec.js.map +1 -1
- package/dist/parser/tests/statement/InterfaceStatement.spec.js +18 -18
- package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Misc.spec.js.map +1 -1
- package/dist/parser/tests/statement/PrintStatement.spec.js +13 -16
- package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/ReturnStatement.spec.js +3 -5
- package/dist/parser/tests/statement/ReturnStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Set.spec.js +13 -26
- package/dist/parser/tests/statement/Set.spec.js.map +1 -1
- package/dist/parser/tests/statement/Throw.spec.js.map +1 -1
- package/dist/parser/tests/statement/TryCatch.spec.js.map +1 -1
- package/dist/preprocessor/Chunk.js +1 -2
- package/dist/preprocessor/Chunk.js.map +1 -1
- package/dist/preprocessor/Preprocessor.d.ts +3 -4
- package/dist/preprocessor/Preprocessor.js +3 -3
- package/dist/preprocessor/Preprocessor.js.map +1 -1
- package/dist/preprocessor/PreprocessorParser.js +8 -1
- package/dist/preprocessor/PreprocessorParser.js.map +1 -1
- package/dist/roku-types/data.json +293 -243
- package/dist/roku-types/index.d.ts +38 -17
- package/dist/types/ArrayType.d.ts +4 -9
- package/dist/types/ArrayType.js +24 -72
- package/dist/types/ArrayType.js.map +1 -1
- package/dist/types/ArrayType.spec.js +10 -39
- package/dist/types/ArrayType.spec.js.map +1 -1
- package/dist/types/BooleanType.d.ts +4 -8
- package/dist/types/BooleanType.js +8 -19
- package/dist/types/BooleanType.js.map +1 -1
- package/dist/types/BooleanType.spec.js +3 -9
- package/dist/types/BooleanType.spec.js.map +1 -1
- package/dist/types/BscType.d.ts +2 -29
- package/dist/types/BscType.js +0 -113
- package/dist/types/BscType.js.map +1 -1
- package/dist/types/CustomType.d.ts +9 -0
- package/dist/types/CustomType.js +32 -0
- package/dist/types/CustomType.js.map +1 -0
- package/dist/types/DoubleType.d.ts +4 -8
- package/dist/types/DoubleType.js +20 -23
- package/dist/types/DoubleType.js.map +1 -1
- package/dist/types/DoubleType.spec.js +3 -11
- package/dist/types/DoubleType.spec.js.map +1 -1
- package/dist/types/DynamicType.d.ts +3 -9
- package/dist/types/DynamicType.js +2 -18
- package/dist/types/DynamicType.js.map +1 -1
- package/dist/types/DynamicType.spec.js +4 -15
- package/dist/types/DynamicType.spec.js.map +1 -1
- package/dist/types/FloatType.d.ts +4 -8
- package/dist/types/FloatType.js +20 -23
- package/dist/types/FloatType.js.map +1 -1
- package/dist/types/FloatType.spec.js +3 -3
- package/dist/types/FloatType.spec.js.map +1 -1
- package/dist/types/FunctionType.d.ts +20 -10
- package/dist/types/FunctionType.js +52 -27
- package/dist/types/FunctionType.js.map +1 -1
- package/dist/types/FunctionType.spec.js +23 -0
- package/dist/types/FunctionType.spec.js.map +1 -0
- package/dist/types/IntegerType.d.ts +4 -8
- package/dist/types/IntegerType.js +20 -23
- package/dist/types/IntegerType.js.map +1 -1
- package/dist/types/IntegerType.spec.js +3 -7
- package/dist/types/IntegerType.spec.js.map +1 -1
- package/dist/types/InterfaceType.d.ts +10 -12
- package/dist/types/InterfaceType.js +48 -23
- package/dist/types/InterfaceType.js.map +1 -1
- package/dist/types/InterfaceType.spec.js +45 -82
- package/dist/types/InterfaceType.spec.js.map +1 -1
- package/dist/types/InvalidType.d.ts +4 -7
- package/dist/types/InvalidType.js +8 -18
- package/dist/types/InvalidType.js.map +1 -1
- package/dist/types/InvalidType.spec.js +3 -7
- package/dist/types/InvalidType.spec.js.map +1 -1
- package/dist/types/LongIntegerType.d.ts +4 -8
- package/dist/types/LongIntegerType.js +20 -23
- package/dist/types/LongIntegerType.js.map +1 -1
- package/dist/types/LongIntegerType.spec.js +3 -9
- package/dist/types/LongIntegerType.spec.js.map +1 -1
- package/dist/types/ObjectType.d.ts +4 -8
- package/dist/types/ObjectType.js +7 -21
- package/dist/types/ObjectType.js.map +1 -1
- package/dist/types/ObjectType.spec.js +2 -2
- package/dist/types/ObjectType.spec.js.map +1 -1
- package/dist/types/StringType.d.ts +4 -11
- package/dist/types/StringType.js +8 -23
- package/dist/types/StringType.js.map +1 -1
- package/dist/types/StringType.spec.js +2 -2
- package/dist/types/StringType.spec.js.map +1 -1
- package/dist/types/UninitializedType.d.ts +3 -7
- package/dist/types/UninitializedType.js +3 -14
- package/dist/types/UninitializedType.js.map +1 -1
- package/dist/types/VoidType.d.ts +4 -8
- package/dist/types/VoidType.js +8 -18
- package/dist/types/VoidType.js.map +1 -1
- package/dist/types/VoidType.spec.js +2 -2
- package/dist/types/VoidType.spec.js.map +1 -1
- package/dist/util.d.ts +43 -104
- package/dist/util.js +243 -640
- package/dist/util.js.map +1 -1
- package/dist/validators/ClassValidator.d.ts +6 -1
- package/dist/validators/ClassValidator.js +61 -20
- package/dist/validators/ClassValidator.js.map +1 -1
- package/package.json +13 -11
- package/dist/ActionPipeline.d.ts +0 -10
- package/dist/ActionPipeline.js +0 -40
- package/dist/ActionPipeline.js.map +0 -1
- package/dist/AstValidationSegmenter.d.ts +0 -25
- package/dist/AstValidationSegmenter.js +0 -150
- package/dist/AstValidationSegmenter.js.map +0 -1
- package/dist/CacheVerifier.d.ts +0 -7
- package/dist/CacheVerifier.js +0 -20
- package/dist/CacheVerifier.js.map +0 -1
- package/dist/astUtils/Editor.js.map +0 -1
- package/dist/astUtils/Editor.spec.js.map +0 -1
- package/dist/bscPlugin/FileWriter.d.ts +0 -6
- package/dist/bscPlugin/FileWriter.js +0 -24
- package/dist/bscPlugin/FileWriter.js.map +0 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +0 -1658
- package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +0 -1
- package/dist/bscPlugin/fileProviders/FileProvider.d.ts +0 -9
- package/dist/bscPlugin/fileProviders/FileProvider.js +0 -51
- package/dist/bscPlugin/fileProviders/FileProvider.js.map +0 -1
- package/dist/bscPlugin/serialize/BslibInjector.spec.js +0 -19
- package/dist/bscPlugin/serialize/BslibInjector.spec.js.map +0 -1
- package/dist/bscPlugin/serialize/BslibManager.d.ts +0 -9
- package/dist/bscPlugin/serialize/BslibManager.js +0 -40
- package/dist/bscPlugin/serialize/BslibManager.js.map +0 -1
- package/dist/bscPlugin/serialize/FileSerializer.d.ts +0 -9
- package/dist/bscPlugin/serialize/FileSerializer.js +0 -72
- package/dist/bscPlugin/serialize/FileSerializer.js.map +0 -1
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +0 -1
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js +0 -41
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js.map +0 -1
- package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.d.ts +0 -11
- package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js +0 -53
- package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js.map +0 -1
- package/dist/bscPlugin/validation/ScopeValidator.spec.js +0 -2004
- package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +0 -1
- package/dist/files/AssetFile.d.ts +0 -26
- package/dist/files/AssetFile.js +0 -26
- package/dist/files/AssetFile.js.map +0 -1
- package/dist/files/Factory.d.ts +0 -25
- package/dist/files/Factory.js +0 -22
- package/dist/files/Factory.js.map +0 -1
- package/dist/files/File.d.ts +0 -106
- package/dist/files/File.js +0 -16
- package/dist/files/File.js.map +0 -1
- package/dist/files/LazyFileData.d.ts +0 -20
- package/dist/files/LazyFileData.js +0 -54
- package/dist/files/LazyFileData.js.map +0 -1
- package/dist/files/LazyFileData.spec.js +0 -27
- package/dist/files/LazyFileData.spec.js.map +0 -1
- package/dist/parser/tests/expression/TypeExpression.spec.js +0 -127
- package/dist/parser/tests/expression/TypeExpression.spec.js.map +0 -1
- package/dist/types/AssociativeArrayType.d.ts +0 -11
- package/dist/types/AssociativeArrayType.js +0 -52
- package/dist/types/AssociativeArrayType.js.map +0 -1
- package/dist/types/BaseFunctionType.d.ts +0 -9
- package/dist/types/BaseFunctionType.js +0 -25
- package/dist/types/BaseFunctionType.js.map +0 -1
- package/dist/types/BscTypeKind.d.ts +0 -25
- package/dist/types/BscTypeKind.js +0 -30
- package/dist/types/BscTypeKind.js.map +0 -1
- package/dist/types/BuiltInInterfaceAdder.d.ts +0 -23
- package/dist/types/BuiltInInterfaceAdder.js +0 -160
- package/dist/types/BuiltInInterfaceAdder.js.map +0 -1
- package/dist/types/BuiltInInterfaceAdder.spec.d.ts +0 -1
- package/dist/types/BuiltInInterfaceAdder.spec.js +0 -116
- package/dist/types/BuiltInInterfaceAdder.spec.js.map +0 -1
- package/dist/types/ClassType.d.ts +0 -17
- package/dist/types/ClassType.js +0 -58
- package/dist/types/ClassType.js.map +0 -1
- package/dist/types/ClassType.spec.d.ts +0 -1
- package/dist/types/ClassType.spec.js +0 -77
- package/dist/types/ClassType.spec.js.map +0 -1
- package/dist/types/ComponentType.d.ts +0 -26
- package/dist/types/ComponentType.js +0 -83
- package/dist/types/ComponentType.js.map +0 -1
- package/dist/types/EnumType.d.ts +0 -40
- package/dist/types/EnumType.js +0 -81
- package/dist/types/EnumType.js.map +0 -1
- package/dist/types/EnumType.spec.d.ts +0 -1
- package/dist/types/EnumType.spec.js +0 -33
- package/dist/types/EnumType.spec.js.map +0 -1
- package/dist/types/InheritableType.d.ts +0 -28
- package/dist/types/InheritableType.js +0 -152
- package/dist/types/InheritableType.js.map +0 -1
- package/dist/types/NamespaceType.d.ts +0 -12
- package/dist/types/NamespaceType.js +0 -28
- package/dist/types/NamespaceType.js.map +0 -1
- package/dist/types/ReferenceType.d.ts +0 -63
- package/dist/types/ReferenceType.js +0 -423
- package/dist/types/ReferenceType.js.map +0 -1
- package/dist/types/ReferenceType.spec.d.ts +0 -1
- package/dist/types/ReferenceType.spec.js +0 -137
- package/dist/types/ReferenceType.spec.js.map +0 -1
- package/dist/types/TypedFunctionType.d.ts +0 -33
- package/dist/types/TypedFunctionType.js +0 -106
- package/dist/types/TypedFunctionType.js.map +0 -1
- package/dist/types/TypedFunctionType.spec.d.ts +0 -1
- package/dist/types/TypedFunctionType.spec.js +0 -122
- package/dist/types/TypedFunctionType.spec.js.map +0 -1
- package/dist/types/UnionType.d.ts +0 -20
- package/dist/types/UnionType.js +0 -123
- package/dist/types/UnionType.js.map +0 -1
- package/dist/types/UnionType.spec.d.ts +0 -1
- package/dist/types/UnionType.spec.js +0 -130
- package/dist/types/UnionType.spec.js.map +0 -1
- package/dist/types/helper.spec.d.ts +0 -1
- package/dist/types/helper.spec.js +0 -145
- package/dist/types/helper.spec.js.map +0 -1
- package/dist/types/helpers.d.ts +0 -24
- package/dist/types/helpers.js +0 -178
- package/dist/types/helpers.js.map +0 -1
- package/dist/types/index.d.ts +0 -22
- package/dist/types/index.js +0 -39
- package/dist/types/index.js.map +0 -1
- /package/dist/astUtils/{Editor.spec.d.ts → AstEditor.spec.d.ts} +0 -0
- /package/dist/bscPlugin/{completions/CompletionsProcessor.spec.d.ts → definition/DefinitionProvider.spec.d.ts} +0 -0
- /package/dist/bscPlugin/{serialize/BslibInjector.spec.d.ts → references/ReferencesProvider.spec.d.ts} +0 -0
- /package/dist/bscPlugin/{transpile/BrsFileTranspileProcessor.spec.d.ts → symbols/DocumentSymbolProcessor.spec.d.ts} +0 -0
- /package/dist/bscPlugin/{validation/ScopeValidator.spec.d.ts → symbols/WorkspaceSymbolProcessor.spec.d.ts} +0 -0
- /package/dist/{files/LazyFileData.spec.d.ts → bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.d.ts} +0 -0
- /package/dist/{parser/tests/expression/TypeExpression.spec.d.ts → types/FunctionType.spec.d.ts} +0 -0
package/dist/parser/Statement.js
CHANGED
|
@@ -1,34 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ContinueStatement = exports.ConstStatement = exports.EnumMemberStatement = exports.EnumStatement = exports.ThrowStatement = exports.CatchStatement = exports.TryCatchStatement = exports.FieldStatement = exports.MethodStatement = exports.ClassStatement = exports.InterfaceMethodStatement = exports.InterfaceFieldStatement = exports.InterfaceStatement = exports.ImportStatement = exports.NamespaceStatement = exports.LibraryStatement = exports.IndexedSetStatement = exports.DottedSetStatement = exports.WhileStatement = exports.ForEachStatement = exports.ForStatement = exports.StopStatement = exports.EndStatement = exports.ReturnStatement = exports.LabelStatement = exports.GotoStatement = exports.DimStatement = exports.PrintStatement = exports.IncrementStatement = exports.IfStatement = exports.FunctionStatement = exports.ExitWhileStatement = exports.ExitForStatement = exports.CommentStatement = exports.ExpressionStatement = exports.Block = exports.AssignmentStatement = exports.Body = exports.EmptyStatement = void 0;
|
|
3
|
+
exports.ContinueStatement = exports.ConstStatement = exports.EnumMemberStatement = exports.EnumStatement = exports.ThrowStatement = exports.CatchStatement = exports.TryCatchStatement = exports.ClassFieldStatement = exports.FieldStatement = exports.ClassMethodStatement = exports.MethodStatement = exports.ClassStatement = exports.InterfaceMethodStatement = exports.InterfaceFieldStatement = exports.InterfaceStatement = exports.ImportStatement = exports.NamespaceStatement = exports.LibraryStatement = exports.IndexedSetStatement = exports.DottedSetStatement = exports.WhileStatement = exports.ForEachStatement = exports.ForStatement = exports.StopStatement = exports.EndStatement = exports.ReturnStatement = exports.LabelStatement = exports.GotoStatement = exports.DimStatement = exports.PrintStatement = exports.IncrementStatement = exports.IfStatement = exports.FunctionStatement = exports.ExitWhileStatement = exports.ExitForStatement = exports.CommentStatement = exports.ExpressionStatement = exports.Block = exports.AssignmentStatement = exports.Body = exports.EmptyStatement = void 0;
|
|
4
4
|
const TokenKind_1 = require("../lexer/TokenKind");
|
|
5
5
|
const Expression_1 = require("./Expression");
|
|
6
6
|
const util_1 = require("../util");
|
|
7
7
|
const Parser_1 = require("./Parser");
|
|
8
8
|
const visitors_1 = require("../astUtils/visitors");
|
|
9
9
|
const reflection_1 = require("../astUtils/reflection");
|
|
10
|
-
const interfaces_1 = require("../interfaces");
|
|
11
|
-
const SymbolTable_1 = require("../SymbolTable");
|
|
12
10
|
const creators_1 = require("../astUtils/creators");
|
|
13
11
|
const DynamicType_1 = require("../types/DynamicType");
|
|
14
|
-
const
|
|
12
|
+
const SymbolTable_1 = require("../SymbolTable");
|
|
15
13
|
const AstNode_1 = require("./AstNode");
|
|
16
|
-
|
|
17
|
-
const ClassType_1 = require("../types/ClassType");
|
|
18
|
-
const EnumType_1 = require("../types/EnumType");
|
|
19
|
-
const NamespaceType_1 = require("../types/NamespaceType");
|
|
20
|
-
const InterfaceType_1 = require("../types/InterfaceType");
|
|
21
|
-
const VoidType_1 = require("../types/VoidType");
|
|
22
|
-
const TypedFunctionType_1 = require("../types/TypedFunctionType");
|
|
23
|
-
class EmptyStatement extends AstNode_2.Statement {
|
|
14
|
+
class EmptyStatement extends AstNode_1.Statement {
|
|
24
15
|
constructor(
|
|
25
16
|
/**
|
|
26
17
|
* Create a negative range to indicate this is an interpolated location
|
|
27
18
|
*/
|
|
28
|
-
range =
|
|
19
|
+
range = undefined) {
|
|
29
20
|
super();
|
|
30
21
|
this.range = range;
|
|
31
|
-
this.kind = AstNode_1.AstNodeKind.EmptyStatement;
|
|
32
22
|
}
|
|
33
23
|
transpile(state) {
|
|
34
24
|
return [];
|
|
@@ -41,12 +31,11 @@ exports.EmptyStatement = EmptyStatement;
|
|
|
41
31
|
/**
|
|
42
32
|
* This is a top-level statement. Consider this the root of the AST
|
|
43
33
|
*/
|
|
44
|
-
class Body extends
|
|
34
|
+
class Body extends AstNode_1.Statement {
|
|
45
35
|
constructor(statements = []) {
|
|
46
36
|
super();
|
|
47
37
|
this.statements = statements;
|
|
48
|
-
this.
|
|
49
|
-
this.symbolTable = new SymbolTable_2.SymbolTable('Body', () => { var _a; return (_a = this.parent) === null || _a === void 0 ? void 0 : _a.getSymbolTable(); });
|
|
38
|
+
this.symbolTable = new SymbolTable_1.SymbolTable('Body', () => { var _a; return (_a = this.parent) === null || _a === void 0 ? void 0 : _a.getSymbolTable(); });
|
|
50
39
|
}
|
|
51
40
|
get range() {
|
|
52
41
|
var _a;
|
|
@@ -54,6 +43,7 @@ class Body extends AstNode_2.Statement {
|
|
|
54
43
|
return util_1.util.createBoundingRange(...((_a = this.statements) !== null && _a !== void 0 ? _a : []));
|
|
55
44
|
}
|
|
56
45
|
transpile(state) {
|
|
46
|
+
var _a, _b;
|
|
57
47
|
let result = [];
|
|
58
48
|
for (let i = 0; i < this.statements.length; i++) {
|
|
59
49
|
let statement = this.statements[i];
|
|
@@ -63,20 +53,20 @@ class Body extends AstNode_2.Statement {
|
|
|
63
53
|
//this is the first statement. do nothing related to spacing and newlines
|
|
64
54
|
//if comment is on same line as prior sibling
|
|
65
55
|
}
|
|
66
|
-
else if ((0, reflection_1.isCommentStatement)(statement) && previousStatement && statement.range.start.line === previousStatement.range.end.line) {
|
|
56
|
+
else if ((0, reflection_1.isCommentStatement)(statement) && previousStatement && ((_a = statement.range) === null || _a === void 0 ? void 0 : _a.start.line) === ((_b = previousStatement.range) === null || _b === void 0 ? void 0 : _b.end.line)) {
|
|
67
57
|
result.push(' ');
|
|
68
58
|
//add double newline if this is a comment, and next is a function
|
|
69
59
|
}
|
|
70
60
|
else if ((0, reflection_1.isCommentStatement)(statement) && nextStatement && (0, reflection_1.isFunctionStatement)(nextStatement)) {
|
|
71
|
-
result.push(
|
|
61
|
+
result.push(state.newline, state.newline);
|
|
72
62
|
//add double newline if is function not preceeded by a comment
|
|
73
63
|
}
|
|
74
64
|
else if ((0, reflection_1.isFunctionStatement)(statement) && previousStatement && !((0, reflection_1.isCommentStatement)(previousStatement))) {
|
|
75
|
-
result.push(
|
|
65
|
+
result.push(state.newline, state.newline);
|
|
76
66
|
}
|
|
77
67
|
else {
|
|
78
68
|
//separate statements by a single newline
|
|
79
|
-
result.push(
|
|
69
|
+
result.push(state.newline);
|
|
80
70
|
}
|
|
81
71
|
result.push(...statement.transpile(state));
|
|
82
72
|
}
|
|
@@ -99,17 +89,21 @@ class Body extends AstNode_2.Statement {
|
|
|
99
89
|
}
|
|
100
90
|
}
|
|
101
91
|
exports.Body = Body;
|
|
102
|
-
class AssignmentStatement extends
|
|
103
|
-
constructor(equals, name, value
|
|
92
|
+
class AssignmentStatement extends AstNode_1.Statement {
|
|
93
|
+
constructor(equals, name, value) {
|
|
104
94
|
super();
|
|
105
95
|
this.equals = equals;
|
|
106
96
|
this.name = name;
|
|
107
97
|
this.value = value;
|
|
108
|
-
this.asToken = asToken;
|
|
109
|
-
this.typeExpression = typeExpression;
|
|
110
|
-
this.kind = AstNode_1.AstNodeKind.AssignmentStatement;
|
|
111
98
|
this.range = util_1.util.createBoundingRange(name, equals, value);
|
|
112
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Get the name of the wrapping namespace (if it exists)
|
|
102
|
+
* @deprecated use `.findAncestor(isFunctionExpression)` instead.
|
|
103
|
+
*/
|
|
104
|
+
get containingFunction() {
|
|
105
|
+
return this.findAncestor(reflection_1.isFunctionExpression);
|
|
106
|
+
}
|
|
113
107
|
transpile(state) {
|
|
114
108
|
var _a, _b;
|
|
115
109
|
//if the value is a compound assignment, just transpile the expression itself
|
|
@@ -128,27 +122,16 @@ class AssignmentStatement extends AstNode_2.Statement {
|
|
|
128
122
|
}
|
|
129
123
|
walk(visitor, options) {
|
|
130
124
|
if (options.walkMode & visitors_1.InternalWalkMode.walkExpressions) {
|
|
131
|
-
//TODO: Walk TypeExpression. We need to decide how to implement types on assignments
|
|
132
125
|
(0, visitors_1.walk)(this, 'value', visitor, options);
|
|
133
126
|
}
|
|
134
127
|
}
|
|
135
|
-
getType(options) {
|
|
136
|
-
// TODO: Do we still need this.typeExpression?
|
|
137
|
-
var _a;
|
|
138
|
-
// Note: compound assignments (eg. +=) are internally dealt with via the RHS being a BinaryExpression
|
|
139
|
-
// so this.value will be a BinaryExpression, and BinaryExpressions can figure out their own types
|
|
140
|
-
const rhs = this.value.getType(Object.assign(Object.assign({}, options), { typeChain: undefined }));
|
|
141
|
-
(_a = options.typeChain) === null || _a === void 0 ? void 0 : _a.push(new interfaces_1.TypeChainEntry(this.name.text, rhs, options.flags, this.name.range));
|
|
142
|
-
return rhs;
|
|
143
|
-
}
|
|
144
128
|
}
|
|
145
129
|
exports.AssignmentStatement = AssignmentStatement;
|
|
146
|
-
class Block extends
|
|
130
|
+
class Block extends AstNode_1.Statement {
|
|
147
131
|
constructor(statements, startingRange) {
|
|
148
132
|
super();
|
|
149
133
|
this.statements = statements;
|
|
150
134
|
this.startingRange = startingRange;
|
|
151
|
-
this.kind = AstNode_1.AstNodeKind.Block;
|
|
152
135
|
this.range = util_1.util.createBoundingRange({ range: this.startingRange }, ...(statements !== null && statements !== void 0 ? statements : []));
|
|
153
136
|
}
|
|
154
137
|
transpile(state) {
|
|
@@ -182,11 +165,10 @@ class Block extends AstNode_2.Statement {
|
|
|
182
165
|
}
|
|
183
166
|
}
|
|
184
167
|
exports.Block = Block;
|
|
185
|
-
class ExpressionStatement extends
|
|
168
|
+
class ExpressionStatement extends AstNode_1.Statement {
|
|
186
169
|
constructor(expression) {
|
|
187
170
|
super();
|
|
188
171
|
this.expression = expression;
|
|
189
|
-
this.kind = AstNode_1.AstNodeKind.ExpressionStatement;
|
|
190
172
|
this.range = this.expression.range;
|
|
191
173
|
}
|
|
192
174
|
transpile(state) {
|
|
@@ -199,12 +181,11 @@ class ExpressionStatement extends AstNode_2.Statement {
|
|
|
199
181
|
}
|
|
200
182
|
}
|
|
201
183
|
exports.ExpressionStatement = ExpressionStatement;
|
|
202
|
-
class CommentStatement extends
|
|
184
|
+
class CommentStatement extends AstNode_1.Statement {
|
|
203
185
|
constructor(comments) {
|
|
204
186
|
var _a;
|
|
205
187
|
super();
|
|
206
188
|
this.comments = comments;
|
|
207
|
-
this.kind = AstNode_1.AstNodeKind.CommentStatement;
|
|
208
189
|
this.visitMode = visitors_1.InternalWalkMode.visitStatements | visitors_1.InternalWalkMode.visitExpressions;
|
|
209
190
|
if (((_a = this.comments) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
210
191
|
this.range = util_1.util.createBoundingRange(...this.comments);
|
|
@@ -223,7 +204,7 @@ class CommentStatement extends AstNode_2.Statement {
|
|
|
223
204
|
result.push(state.transpileToken(comment));
|
|
224
205
|
//add newline for all except final comment
|
|
225
206
|
if (i < this.comments.length - 1) {
|
|
226
|
-
result.push(
|
|
207
|
+
result.push(state.newline);
|
|
227
208
|
}
|
|
228
209
|
}
|
|
229
210
|
return result;
|
|
@@ -236,11 +217,10 @@ class CommentStatement extends AstNode_2.Statement {
|
|
|
236
217
|
}
|
|
237
218
|
}
|
|
238
219
|
exports.CommentStatement = CommentStatement;
|
|
239
|
-
class ExitForStatement extends
|
|
220
|
+
class ExitForStatement extends AstNode_1.Statement {
|
|
240
221
|
constructor(tokens) {
|
|
241
222
|
super();
|
|
242
223
|
this.tokens = tokens;
|
|
243
|
-
this.kind = AstNode_1.AstNodeKind.ExitForStatement;
|
|
244
224
|
this.range = this.tokens.exitFor.range;
|
|
245
225
|
}
|
|
246
226
|
transpile(state) {
|
|
@@ -253,11 +233,10 @@ class ExitForStatement extends AstNode_2.Statement {
|
|
|
253
233
|
}
|
|
254
234
|
}
|
|
255
235
|
exports.ExitForStatement = ExitForStatement;
|
|
256
|
-
class ExitWhileStatement extends
|
|
236
|
+
class ExitWhileStatement extends AstNode_1.Statement {
|
|
257
237
|
constructor(tokens) {
|
|
258
238
|
super();
|
|
259
239
|
this.tokens = tokens;
|
|
260
|
-
this.kind = AstNode_1.AstNodeKind.ExitWhileStatement;
|
|
261
240
|
this.range = this.tokens.exitWhile.range;
|
|
262
241
|
}
|
|
263
242
|
transpile(state) {
|
|
@@ -270,12 +249,11 @@ class ExitWhileStatement extends AstNode_2.Statement {
|
|
|
270
249
|
}
|
|
271
250
|
}
|
|
272
251
|
exports.ExitWhileStatement = ExitWhileStatement;
|
|
273
|
-
class FunctionStatement extends
|
|
252
|
+
class FunctionStatement extends AstNode_1.Statement {
|
|
274
253
|
constructor(name, func) {
|
|
275
254
|
super();
|
|
276
255
|
this.name = name;
|
|
277
256
|
this.func = func;
|
|
278
|
-
this.kind = AstNode_1.AstNodeKind.FunctionStatement;
|
|
279
257
|
this.range = this.func.range;
|
|
280
258
|
}
|
|
281
259
|
/**
|
|
@@ -293,8 +271,13 @@ class FunctionStatement extends AstNode_2.Statement {
|
|
|
293
271
|
return this.name.text;
|
|
294
272
|
}
|
|
295
273
|
}
|
|
296
|
-
|
|
297
|
-
|
|
274
|
+
/**
|
|
275
|
+
* Get the name of the wrapping namespace (if it exists)
|
|
276
|
+
* @deprecated use `.findAncestor(isNamespaceStatement)` instead.
|
|
277
|
+
*/
|
|
278
|
+
get namespaceName() {
|
|
279
|
+
var _a;
|
|
280
|
+
return (_a = this.findAncestor(reflection_1.isNamespaceStatement)) === null || _a === void 0 ? void 0 : _a.nameExpression;
|
|
298
281
|
}
|
|
299
282
|
transpile(state) {
|
|
300
283
|
//create a fake token using the full transpiled name
|
|
@@ -315,15 +298,9 @@ class FunctionStatement extends AstNode_2.Statement {
|
|
|
315
298
|
(0, visitors_1.walk)(this, 'func', visitor, options);
|
|
316
299
|
}
|
|
317
300
|
}
|
|
318
|
-
getType(options) {
|
|
319
|
-
var _a;
|
|
320
|
-
const funcExprType = this.func.getType(options);
|
|
321
|
-
funcExprType.setName((_a = this.name) === null || _a === void 0 ? void 0 : _a.text);
|
|
322
|
-
return funcExprType;
|
|
323
|
-
}
|
|
324
301
|
}
|
|
325
302
|
exports.FunctionStatement = FunctionStatement;
|
|
326
|
-
class IfStatement extends
|
|
303
|
+
class IfStatement extends AstNode_1.Statement {
|
|
327
304
|
constructor(tokens, condition, thenBranch, elseBranch, isInline) {
|
|
328
305
|
super();
|
|
329
306
|
this.tokens = tokens;
|
|
@@ -331,7 +308,6 @@ class IfStatement extends AstNode_2.Statement {
|
|
|
331
308
|
this.thenBranch = thenBranch;
|
|
332
309
|
this.elseBranch = elseBranch;
|
|
333
310
|
this.isInline = isInline;
|
|
334
|
-
this.kind = AstNode_1.AstNodeKind.IfStatement;
|
|
335
311
|
this.range = util_1.util.createBoundingRange(tokens.if, condition, tokens.then, thenBranch, tokens.else, elseBranch, tokens.endIf);
|
|
336
312
|
}
|
|
337
313
|
transpile(state) {
|
|
@@ -410,12 +386,11 @@ class IfStatement extends AstNode_2.Statement {
|
|
|
410
386
|
}
|
|
411
387
|
}
|
|
412
388
|
exports.IfStatement = IfStatement;
|
|
413
|
-
class IncrementStatement extends
|
|
389
|
+
class IncrementStatement extends AstNode_1.Statement {
|
|
414
390
|
constructor(value, operator) {
|
|
415
391
|
super();
|
|
416
392
|
this.value = value;
|
|
417
393
|
this.operator = operator;
|
|
418
|
-
this.kind = AstNode_1.AstNodeKind.IncrementStatement;
|
|
419
394
|
this.range = util_1.util.createBoundingRange(value, operator);
|
|
420
395
|
}
|
|
421
396
|
transpile(state) {
|
|
@@ -434,7 +409,7 @@ exports.IncrementStatement = IncrementStatement;
|
|
|
434
409
|
/**
|
|
435
410
|
* Represents a `print` statement within BrightScript.
|
|
436
411
|
*/
|
|
437
|
-
class PrintStatement extends
|
|
412
|
+
class PrintStatement extends AstNode_1.Statement {
|
|
438
413
|
/**
|
|
439
414
|
* Creates a new internal representation of a BrightScript `print` statement.
|
|
440
415
|
* @param tokens the tokens for this statement
|
|
@@ -445,7 +420,6 @@ class PrintStatement extends AstNode_2.Statement {
|
|
|
445
420
|
super();
|
|
446
421
|
this.tokens = tokens;
|
|
447
422
|
this.expressions = expressions;
|
|
448
|
-
this.kind = AstNode_1.AstNodeKind.PrintStatement;
|
|
449
423
|
this.range = util_1.util.createBoundingRange(tokens.print, ...(expressions !== null && expressions !== void 0 ? expressions : []));
|
|
450
424
|
}
|
|
451
425
|
transpile(state) {
|
|
@@ -477,7 +451,7 @@ class PrintStatement extends AstNode_2.Statement {
|
|
|
477
451
|
}
|
|
478
452
|
}
|
|
479
453
|
exports.PrintStatement = PrintStatement;
|
|
480
|
-
class DimStatement extends
|
|
454
|
+
class DimStatement extends AstNode_1.Statement {
|
|
481
455
|
constructor(dimToken, identifier, openingSquare, dimensions, closingSquare) {
|
|
482
456
|
super();
|
|
483
457
|
this.dimToken = dimToken;
|
|
@@ -485,7 +459,6 @@ class DimStatement extends AstNode_2.Statement {
|
|
|
485
459
|
this.openingSquare = openingSquare;
|
|
486
460
|
this.dimensions = dimensions;
|
|
487
461
|
this.closingSquare = closingSquare;
|
|
488
|
-
this.kind = AstNode_1.AstNodeKind.DimStatement;
|
|
489
462
|
this.range = util_1.util.createBoundingRange(dimToken, identifier, openingSquare, ...(dimensions !== null && dimensions !== void 0 ? dimensions : []), closingSquare);
|
|
490
463
|
}
|
|
491
464
|
transpile(state) {
|
|
@@ -505,18 +478,17 @@ class DimStatement extends AstNode_2.Statement {
|
|
|
505
478
|
return result;
|
|
506
479
|
}
|
|
507
480
|
walk(visitor, options) {
|
|
508
|
-
var _a;
|
|
509
|
-
if (((_a = this.dimensions) === null || _a === void 0 ? void 0 : _a.length) > 0 && options.walkMode & visitors_1.InternalWalkMode.walkExpressions) {
|
|
481
|
+
var _a, _b;
|
|
482
|
+
if (((_a = this.dimensions) === null || _a === void 0 ? void 0 : _a.length) !== undefined && ((_b = this.dimensions) === null || _b === void 0 ? void 0 : _b.length) > 0 && options.walkMode & visitors_1.InternalWalkMode.walkExpressions) {
|
|
510
483
|
(0, visitors_1.walkArray)(this.dimensions, visitor, options, this);
|
|
511
484
|
}
|
|
512
485
|
}
|
|
513
486
|
}
|
|
514
487
|
exports.DimStatement = DimStatement;
|
|
515
|
-
class GotoStatement extends
|
|
488
|
+
class GotoStatement extends AstNode_1.Statement {
|
|
516
489
|
constructor(tokens) {
|
|
517
490
|
super();
|
|
518
491
|
this.tokens = tokens;
|
|
519
|
-
this.kind = AstNode_1.AstNodeKind.GotoStatement;
|
|
520
492
|
this.range = util_1.util.createBoundingRange(tokens.goto, tokens.label);
|
|
521
493
|
}
|
|
522
494
|
transpile(state) {
|
|
@@ -531,16 +503,12 @@ class GotoStatement extends AstNode_2.Statement {
|
|
|
531
503
|
}
|
|
532
504
|
}
|
|
533
505
|
exports.GotoStatement = GotoStatement;
|
|
534
|
-
class LabelStatement extends
|
|
506
|
+
class LabelStatement extends AstNode_1.Statement {
|
|
535
507
|
constructor(tokens) {
|
|
536
508
|
super();
|
|
537
509
|
this.tokens = tokens;
|
|
538
|
-
this.kind = AstNode_1.AstNodeKind.LabelStatement;
|
|
539
510
|
this.range = util_1.util.createBoundingRange(tokens.identifier, tokens.colon);
|
|
540
511
|
}
|
|
541
|
-
getLeadingTrivia() {
|
|
542
|
-
return util_1.util.concatAnnotationLeadingTrivia(this, this.tokens.identifier.leadingTrivia);
|
|
543
|
-
}
|
|
544
512
|
transpile(state) {
|
|
545
513
|
return [
|
|
546
514
|
state.transpileToken(this.tokens.identifier),
|
|
@@ -552,12 +520,11 @@ class LabelStatement extends AstNode_2.Statement {
|
|
|
552
520
|
}
|
|
553
521
|
}
|
|
554
522
|
exports.LabelStatement = LabelStatement;
|
|
555
|
-
class ReturnStatement extends
|
|
523
|
+
class ReturnStatement extends AstNode_1.Statement {
|
|
556
524
|
constructor(tokens, value) {
|
|
557
525
|
super();
|
|
558
526
|
this.tokens = tokens;
|
|
559
527
|
this.value = value;
|
|
560
|
-
this.kind = AstNode_1.AstNodeKind.ReturnStatement;
|
|
561
528
|
this.range = util_1.util.createBoundingRange(tokens.return, value);
|
|
562
529
|
}
|
|
563
530
|
transpile(state) {
|
|
@@ -576,11 +543,10 @@ class ReturnStatement extends AstNode_2.Statement {
|
|
|
576
543
|
}
|
|
577
544
|
}
|
|
578
545
|
exports.ReturnStatement = ReturnStatement;
|
|
579
|
-
class EndStatement extends
|
|
546
|
+
class EndStatement extends AstNode_1.Statement {
|
|
580
547
|
constructor(tokens) {
|
|
581
548
|
super();
|
|
582
549
|
this.tokens = tokens;
|
|
583
|
-
this.kind = AstNode_1.AstNodeKind.EndStatement;
|
|
584
550
|
this.range = tokens.end.range;
|
|
585
551
|
}
|
|
586
552
|
transpile(state) {
|
|
@@ -593,12 +559,11 @@ class EndStatement extends AstNode_2.Statement {
|
|
|
593
559
|
}
|
|
594
560
|
}
|
|
595
561
|
exports.EndStatement = EndStatement;
|
|
596
|
-
class StopStatement extends
|
|
562
|
+
class StopStatement extends AstNode_1.Statement {
|
|
597
563
|
constructor(tokens) {
|
|
598
564
|
var _a;
|
|
599
565
|
super();
|
|
600
566
|
this.tokens = tokens;
|
|
601
|
-
this.kind = AstNode_1.AstNodeKind.StopStatement;
|
|
602
567
|
this.range = (_a = tokens === null || tokens === void 0 ? void 0 : tokens.stop) === null || _a === void 0 ? void 0 : _a.range;
|
|
603
568
|
}
|
|
604
569
|
transpile(state) {
|
|
@@ -611,7 +576,7 @@ class StopStatement extends AstNode_2.Statement {
|
|
|
611
576
|
}
|
|
612
577
|
}
|
|
613
578
|
exports.StopStatement = StopStatement;
|
|
614
|
-
class ForStatement extends
|
|
579
|
+
class ForStatement extends AstNode_1.Statement {
|
|
615
580
|
constructor(forToken, counterDeclaration, toToken, finalValue, body, endForToken, stepToken, increment) {
|
|
616
581
|
super();
|
|
617
582
|
this.forToken = forToken;
|
|
@@ -622,7 +587,6 @@ class ForStatement extends AstNode_2.Statement {
|
|
|
622
587
|
this.endForToken = endForToken;
|
|
623
588
|
this.stepToken = stepToken;
|
|
624
589
|
this.increment = increment;
|
|
625
|
-
this.kind = AstNode_1.AstNodeKind.ForStatement;
|
|
626
590
|
this.range = util_1.util.createBoundingRange(forToken, counterDeclaration, toToken, finalValue, stepToken, increment, body, endForToken);
|
|
627
591
|
}
|
|
628
592
|
transpile(state) {
|
|
@@ -663,14 +627,13 @@ class ForStatement extends AstNode_2.Statement {
|
|
|
663
627
|
}
|
|
664
628
|
}
|
|
665
629
|
exports.ForStatement = ForStatement;
|
|
666
|
-
class ForEachStatement extends
|
|
630
|
+
class ForEachStatement extends AstNode_1.Statement {
|
|
667
631
|
constructor(tokens, item, target, body) {
|
|
668
632
|
super();
|
|
669
633
|
this.tokens = tokens;
|
|
670
634
|
this.item = item;
|
|
671
635
|
this.target = target;
|
|
672
636
|
this.body = body;
|
|
673
|
-
this.kind = AstNode_1.AstNodeKind.ForEachStatement;
|
|
674
637
|
this.range = util_1.util.createBoundingRange(tokens.forEach, item, tokens.in, target, body, tokens.endFor);
|
|
675
638
|
}
|
|
676
639
|
transpile(state) {
|
|
@@ -703,13 +666,12 @@ class ForEachStatement extends AstNode_2.Statement {
|
|
|
703
666
|
}
|
|
704
667
|
}
|
|
705
668
|
exports.ForEachStatement = ForEachStatement;
|
|
706
|
-
class WhileStatement extends
|
|
669
|
+
class WhileStatement extends AstNode_1.Statement {
|
|
707
670
|
constructor(tokens, condition, body) {
|
|
708
671
|
super();
|
|
709
672
|
this.tokens = tokens;
|
|
710
673
|
this.condition = condition;
|
|
711
674
|
this.body = body;
|
|
712
|
-
this.kind = AstNode_1.AstNodeKind.WhileStatement;
|
|
713
675
|
this.range = util_1.util.createBoundingRange(tokens.while, condition, body, tokens.endWhile);
|
|
714
676
|
}
|
|
715
677
|
transpile(state) {
|
|
@@ -738,14 +700,13 @@ class WhileStatement extends AstNode_2.Statement {
|
|
|
738
700
|
}
|
|
739
701
|
}
|
|
740
702
|
exports.WhileStatement = WhileStatement;
|
|
741
|
-
class DottedSetStatement extends
|
|
703
|
+
class DottedSetStatement extends AstNode_1.Statement {
|
|
742
704
|
constructor(obj, name, value, dot) {
|
|
743
705
|
super();
|
|
744
706
|
this.obj = obj;
|
|
745
707
|
this.name = name;
|
|
746
708
|
this.value = value;
|
|
747
709
|
this.dot = dot;
|
|
748
|
-
this.kind = AstNode_1.AstNodeKind.DottedSetStatement;
|
|
749
710
|
this.range = util_1.util.createBoundingRange(obj, dot, name, value);
|
|
750
711
|
}
|
|
751
712
|
transpile(state) {
|
|
@@ -775,54 +736,59 @@ class DottedSetStatement extends AstNode_2.Statement {
|
|
|
775
736
|
}
|
|
776
737
|
}
|
|
777
738
|
exports.DottedSetStatement = DottedSetStatement;
|
|
778
|
-
class IndexedSetStatement extends
|
|
779
|
-
constructor(obj, index, value, openingSquare, closingSquare) {
|
|
739
|
+
class IndexedSetStatement extends AstNode_1.Statement {
|
|
740
|
+
constructor(obj, index, value, openingSquare, closingSquare, additionalIndexes) {
|
|
741
|
+
var _a;
|
|
780
742
|
super();
|
|
781
743
|
this.obj = obj;
|
|
782
744
|
this.index = index;
|
|
783
745
|
this.value = value;
|
|
784
746
|
this.openingSquare = openingSquare;
|
|
785
747
|
this.closingSquare = closingSquare;
|
|
786
|
-
this.
|
|
748
|
+
this.additionalIndexes = additionalIndexes;
|
|
787
749
|
this.range = util_1.util.createBoundingRange(obj, openingSquare, index, closingSquare, value);
|
|
750
|
+
(_a = this.additionalIndexes) !== null && _a !== void 0 ? _a : (this.additionalIndexes = []);
|
|
788
751
|
}
|
|
789
752
|
transpile(state) {
|
|
790
|
-
var _a, _b;
|
|
753
|
+
var _a, _b, _c, _d;
|
|
791
754
|
//if the value is a component assignment, don't add the obj, index or operator...the expression will handle that
|
|
792
755
|
if (TokenKind_1.CompoundAssignmentOperators.includes((_b = (_a = this.value) === null || _a === void 0 ? void 0 : _a.operator) === null || _b === void 0 ? void 0 : _b.kind)) {
|
|
793
756
|
return this.value.transpile(state);
|
|
794
757
|
}
|
|
795
758
|
else {
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
759
|
+
const result = [];
|
|
760
|
+
result.push(
|
|
761
|
+
//obj
|
|
762
|
+
...this.obj.transpile(state),
|
|
763
|
+
// [
|
|
764
|
+
state.transpileToken(this.openingSquare));
|
|
765
|
+
const indexes = [this.index, ...(_c = this.additionalIndexes) !== null && _c !== void 0 ? _c : []];
|
|
766
|
+
for (let i = 0; i < indexes.length; i++) {
|
|
767
|
+
//add comma between indexes
|
|
768
|
+
if (i > 0) {
|
|
769
|
+
result.push(', ');
|
|
770
|
+
}
|
|
771
|
+
let index = indexes[i];
|
|
772
|
+
result.push(...((_d = index === null || index === void 0 ? void 0 : index.transpile(state)) !== null && _d !== void 0 ? _d : []));
|
|
773
|
+
}
|
|
774
|
+
result.push(state.transpileToken(this.closingSquare), ' = ', ...this.value.transpile(state));
|
|
775
|
+
return result;
|
|
810
776
|
}
|
|
811
777
|
}
|
|
812
778
|
walk(visitor, options) {
|
|
813
779
|
if (options.walkMode & visitors_1.InternalWalkMode.walkExpressions) {
|
|
814
780
|
(0, visitors_1.walk)(this, 'obj', visitor, options);
|
|
815
781
|
(0, visitors_1.walk)(this, 'index', visitor, options);
|
|
782
|
+
(0, visitors_1.walkArray)(this.additionalIndexes, visitor, options, this);
|
|
816
783
|
(0, visitors_1.walk)(this, 'value', visitor, options);
|
|
817
784
|
}
|
|
818
785
|
}
|
|
819
786
|
}
|
|
820
787
|
exports.IndexedSetStatement = IndexedSetStatement;
|
|
821
|
-
class LibraryStatement extends
|
|
788
|
+
class LibraryStatement extends AstNode_1.Statement {
|
|
822
789
|
constructor(tokens) {
|
|
823
790
|
super();
|
|
824
791
|
this.tokens = tokens;
|
|
825
|
-
this.kind = AstNode_1.AstNodeKind.LibraryStatement;
|
|
826
792
|
this.range = util_1.util.createBoundingRange(this.tokens.library, this.tokens.filePath);
|
|
827
793
|
}
|
|
828
794
|
transpile(state) {
|
|
@@ -842,47 +808,36 @@ class LibraryStatement extends AstNode_2.Statement {
|
|
|
842
808
|
}
|
|
843
809
|
}
|
|
844
810
|
exports.LibraryStatement = LibraryStatement;
|
|
845
|
-
class NamespaceStatement extends
|
|
846
|
-
constructor(keyword,
|
|
811
|
+
class NamespaceStatement extends AstNode_1.Statement {
|
|
812
|
+
constructor(keyword,
|
|
813
|
+
// this should technically only be a VariableExpression or DottedGetExpression, but that can be enforced elsewhere
|
|
814
|
+
nameExpression, body, endKeyword) {
|
|
847
815
|
super();
|
|
848
816
|
this.keyword = keyword;
|
|
849
817
|
this.nameExpression = nameExpression;
|
|
850
818
|
this.body = body;
|
|
851
819
|
this.endKeyword = endKeyword;
|
|
852
|
-
this.kind = AstNode_1.AstNodeKind.NamespaceStatement;
|
|
853
820
|
this.name = this.getName(Parser_1.ParseMode.BrighterScript);
|
|
854
|
-
this.symbolTable = new
|
|
821
|
+
this.symbolTable = new SymbolTable_1.SymbolTable(`NamespaceStatement: '${this.name}'`, () => { var _a; return (_a = this.parent) === null || _a === void 0 ? void 0 : _a.getSymbolTable(); });
|
|
855
822
|
}
|
|
856
823
|
get range() {
|
|
857
824
|
return this.cacheRange();
|
|
858
825
|
}
|
|
859
826
|
cacheRange() {
|
|
860
|
-
var _a;
|
|
861
827
|
if (!this._range) {
|
|
862
|
-
this._range =
|
|
828
|
+
this._range = util_1.util.createBoundingRange(this.keyword, this.nameExpression, this.body, this.endKeyword);
|
|
863
829
|
}
|
|
864
830
|
return this._range;
|
|
865
831
|
}
|
|
866
832
|
getName(parseMode) {
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
name =
|
|
833
|
+
const parentNamespace = this.findAncestor(reflection_1.isNamespaceStatement);
|
|
834
|
+
let name = this.nameExpression.getName(parseMode);
|
|
835
|
+
if (parentNamespace) {
|
|
836
|
+
const sep = parseMode === Parser_1.ParseMode.BrighterScript ? '.' : '_';
|
|
837
|
+
name = parentNamespace.getName(parseMode) + sep + name;
|
|
872
838
|
}
|
|
873
839
|
return name;
|
|
874
840
|
}
|
|
875
|
-
getLeadingTrivia() {
|
|
876
|
-
return util_1.util.concatAnnotationLeadingTrivia(this, this.keyword.leadingTrivia);
|
|
877
|
-
}
|
|
878
|
-
getNameParts() {
|
|
879
|
-
var _a, _b;
|
|
880
|
-
let parts = util_1.util.getAllDottedGetParts(this.nameExpression);
|
|
881
|
-
if (((_b = (_a = this.parent) === null || _a === void 0 ? void 0 : _a.parent) === null || _b === void 0 ? void 0 : _b.kind) === AstNode_1.AstNodeKind.NamespaceStatement) {
|
|
882
|
-
parts = this.parent.parent.getNameParts().concat(parts);
|
|
883
|
-
}
|
|
884
|
-
return parts;
|
|
885
|
-
}
|
|
886
841
|
transpile(state) {
|
|
887
842
|
//namespaces don't actually have any real content, so just transpile their bodies
|
|
888
843
|
return this.body.transpile(state);
|
|
@@ -907,24 +862,21 @@ class NamespaceStatement extends AstNode_2.Statement {
|
|
|
907
862
|
(0, visitors_1.walk)(this, 'body', visitor, options);
|
|
908
863
|
}
|
|
909
864
|
}
|
|
910
|
-
getType(options) {
|
|
911
|
-
const resultType = new NamespaceType_1.NamespaceType(this.name);
|
|
912
|
-
return resultType;
|
|
913
|
-
}
|
|
914
865
|
}
|
|
915
866
|
exports.NamespaceStatement = NamespaceStatement;
|
|
916
|
-
class ImportStatement extends
|
|
867
|
+
class ImportStatement extends AstNode_1.Statement {
|
|
917
868
|
constructor(importToken, filePathToken) {
|
|
918
869
|
super();
|
|
919
870
|
this.importToken = importToken;
|
|
920
871
|
this.filePathToken = filePathToken;
|
|
921
|
-
this.kind = AstNode_1.AstNodeKind.ImportStatement;
|
|
922
872
|
this.range = util_1.util.createBoundingRange(importToken, filePathToken);
|
|
923
873
|
if (this.filePathToken) {
|
|
924
874
|
//remove quotes
|
|
925
875
|
this.filePath = this.filePathToken.text.replace(/"/g, '');
|
|
926
|
-
|
|
927
|
-
|
|
876
|
+
if (this.filePathToken.range) {
|
|
877
|
+
//adjust the range to exclude the quotes
|
|
878
|
+
this.filePathToken.range = util_1.util.createRange(this.filePathToken.range.start.line, this.filePathToken.range.start.character + 1, this.filePathToken.range.end.line, this.filePathToken.range.end.character - 1);
|
|
879
|
+
}
|
|
928
880
|
}
|
|
929
881
|
}
|
|
930
882
|
transpile(state) {
|
|
@@ -953,12 +905,11 @@ class ImportStatement extends AstNode_2.Statement {
|
|
|
953
905
|
}
|
|
954
906
|
}
|
|
955
907
|
exports.ImportStatement = ImportStatement;
|
|
956
|
-
class InterfaceStatement extends
|
|
908
|
+
class InterfaceStatement extends AstNode_1.Statement {
|
|
957
909
|
constructor(interfaceToken, name, extendsToken, parentInterfaceName, body, endInterfaceToken) {
|
|
958
910
|
super();
|
|
959
911
|
this.parentInterfaceName = parentInterfaceName;
|
|
960
912
|
this.body = body;
|
|
961
|
-
this.kind = AstNode_1.AstNodeKind.InterfaceStatement;
|
|
962
913
|
this.tokens = {};
|
|
963
914
|
this.tokens.interface = interfaceToken;
|
|
964
915
|
this.tokens.name = name;
|
|
@@ -966,18 +917,20 @@ class InterfaceStatement extends AstNode_2.Statement {
|
|
|
966
917
|
this.tokens.endInterface = endInterfaceToken;
|
|
967
918
|
this.range = util_1.util.createBoundingRange(this.tokens.interface, this.tokens.name, this.tokens.extends, this.parentInterfaceName, ...this.body, this.tokens.endInterface);
|
|
968
919
|
}
|
|
920
|
+
/**
|
|
921
|
+
* Get the name of the wrapping namespace (if it exists)
|
|
922
|
+
* @deprecated use `.findAncestor(isNamespaceStatement)` instead.
|
|
923
|
+
*/
|
|
924
|
+
get namespaceName() {
|
|
925
|
+
var _a;
|
|
926
|
+
return (_a = this.findAncestor(reflection_1.isNamespaceStatement)) === null || _a === void 0 ? void 0 : _a.nameExpression;
|
|
927
|
+
}
|
|
969
928
|
get fields() {
|
|
970
929
|
return this.body.filter(x => (0, reflection_1.isInterfaceFieldStatement)(x));
|
|
971
930
|
}
|
|
972
931
|
get methods() {
|
|
973
932
|
return this.body.filter(x => (0, reflection_1.isInterfaceMethodStatement)(x));
|
|
974
933
|
}
|
|
975
|
-
hasParentInterface() {
|
|
976
|
-
return !!this.parentInterfaceName;
|
|
977
|
-
}
|
|
978
|
-
getLeadingTrivia() {
|
|
979
|
-
return util_1.util.concatAnnotationLeadingTrivia(this, this.tokens.interface.leadingTrivia);
|
|
980
|
-
}
|
|
981
934
|
/**
|
|
982
935
|
* The name of the interface WITH its leading namespace (if applicable)
|
|
983
936
|
*/
|
|
@@ -1031,7 +984,7 @@ class InterfaceStatement extends AstNode_2.Statement {
|
|
|
1031
984
|
result.push(...annotation.getTypedef(state), state.newline, state.indent());
|
|
1032
985
|
}
|
|
1033
986
|
result.push(this.tokens.interface.text, ' ', this.tokens.name.text);
|
|
1034
|
-
const parentInterfaceName = (_b = this.parentInterfaceName) === null || _b === void 0 ? void 0 : _b.getName();
|
|
987
|
+
const parentInterfaceName = (_b = this.parentInterfaceName) === null || _b === void 0 ? void 0 : _b.getName(Parser_1.ParseMode.BrighterScript);
|
|
1035
988
|
if (parentInterfaceName) {
|
|
1036
989
|
result.push(' extends ', parentInterfaceName);
|
|
1037
990
|
}
|
|
@@ -1060,43 +1013,22 @@ class InterfaceStatement extends AstNode_2.Statement {
|
|
|
1060
1013
|
(0, visitors_1.walkArray)(this.body, visitor, options, this);
|
|
1061
1014
|
}
|
|
1062
1015
|
}
|
|
1063
|
-
getType(options) {
|
|
1064
|
-
var _a, _b, _c, _d;
|
|
1065
|
-
const superIface = (_a = this.parentInterfaceName) === null || _a === void 0 ? void 0 : _a.getType(options);
|
|
1066
|
-
const resultType = new InterfaceType_1.InterfaceType(this.getName(Parser_1.ParseMode.BrighterScript), superIface);
|
|
1067
|
-
for (const statement of this.methods) {
|
|
1068
|
-
const memberType = statement === null || statement === void 0 ? void 0 : statement.getType(Object.assign(Object.assign({}, options), { typeChain: undefined })); // no typechain info needed
|
|
1069
|
-
const flag = statement.isOptional ? SymbolTable_1.SymbolTypeFlag.runtime | SymbolTable_1.SymbolTypeFlag.optional : SymbolTable_1.SymbolTypeFlag.runtime;
|
|
1070
|
-
resultType.addMember((_b = statement === null || statement === void 0 ? void 0 : statement.tokens.name) === null || _b === void 0 ? void 0 : _b.text, { definingNode: statement }, memberType, flag);
|
|
1071
|
-
}
|
|
1072
|
-
for (const statement of this.fields) {
|
|
1073
|
-
const memberType = statement === null || statement === void 0 ? void 0 : statement.getType(Object.assign(Object.assign({}, options), { typeChain: undefined })); // no typechain info needed
|
|
1074
|
-
const flag = statement.isOptional ? SymbolTable_1.SymbolTypeFlag.runtime | SymbolTable_1.SymbolTypeFlag.optional : SymbolTable_1.SymbolTypeFlag.runtime;
|
|
1075
|
-
resultType.addMember((_c = statement === null || statement === void 0 ? void 0 : statement.tokens.name) === null || _c === void 0 ? void 0 : _c.text, { definingNode: statement }, memberType, flag);
|
|
1076
|
-
}
|
|
1077
|
-
(_d = options.typeChain) === null || _d === void 0 ? void 0 : _d.push(new interfaces_1.TypeChainEntry(this.getName(Parser_1.ParseMode.BrighterScript), resultType, options.flags, this.range));
|
|
1078
|
-
return resultType;
|
|
1079
|
-
}
|
|
1080
1016
|
}
|
|
1081
1017
|
exports.InterfaceStatement = InterfaceStatement;
|
|
1082
|
-
class InterfaceFieldStatement extends
|
|
1083
|
-
constructor(nameToken, asToken,
|
|
1018
|
+
class InterfaceFieldStatement extends AstNode_1.Statement {
|
|
1019
|
+
constructor(nameToken, asToken, typeToken, type, optionalToken) {
|
|
1084
1020
|
super();
|
|
1085
|
-
this.
|
|
1086
|
-
this.kind = AstNode_1.AstNodeKind.InterfaceFieldStatement;
|
|
1021
|
+
this.type = type;
|
|
1087
1022
|
this.tokens = {};
|
|
1088
1023
|
this.tokens.optional = optionalToken;
|
|
1089
1024
|
this.tokens.name = nameToken;
|
|
1090
1025
|
this.tokens.as = asToken;
|
|
1091
|
-
this.
|
|
1026
|
+
this.tokens.type = typeToken;
|
|
1027
|
+
this.range = util_1.util.createBoundingRange(optionalToken, nameToken, asToken, typeToken);
|
|
1092
1028
|
}
|
|
1093
1029
|
transpile(state) {
|
|
1094
1030
|
throw new Error('Method not implemented.');
|
|
1095
1031
|
}
|
|
1096
|
-
getLeadingTrivia() {
|
|
1097
|
-
var _a, _b;
|
|
1098
|
-
return util_1.util.concatAnnotationLeadingTrivia(this, (_b = (_a = this.tokens.optional) === null || _a === void 0 ? void 0 : _a.leadingTrivia) !== null && _b !== void 0 ? _b : this.tokens.name.leadingTrivia);
|
|
1099
|
-
}
|
|
1100
1032
|
get name() {
|
|
1101
1033
|
return this.tokens.name.text;
|
|
1102
1034
|
}
|
|
@@ -1104,12 +1036,10 @@ class InterfaceFieldStatement extends AstNode_2.Statement {
|
|
|
1104
1036
|
return !!this.tokens.optional;
|
|
1105
1037
|
}
|
|
1106
1038
|
walk(visitor, options) {
|
|
1107
|
-
|
|
1108
|
-
(0, visitors_1.walk)(this, 'typeExpression', visitor, options);
|
|
1109
|
-
}
|
|
1039
|
+
//nothing to walk
|
|
1110
1040
|
}
|
|
1111
1041
|
getTypedef(state) {
|
|
1112
|
-
var _a;
|
|
1042
|
+
var _a, _b, _c;
|
|
1113
1043
|
const result = [];
|
|
1114
1044
|
for (let annotation of (_a = this.annotations) !== null && _a !== void 0 ? _a : []) {
|
|
1115
1045
|
result.push(...annotation.getTypedef(state), state.newline, state.indent());
|
|
@@ -1118,25 +1048,18 @@ class InterfaceFieldStatement extends AstNode_2.Statement {
|
|
|
1118
1048
|
result.push(this.tokens.optional.text, ' ');
|
|
1119
1049
|
}
|
|
1120
1050
|
result.push(this.tokens.name.text);
|
|
1121
|
-
if (this.
|
|
1122
|
-
result.push(' as ',
|
|
1051
|
+
if (((_c = (_b = this.tokens.type) === null || _b === void 0 ? void 0 : _b.text) === null || _c === void 0 ? void 0 : _c.length) > 0) {
|
|
1052
|
+
result.push(' as ', this.tokens.type.text);
|
|
1123
1053
|
}
|
|
1124
1054
|
return result;
|
|
1125
1055
|
}
|
|
1126
|
-
getType(options) {
|
|
1127
|
-
var _a, _b;
|
|
1128
|
-
return (_b = (_a = this.typeExpression) === null || _a === void 0 ? void 0 : _a.getType(options)) !== null && _b !== void 0 ? _b : DynamicType_1.DynamicType.instance;
|
|
1129
|
-
}
|
|
1130
1056
|
}
|
|
1131
1057
|
exports.InterfaceFieldStatement = InterfaceFieldStatement;
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
class InterfaceMethodStatement extends AstNode_2.Statement {
|
|
1135
|
-
constructor(functionTypeToken, nameToken, leftParen, params, rightParen, asToken, returnTypeExpression, optionalToken) {
|
|
1058
|
+
class InterfaceMethodStatement extends AstNode_1.Statement {
|
|
1059
|
+
constructor(functionTypeToken, nameToken, leftParen, params, rightParen, asToken, returnTypeToken, returnType, optionalToken) {
|
|
1136
1060
|
super();
|
|
1137
1061
|
this.params = params;
|
|
1138
|
-
this.
|
|
1139
|
-
this.kind = AstNode_1.AstNodeKind.InterfaceMethodStatement;
|
|
1062
|
+
this.returnType = returnType;
|
|
1140
1063
|
this.tokens = {};
|
|
1141
1064
|
this.tokens.optional = optionalToken;
|
|
1142
1065
|
this.tokens.functionType = functionTypeToken;
|
|
@@ -1144,31 +1067,20 @@ class InterfaceMethodStatement extends AstNode_2.Statement {
|
|
|
1144
1067
|
this.tokens.leftParen = leftParen;
|
|
1145
1068
|
this.tokens.rightParen = rightParen;
|
|
1146
1069
|
this.tokens.as = asToken;
|
|
1070
|
+
this.tokens.returnType = returnTypeToken;
|
|
1147
1071
|
}
|
|
1148
1072
|
transpile(state) {
|
|
1149
1073
|
throw new Error('Method not implemented.');
|
|
1150
1074
|
}
|
|
1151
1075
|
get range() {
|
|
1152
1076
|
var _a;
|
|
1153
|
-
return util_1.util.createBoundingRange(this.tokens.optional, this.tokens.functionType, this.tokens.name, this.tokens.leftParen, ...((_a = this.params) !== null && _a !== void 0 ? _a : []), this.tokens.rightParen, this.tokens.as, this.
|
|
1154
|
-
}
|
|
1155
|
-
/**
|
|
1156
|
-
* Get the name of this method.
|
|
1157
|
-
*/
|
|
1158
|
-
getName(parseMode) {
|
|
1159
|
-
return this.tokens.name.text;
|
|
1077
|
+
return util_1.util.createBoundingRange(this.tokens.optional, this.tokens.functionType, this.tokens.name, this.tokens.leftParen, ...((_a = this.params) !== null && _a !== void 0 ? _a : []), this.tokens.rightParen, this.tokens.as, this.tokens.returnType);
|
|
1160
1078
|
}
|
|
1161
1079
|
get isOptional() {
|
|
1162
1080
|
return !!this.tokens.optional;
|
|
1163
1081
|
}
|
|
1164
|
-
getLeadingTrivia() {
|
|
1165
|
-
var _a, _b;
|
|
1166
|
-
return util_1.util.concatAnnotationLeadingTrivia(this, (_b = (_a = this.tokens.optional) === null || _a === void 0 ? void 0 : _a.leadingTrivia) !== null && _b !== void 0 ? _b : this.tokens.functionType.leadingTrivia);
|
|
1167
|
-
}
|
|
1168
1082
|
walk(visitor, options) {
|
|
1169
|
-
|
|
1170
|
-
(0, visitors_1.walk)(this, 'returnTypeExpression', visitor, options);
|
|
1171
|
-
}
|
|
1083
|
+
//nothing to walk
|
|
1172
1084
|
}
|
|
1173
1085
|
getTypedef(state) {
|
|
1174
1086
|
var _a, _b;
|
|
@@ -1187,48 +1099,27 @@ class InterfaceMethodStatement extends AstNode_2.Statement {
|
|
|
1187
1099
|
}
|
|
1188
1100
|
const param = params[i];
|
|
1189
1101
|
result.push(param.name.text);
|
|
1190
|
-
|
|
1191
|
-
|
|
1102
|
+
const typeToken = param.typeToken;
|
|
1103
|
+
if (typeToken && typeToken.text.length > 0) {
|
|
1104
|
+
result.push(' as ', typeToken.text);
|
|
1192
1105
|
}
|
|
1193
1106
|
}
|
|
1194
1107
|
result.push(')');
|
|
1195
|
-
|
|
1196
|
-
|
|
1108
|
+
const returnTypeToken = this.tokens.returnType;
|
|
1109
|
+
if (returnTypeToken && returnTypeToken.text.length > 0) {
|
|
1110
|
+
result.push(' as ', returnTypeToken.text);
|
|
1197
1111
|
}
|
|
1198
1112
|
return result;
|
|
1199
1113
|
}
|
|
1200
|
-
getType(options) {
|
|
1201
|
-
var _a, _b, _c;
|
|
1202
|
-
//if there's a defined return type, use that
|
|
1203
|
-
let returnType = (_a = this.returnTypeExpression) === null || _a === void 0 ? void 0 : _a.getType(options);
|
|
1204
|
-
const isSub = this.tokens.functionType.kind === TokenKind_1.TokenKind.Sub;
|
|
1205
|
-
//if we don't have a return type and this is a sub, set the return type to `void`. else use `dynamic`
|
|
1206
|
-
if (!returnType) {
|
|
1207
|
-
returnType = isSub ? VoidType_1.VoidType.instance : DynamicType_1.DynamicType.instance;
|
|
1208
|
-
}
|
|
1209
|
-
const resultType = new TypedFunctionType_1.TypedFunctionType(returnType);
|
|
1210
|
-
resultType.isSub = isSub;
|
|
1211
|
-
for (let param of this.params) {
|
|
1212
|
-
resultType.addParameter(param.name.text, param.getType(options), !!param.defaultValue);
|
|
1213
|
-
}
|
|
1214
|
-
if (options.typeChain) {
|
|
1215
|
-
// need Interface type for type chain
|
|
1216
|
-
(_b = this.parent) === null || _b === void 0 ? void 0 : _b.getType(options);
|
|
1217
|
-
}
|
|
1218
|
-
let funcName = this.getName(Parser_1.ParseMode.BrighterScript);
|
|
1219
|
-
resultType.setName(funcName);
|
|
1220
|
-
(_c = options.typeChain) === null || _c === void 0 ? void 0 : _c.push(new interfaces_1.TypeChainEntry(resultType.name, resultType, options.flags, this.range));
|
|
1221
|
-
return resultType;
|
|
1222
|
-
}
|
|
1223
1114
|
}
|
|
1224
1115
|
exports.InterfaceMethodStatement = InterfaceMethodStatement;
|
|
1225
|
-
class ClassStatement extends
|
|
1116
|
+
class ClassStatement extends AstNode_1.Statement {
|
|
1226
1117
|
constructor(classKeyword,
|
|
1227
1118
|
/**
|
|
1228
1119
|
* The name of the class (without namespace prefix)
|
|
1229
1120
|
*/
|
|
1230
1121
|
name, body, end, extendsKeyword, parentClassName) {
|
|
1231
|
-
var _a, _b, _c
|
|
1122
|
+
var _a, _b, _c;
|
|
1232
1123
|
super();
|
|
1233
1124
|
this.classKeyword = classKeyword;
|
|
1234
1125
|
this.name = name;
|
|
@@ -1236,24 +1127,30 @@ class ClassStatement extends AstNode_2.Statement {
|
|
|
1236
1127
|
this.end = end;
|
|
1237
1128
|
this.extendsKeyword = extendsKeyword;
|
|
1238
1129
|
this.parentClassName = parentClassName;
|
|
1239
|
-
this.kind = AstNode_1.AstNodeKind.ClassStatement;
|
|
1240
1130
|
this.memberMap = {};
|
|
1241
1131
|
this.methods = [];
|
|
1242
1132
|
this.fields = [];
|
|
1243
1133
|
this.body = (_a = this.body) !== null && _a !== void 0 ? _a : [];
|
|
1244
|
-
this.symbolTable = new SymbolTable_2.SymbolTable(`ClassStatement: '${(_b = this.name) === null || _b === void 0 ? void 0 : _b.text}'`, () => { var _a; return (_a = this.parent) === null || _a === void 0 ? void 0 : _a.getSymbolTable(); });
|
|
1245
1134
|
for (let statement of this.body) {
|
|
1246
1135
|
if ((0, reflection_1.isMethodStatement)(statement)) {
|
|
1247
1136
|
this.methods.push(statement);
|
|
1248
|
-
this.memberMap[(
|
|
1137
|
+
this.memberMap[(_b = statement === null || statement === void 0 ? void 0 : statement.name) === null || _b === void 0 ? void 0 : _b.text.toLowerCase()] = statement;
|
|
1249
1138
|
}
|
|
1250
1139
|
else if ((0, reflection_1.isFieldStatement)(statement)) {
|
|
1251
1140
|
this.fields.push(statement);
|
|
1252
|
-
this.memberMap[(
|
|
1141
|
+
this.memberMap[(_c = statement.name) === null || _c === void 0 ? void 0 : _c.text.toLowerCase()] = statement;
|
|
1253
1142
|
}
|
|
1254
1143
|
}
|
|
1255
1144
|
this.range = util_1.util.createBoundingRange(classKeyword, name, extendsKeyword, parentClassName, ...(body !== null && body !== void 0 ? body : []), end);
|
|
1256
1145
|
}
|
|
1146
|
+
/**
|
|
1147
|
+
* Get the name of the wrapping namespace (if it exists)
|
|
1148
|
+
* @deprecated use `.findAncestor(isNamespaceStatement)` instead.
|
|
1149
|
+
*/
|
|
1150
|
+
get namespaceName() {
|
|
1151
|
+
var _a;
|
|
1152
|
+
return (_a = this.findAncestor(reflection_1.isNamespaceStatement)) === null || _a === void 0 ? void 0 : _a.nameExpression;
|
|
1153
|
+
}
|
|
1257
1154
|
getName(parseMode) {
|
|
1258
1155
|
var _a;
|
|
1259
1156
|
const name = (_a = this.name) === null || _a === void 0 ? void 0 : _a.text;
|
|
@@ -1273,9 +1170,6 @@ class ClassStatement extends AstNode_2.Statement {
|
|
|
1273
1170
|
return undefined;
|
|
1274
1171
|
}
|
|
1275
1172
|
}
|
|
1276
|
-
getLeadingTrivia() {
|
|
1277
|
-
return util_1.util.concatAnnotationLeadingTrivia(this, this.classKeyword.leadingTrivia);
|
|
1278
|
-
}
|
|
1279
1173
|
transpile(state) {
|
|
1280
1174
|
let result = [];
|
|
1281
1175
|
//make the builder
|
|
@@ -1294,7 +1188,7 @@ class ClassStatement extends AstNode_2.Statement {
|
|
|
1294
1188
|
result.push('class ', this.name.text);
|
|
1295
1189
|
if (this.extendsKeyword && this.parentClassName) {
|
|
1296
1190
|
const namespace = this.findAncestor(reflection_1.isNamespaceStatement);
|
|
1297
|
-
const fqName = util_1.util.getFullyQualifiedClassName(this.parentClassName.getName(), namespace === null || namespace === void 0 ? void 0 : namespace.getName(Parser_1.ParseMode.BrighterScript));
|
|
1191
|
+
const fqName = util_1.util.getFullyQualifiedClassName(this.parentClassName.getName(Parser_1.ParseMode.BrighterScript), namespace === null || namespace === void 0 ? void 0 : namespace.getName(Parser_1.ParseMode.BrighterScript));
|
|
1298
1192
|
result.push(` extends ${fqName}`);
|
|
1299
1193
|
}
|
|
1300
1194
|
result.push(state.newline);
|
|
@@ -1331,9 +1225,9 @@ class ClassStatement extends AstNode_2.Statement {
|
|
|
1331
1225
|
let stmt = this;
|
|
1332
1226
|
while (stmt) {
|
|
1333
1227
|
if (stmt.parentClassName) {
|
|
1334
|
-
const namespace =
|
|
1228
|
+
const namespace = stmt.findAncestor(reflection_1.isNamespaceStatement);
|
|
1335
1229
|
//find the parent class
|
|
1336
|
-
stmt = (_a = state.file.getClassFileLink(stmt.parentClassName.getName(), namespace === null || namespace === void 0 ? void 0 : namespace.getName(Parser_1.ParseMode.BrighterScript))) === null || _a === void 0 ? void 0 : _a.item;
|
|
1230
|
+
stmt = (_a = state.file.getClassFileLink(stmt.parentClassName.getName(Parser_1.ParseMode.BrighterScript), namespace === null || namespace === void 0 ? void 0 : namespace.getName(Parser_1.ParseMode.BrighterScript))) === null || _a === void 0 ? void 0 : _a.item;
|
|
1337
1231
|
myIndex++;
|
|
1338
1232
|
}
|
|
1339
1233
|
else {
|
|
@@ -1362,7 +1256,7 @@ class ClassStatement extends AstNode_2.Statement {
|
|
|
1362
1256
|
while (stmt) {
|
|
1363
1257
|
if (stmt.parentClassName) {
|
|
1364
1258
|
const namespace = this.findAncestor(reflection_1.isNamespaceStatement);
|
|
1365
|
-
stmt = (_a = state.file.getClassFileLink(stmt.parentClassName.getName(), namespace === null || namespace === void 0 ? void 0 : namespace.getName(Parser_1.ParseMode.BrighterScript))) === null || _a === void 0 ? void 0 : _a.item;
|
|
1259
|
+
stmt = (_a = state.file.getClassFileLink(stmt.parentClassName.getName(Parser_1.ParseMode.BrighterScript), namespace === null || namespace === void 0 ? void 0 : namespace.getName(Parser_1.ParseMode.BrighterScript))) === null || _a === void 0 ? void 0 : _a.item;
|
|
1366
1260
|
ancestors.push(stmt);
|
|
1367
1261
|
}
|
|
1368
1262
|
else {
|
|
@@ -1513,23 +1407,6 @@ class ClassStatement extends AstNode_2.Statement {
|
|
|
1513
1407
|
(0, visitors_1.walkArray)(this.body, visitor, options, this);
|
|
1514
1408
|
}
|
|
1515
1409
|
}
|
|
1516
|
-
getType(options) {
|
|
1517
|
-
var _a, _b, _c, _d;
|
|
1518
|
-
const superClass = (_a = this.parentClassName) === null || _a === void 0 ? void 0 : _a.getType(options);
|
|
1519
|
-
const resultType = new ClassType_1.ClassType(this.getName(Parser_1.ParseMode.BrighterScript), superClass);
|
|
1520
|
-
for (const statement of this.methods) {
|
|
1521
|
-
const funcType = statement === null || statement === void 0 ? void 0 : statement.func.getType(Object.assign(Object.assign({}, options), { typeChain: undefined })); //no typechain needed
|
|
1522
|
-
const flag = SymbolTable_1.SymbolTypeFlag.runtime;
|
|
1523
|
-
resultType.addMember((_b = statement === null || statement === void 0 ? void 0 : statement.name) === null || _b === void 0 ? void 0 : _b.text, { definingNode: statement }, funcType, flag);
|
|
1524
|
-
}
|
|
1525
|
-
for (const statement of this.fields) {
|
|
1526
|
-
const fieldType = statement.getType(Object.assign(Object.assign({}, options), { typeChain: undefined })); //no typechain needed
|
|
1527
|
-
const flag = statement.isOptional ? SymbolTable_1.SymbolTypeFlag.runtime | SymbolTable_1.SymbolTypeFlag.optional : SymbolTable_1.SymbolTypeFlag.runtime;
|
|
1528
|
-
resultType.addMember((_c = statement === null || statement === void 0 ? void 0 : statement.name) === null || _c === void 0 ? void 0 : _c.text, { definingNode: statement }, fieldType, flag);
|
|
1529
|
-
}
|
|
1530
|
-
(_d = options.typeChain) === null || _d === void 0 ? void 0 : _d.push(new interfaces_1.TypeChainEntry(resultType.name, resultType, options.flags, this.range));
|
|
1531
|
-
return resultType;
|
|
1532
|
-
}
|
|
1533
1410
|
}
|
|
1534
1411
|
exports.ClassStatement = ClassStatement;
|
|
1535
1412
|
const accessModifiers = [
|
|
@@ -1541,7 +1418,6 @@ class MethodStatement extends FunctionStatement {
|
|
|
1541
1418
|
constructor(modifiers, name, func, override) {
|
|
1542
1419
|
super(name, func);
|
|
1543
1420
|
this.override = override;
|
|
1544
|
-
this.kind = AstNode_1.AstNodeKind.MethodStatement;
|
|
1545
1421
|
this.modifiers = [];
|
|
1546
1422
|
if (modifiers) {
|
|
1547
1423
|
if (Array.isArray(modifiers)) {
|
|
@@ -1562,9 +1438,6 @@ class MethodStatement extends FunctionStatement {
|
|
|
1562
1438
|
getName(parseMode) {
|
|
1563
1439
|
return this.name.text;
|
|
1564
1440
|
}
|
|
1565
|
-
getLeadingTrivia() {
|
|
1566
|
-
return util_1.util.concatAnnotationLeadingTrivia(this, this.func.getLeadingTrivia());
|
|
1567
|
-
}
|
|
1568
1441
|
transpile(state) {
|
|
1569
1442
|
if (this.name.text.toLowerCase() === 'new') {
|
|
1570
1443
|
this.ensureSuperConstructorCall(state);
|
|
@@ -1622,10 +1495,11 @@ class MethodStatement extends FunctionStatement {
|
|
|
1622
1495
|
}
|
|
1623
1496
|
//check whether any calls to super exist
|
|
1624
1497
|
let containsSuperCall = this.func.body.statements.findIndex((x) => {
|
|
1498
|
+
var _a;
|
|
1625
1499
|
//is a call statement
|
|
1626
1500
|
return (0, reflection_1.isExpressionStatement)(x) && (0, reflection_1.isCallExpression)(x.expression) &&
|
|
1627
1501
|
//is a call to super
|
|
1628
|
-
util_1.util.findBeginningVariableExpression(x.expression.callee).name.text.toLowerCase() === 'super';
|
|
1502
|
+
((_a = util_1.util.findBeginningVariableExpression(x.expression.callee)) === null || _a === void 0 ? void 0 : _a.name.text.toLowerCase()) === 'super';
|
|
1629
1503
|
}) !== -1;
|
|
1630
1504
|
//if a call to super exists, quit here
|
|
1631
1505
|
if (containsSuperCall) {
|
|
@@ -1637,22 +1511,19 @@ class MethodStatement extends FunctionStatement {
|
|
|
1637
1511
|
text: 'super',
|
|
1638
1512
|
isReserved: false,
|
|
1639
1513
|
range: state.classStatement.name.range,
|
|
1640
|
-
leadingWhitespace: ''
|
|
1641
|
-
leadingTrivia: []
|
|
1514
|
+
leadingWhitespace: ''
|
|
1642
1515
|
}), {
|
|
1643
1516
|
kind: TokenKind_1.TokenKind.LeftParen,
|
|
1644
1517
|
text: '(',
|
|
1645
1518
|
isReserved: false,
|
|
1646
1519
|
range: state.classStatement.name.range,
|
|
1647
|
-
leadingWhitespace: ''
|
|
1648
|
-
leadingTrivia: []
|
|
1520
|
+
leadingWhitespace: ''
|
|
1649
1521
|
}, {
|
|
1650
1522
|
kind: TokenKind_1.TokenKind.RightParen,
|
|
1651
1523
|
text: ')',
|
|
1652
1524
|
isReserved: false,
|
|
1653
1525
|
range: state.classStatement.name.range,
|
|
1654
|
-
leadingWhitespace: ''
|
|
1655
|
-
leadingTrivia: []
|
|
1526
|
+
leadingWhitespace: ''
|
|
1656
1527
|
}, []));
|
|
1657
1528
|
state.editor.arrayUnshift(this.func.body.statements, superCall);
|
|
1658
1529
|
}
|
|
@@ -1660,20 +1531,20 @@ class MethodStatement extends FunctionStatement {
|
|
|
1660
1531
|
* Inject field initializers at the top of the `new` function (after any present `super()` call)
|
|
1661
1532
|
*/
|
|
1662
1533
|
injectFieldInitializersForConstructor(state) {
|
|
1534
|
+
var _a, _b, _c;
|
|
1663
1535
|
let startingIndex = state.classStatement.hasParentClass() ? 1 : 0;
|
|
1664
1536
|
let newStatements = [];
|
|
1665
1537
|
//insert the field initializers in order
|
|
1666
1538
|
for (let field of state.classStatement.fields) {
|
|
1667
1539
|
let thisQualifiedName = Object.assign({}, field.name);
|
|
1668
|
-
thisQualifiedName.text = 'm.' + field.name.text;
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1540
|
+
thisQualifiedName.text = 'm.' + ((_a = field.name) === null || _a === void 0 ? void 0 : _a.text);
|
|
1541
|
+
if (field.initialValue) {
|
|
1542
|
+
newStatements.push(new AssignmentStatement(field.equal, thisQualifiedName, field.initialValue));
|
|
1543
|
+
}
|
|
1544
|
+
else {
|
|
1672
1545
|
//if there is no initial value, set the initial value to `invalid`
|
|
1673
|
-
(0, creators_1.createInvalidLiteral)('invalid', field.name.range));
|
|
1674
|
-
|
|
1675
|
-
fieldAssignment.parent = state.classStatement;
|
|
1676
|
-
newStatements.push(fieldAssignment);
|
|
1546
|
+
newStatements.push(new AssignmentStatement((0, creators_1.createToken)(TokenKind_1.TokenKind.Equal, '=', (_b = field.name) === null || _b === void 0 ? void 0 : _b.range), thisQualifiedName, (0, creators_1.createInvalidLiteral)('invalid', (_c = field.name) === null || _c === void 0 ? void 0 : _c.range)));
|
|
1547
|
+
}
|
|
1677
1548
|
}
|
|
1678
1549
|
state.editor.arraySplice(this.func.body.statements, startingIndex, 0, ...newStatements);
|
|
1679
1550
|
}
|
|
@@ -1684,30 +1555,38 @@ class MethodStatement extends FunctionStatement {
|
|
|
1684
1555
|
}
|
|
1685
1556
|
}
|
|
1686
1557
|
exports.MethodStatement = MethodStatement;
|
|
1687
|
-
|
|
1688
|
-
|
|
1558
|
+
/**
|
|
1559
|
+
* @deprecated use `MethodStatement`
|
|
1560
|
+
*/
|
|
1561
|
+
class ClassMethodStatement extends MethodStatement {
|
|
1562
|
+
}
|
|
1563
|
+
exports.ClassMethodStatement = ClassMethodStatement;
|
|
1564
|
+
class FieldStatement extends AstNode_1.Statement {
|
|
1565
|
+
constructor(accessModifier, name, as, type, equal, initialValue, optional) {
|
|
1689
1566
|
super();
|
|
1690
1567
|
this.accessModifier = accessModifier;
|
|
1691
1568
|
this.name = name;
|
|
1692
1569
|
this.as = as;
|
|
1693
|
-
this.
|
|
1570
|
+
this.type = type;
|
|
1694
1571
|
this.equal = equal;
|
|
1695
1572
|
this.initialValue = initialValue;
|
|
1696
1573
|
this.optional = optional;
|
|
1697
|
-
this.
|
|
1698
|
-
this.range = util_1.util.createBoundingRange(accessModifier, optional, name, as, typeExpression, equal, initialValue);
|
|
1574
|
+
this.range = util_1.util.createBoundingRange(accessModifier, name, as, type, equal, initialValue);
|
|
1699
1575
|
}
|
|
1700
1576
|
/**
|
|
1701
1577
|
* Derive a ValueKind from the type token, or the initial value.
|
|
1702
1578
|
* Defaults to `DynamicType`
|
|
1703
1579
|
*/
|
|
1704
|
-
getType(
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1580
|
+
getType() {
|
|
1581
|
+
if (this.type) {
|
|
1582
|
+
return util_1.util.tokenToBscType(this.type);
|
|
1583
|
+
}
|
|
1584
|
+
else if ((0, reflection_1.isLiteralExpression)(this.initialValue)) {
|
|
1585
|
+
return this.initialValue.type;
|
|
1586
|
+
}
|
|
1587
|
+
else {
|
|
1588
|
+
return new DynamicType_1.DynamicType();
|
|
1589
|
+
}
|
|
1711
1590
|
}
|
|
1712
1591
|
get isOptional() {
|
|
1713
1592
|
return !!this.optional;
|
|
@@ -1722,7 +1601,7 @@ class FieldStatement extends AstNode_2.Statement {
|
|
|
1722
1601
|
for (let annotation of (_a = this.annotations) !== null && _a !== void 0 ? _a : []) {
|
|
1723
1602
|
result.push(...annotation.getTypedef(state), state.newline, state.indent());
|
|
1724
1603
|
}
|
|
1725
|
-
let type = this.getType(
|
|
1604
|
+
let type = this.getType();
|
|
1726
1605
|
if ((0, reflection_1.isInvalidType)(type) || (0, reflection_1.isVoidType)(type)) {
|
|
1727
1606
|
type = new DynamicType_1.DynamicType();
|
|
1728
1607
|
}
|
|
@@ -1735,20 +1614,24 @@ class FieldStatement extends AstNode_2.Statement {
|
|
|
1735
1614
|
return result;
|
|
1736
1615
|
}
|
|
1737
1616
|
walk(visitor, options) {
|
|
1738
|
-
if (options.walkMode & visitors_1.InternalWalkMode.walkExpressions) {
|
|
1739
|
-
(0, visitors_1.walk)(this, 'typeExpression', visitor, options);
|
|
1617
|
+
if (this.initialValue && options.walkMode & visitors_1.InternalWalkMode.walkExpressions) {
|
|
1740
1618
|
(0, visitors_1.walk)(this, 'initialValue', visitor, options);
|
|
1741
1619
|
}
|
|
1742
1620
|
}
|
|
1743
1621
|
}
|
|
1744
1622
|
exports.FieldStatement = FieldStatement;
|
|
1745
|
-
|
|
1623
|
+
/**
|
|
1624
|
+
* @deprecated use `FieldStatement`
|
|
1625
|
+
*/
|
|
1626
|
+
class ClassFieldStatement extends FieldStatement {
|
|
1627
|
+
}
|
|
1628
|
+
exports.ClassFieldStatement = ClassFieldStatement;
|
|
1629
|
+
class TryCatchStatement extends AstNode_1.Statement {
|
|
1746
1630
|
constructor(tokens, tryBranch, catchStatement) {
|
|
1747
1631
|
super();
|
|
1748
1632
|
this.tokens = tokens;
|
|
1749
1633
|
this.tryBranch = tryBranch;
|
|
1750
1634
|
this.catchStatement = catchStatement;
|
|
1751
|
-
this.kind = AstNode_1.AstNodeKind.TryCatchStatement;
|
|
1752
1635
|
this.range = util_1.util.createBoundingRange(tokens.try, tryBranch, catchStatement, tokens.endTry);
|
|
1753
1636
|
}
|
|
1754
1637
|
transpile(state) {
|
|
@@ -1772,13 +1655,12 @@ class TryCatchStatement extends AstNode_2.Statement {
|
|
|
1772
1655
|
}
|
|
1773
1656
|
}
|
|
1774
1657
|
exports.TryCatchStatement = TryCatchStatement;
|
|
1775
|
-
class CatchStatement extends
|
|
1658
|
+
class CatchStatement extends AstNode_1.Statement {
|
|
1776
1659
|
constructor(tokens, exceptionVariable, catchBranch) {
|
|
1777
1660
|
super();
|
|
1778
1661
|
this.tokens = tokens;
|
|
1779
1662
|
this.exceptionVariable = exceptionVariable;
|
|
1780
1663
|
this.catchBranch = catchBranch;
|
|
1781
|
-
this.kind = AstNode_1.AstNodeKind.CatchStatement;
|
|
1782
1664
|
this.range = util_1.util.createBoundingRange(tokens.catch, exceptionVariable, catchBranch);
|
|
1783
1665
|
}
|
|
1784
1666
|
transpile(state) {
|
|
@@ -1797,12 +1679,11 @@ class CatchStatement extends AstNode_2.Statement {
|
|
|
1797
1679
|
}
|
|
1798
1680
|
}
|
|
1799
1681
|
exports.CatchStatement = CatchStatement;
|
|
1800
|
-
class ThrowStatement extends
|
|
1682
|
+
class ThrowStatement extends AstNode_1.Statement {
|
|
1801
1683
|
constructor(throwToken, expression) {
|
|
1802
1684
|
super();
|
|
1803
1685
|
this.throwToken = throwToken;
|
|
1804
1686
|
this.expression = expression;
|
|
1805
|
-
this.kind = AstNode_1.AstNodeKind.ThrowStatement;
|
|
1806
1687
|
this.range = util_1.util.createBoundingRange(throwToken, expression);
|
|
1807
1688
|
}
|
|
1808
1689
|
transpile(state) {
|
|
@@ -1827,19 +1708,25 @@ class ThrowStatement extends AstNode_2.Statement {
|
|
|
1827
1708
|
}
|
|
1828
1709
|
}
|
|
1829
1710
|
exports.ThrowStatement = ThrowStatement;
|
|
1830
|
-
class EnumStatement extends
|
|
1711
|
+
class EnumStatement extends AstNode_1.Statement {
|
|
1831
1712
|
constructor(tokens, body) {
|
|
1832
1713
|
var _a;
|
|
1833
1714
|
super();
|
|
1834
1715
|
this.tokens = tokens;
|
|
1835
1716
|
this.body = body;
|
|
1836
|
-
this.kind = AstNode_1.AstNodeKind.EnumStatement;
|
|
1837
|
-
this.symbolTable = new SymbolTable_2.SymbolTable('Enum');
|
|
1838
1717
|
this.body = (_a = this.body) !== null && _a !== void 0 ? _a : [];
|
|
1839
1718
|
}
|
|
1840
1719
|
get range() {
|
|
1841
1720
|
return util_1.util.createBoundingRange(this.tokens.enum, this.tokens.name, ...this.body, this.tokens.endEnum);
|
|
1842
1721
|
}
|
|
1722
|
+
/**
|
|
1723
|
+
* Get the name of the wrapping namespace (if it exists)
|
|
1724
|
+
* @deprecated use `.findAncestor(isNamespaceStatement)` instead.
|
|
1725
|
+
*/
|
|
1726
|
+
get namespaceName() {
|
|
1727
|
+
var _a;
|
|
1728
|
+
return (_a = this.findAncestor(reflection_1.isNamespaceStatement)) === null || _a === void 0 ? void 0 : _a.nameExpression;
|
|
1729
|
+
}
|
|
1843
1730
|
getMembers() {
|
|
1844
1731
|
const result = [];
|
|
1845
1732
|
for (const statement of this.body) {
|
|
@@ -1849,9 +1736,6 @@ class EnumStatement extends AstNode_2.Statement {
|
|
|
1849
1736
|
}
|
|
1850
1737
|
return result;
|
|
1851
1738
|
}
|
|
1852
|
-
getLeadingTrivia() {
|
|
1853
|
-
return util_1.util.concatAnnotationLeadingTrivia(this, this.tokens.enum.leadingTrivia);
|
|
1854
|
-
}
|
|
1855
1739
|
/**
|
|
1856
1740
|
* Get a map of member names and their values.
|
|
1857
1741
|
* All values are stored as their AST LiteralExpression representation (i.e. string enum values include the wrapping quotes)
|
|
@@ -1946,27 +1830,13 @@ class EnumStatement extends AstNode_2.Statement {
|
|
|
1946
1830
|
(0, visitors_1.walkArray)(this.body, visitor, options, this);
|
|
1947
1831
|
}
|
|
1948
1832
|
}
|
|
1949
|
-
getType(options) {
|
|
1950
|
-
var _a, _b, _c;
|
|
1951
|
-
const members = this.getMembers();
|
|
1952
|
-
const resultType = new EnumType_1.EnumType(this.fullName, (_a = members[0]) === null || _a === void 0 ? void 0 : _a.getType(options).underlyingType);
|
|
1953
|
-
resultType.pushMemberProvider(() => this.getSymbolTable());
|
|
1954
|
-
for (const statement of members) {
|
|
1955
|
-
resultType.addMember((_c = (_b = statement === null || statement === void 0 ? void 0 : statement.tokens) === null || _b === void 0 ? void 0 : _b.name) === null || _c === void 0 ? void 0 : _c.text, { definingNode: statement }, statement.getType(options), SymbolTable_1.SymbolTypeFlag.runtime);
|
|
1956
|
-
}
|
|
1957
|
-
return resultType;
|
|
1958
|
-
}
|
|
1959
1833
|
}
|
|
1960
1834
|
exports.EnumStatement = EnumStatement;
|
|
1961
|
-
class EnumMemberStatement extends
|
|
1835
|
+
class EnumMemberStatement extends AstNode_1.Statement {
|
|
1962
1836
|
constructor(tokens, value) {
|
|
1963
1837
|
super();
|
|
1964
1838
|
this.tokens = tokens;
|
|
1965
1839
|
this.value = value;
|
|
1966
|
-
this.kind = AstNode_1.AstNodeKind.EnumMemberStatement;
|
|
1967
|
-
}
|
|
1968
|
-
get range() {
|
|
1969
|
-
return util_1.util.createBoundingRange(this.tokens.name, this.tokens.equal, this.value);
|
|
1970
1840
|
}
|
|
1971
1841
|
/**
|
|
1972
1842
|
* The name of the member
|
|
@@ -1974,8 +1844,14 @@ class EnumMemberStatement extends AstNode_2.Statement {
|
|
|
1974
1844
|
get name() {
|
|
1975
1845
|
return this.tokens.name.text;
|
|
1976
1846
|
}
|
|
1977
|
-
|
|
1978
|
-
return util_1.util.
|
|
1847
|
+
get range() {
|
|
1848
|
+
return util_1.util.createBoundingRange(this.tokens.name, this.tokens.equal, this.value);
|
|
1849
|
+
}
|
|
1850
|
+
/**
|
|
1851
|
+
* Get the value of this enum. Requires that `.parent` is set
|
|
1852
|
+
*/
|
|
1853
|
+
getValue() {
|
|
1854
|
+
return this.parent.getMemberValue(this.name);
|
|
1979
1855
|
}
|
|
1980
1856
|
transpile(state) {
|
|
1981
1857
|
return [];
|
|
@@ -1997,26 +1873,18 @@ class EnumMemberStatement extends AstNode_2.Statement {
|
|
|
1997
1873
|
(0, visitors_1.walk)(this, 'value', visitor, options);
|
|
1998
1874
|
}
|
|
1999
1875
|
}
|
|
2000
|
-
getType(options) {
|
|
2001
|
-
var _a, _b, _c, _d;
|
|
2002
|
-
return new EnumType_1.EnumMemberType((_a = this.parent) === null || _a === void 0 ? void 0 : _a.fullName, (_c = (_b = this.tokens) === null || _b === void 0 ? void 0 : _b.name) === null || _c === void 0 ? void 0 : _c.text, (_d = this.value) === null || _d === void 0 ? void 0 : _d.getType(options));
|
|
2003
|
-
}
|
|
2004
1876
|
}
|
|
2005
1877
|
exports.EnumMemberStatement = EnumMemberStatement;
|
|
2006
|
-
class ConstStatement extends
|
|
1878
|
+
class ConstStatement extends AstNode_1.Statement {
|
|
2007
1879
|
constructor(tokens, value) {
|
|
2008
1880
|
super();
|
|
2009
1881
|
this.tokens = tokens;
|
|
2010
1882
|
this.value = value;
|
|
2011
|
-
this.kind = AstNode_1.AstNodeKind.ConstStatement;
|
|
2012
1883
|
this.range = util_1.util.createBoundingRange(this.tokens.const, this.tokens.name, this.tokens.equals, this.value);
|
|
2013
1884
|
}
|
|
2014
1885
|
get name() {
|
|
2015
1886
|
return this.tokens.name.text;
|
|
2016
1887
|
}
|
|
2017
|
-
getLeadingTrivia() {
|
|
2018
|
-
return util_1.util.concatAnnotationLeadingTrivia(this, this.tokens.const.leadingTrivia);
|
|
2019
|
-
}
|
|
2020
1888
|
/**
|
|
2021
1889
|
* The name of the statement WITH its leading namespace (if applicable)
|
|
2022
1890
|
*/
|
|
@@ -2058,16 +1926,12 @@ class ConstStatement extends AstNode_2.Statement {
|
|
|
2058
1926
|
(0, visitors_1.walk)(this, 'value', visitor, options);
|
|
2059
1927
|
}
|
|
2060
1928
|
}
|
|
2061
|
-
getType(options) {
|
|
2062
|
-
return this.value.getType(options);
|
|
2063
|
-
}
|
|
2064
1929
|
}
|
|
2065
1930
|
exports.ConstStatement = ConstStatement;
|
|
2066
|
-
class ContinueStatement extends
|
|
1931
|
+
class ContinueStatement extends AstNode_1.Statement {
|
|
2067
1932
|
constructor(tokens) {
|
|
2068
1933
|
super();
|
|
2069
1934
|
this.tokens = tokens;
|
|
2070
|
-
this.kind = AstNode_1.AstNodeKind.ContinueStatement;
|
|
2071
1935
|
this.range = util_1.util.createBoundingRange(tokens.continue, tokens.loopType);
|
|
2072
1936
|
}
|
|
2073
1937
|
transpile(state) {
|