brighterscript 1.0.0-alpha.50 → 1.0.0-alpha.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/bsconfig.schema.json +75 -0
- package/dist/BsConfig.d.ts +90 -5
- package/dist/CodeActionUtil.d.ts +17 -0
- package/dist/CodeActionUtil.js.map +1 -1
- package/dist/CommentFlagProcessor.d.ts +16 -12
- package/dist/CommentFlagProcessor.js +141 -59
- package/dist/CommentFlagProcessor.js.map +1 -1
- package/dist/CrossScopeValidator.js +13 -5
- package/dist/CrossScopeValidator.js.map +1 -1
- package/dist/DiagnosticManager.d.ts +1 -0
- package/dist/DiagnosticManager.js +25 -9
- package/dist/DiagnosticManager.js.map +1 -1
- package/dist/DiagnosticMessages.d.ts +61 -17
- package/dist/DiagnosticMessages.js +78 -24
- package/dist/DiagnosticMessages.js.map +1 -1
- package/dist/LanguageServer.d.ts +39 -2
- package/dist/LanguageServer.js +142 -5
- package/dist/LanguageServer.js.map +1 -1
- package/dist/Program.d.ts +62 -1
- package/dist/Program.js +185 -13
- package/dist/Program.js.map +1 -1
- package/dist/ProgramBuilder.d.ts +1 -8
- package/dist/ProgramBuilder.js +31 -11
- package/dist/ProgramBuilder.js.map +1 -1
- package/dist/Scope.d.ts +87 -6
- package/dist/Scope.js +76 -31
- package/dist/Scope.js.map +1 -1
- package/dist/ScopeNamespaceLookup.d.ts +73 -0
- package/dist/ScopeNamespaceLookup.js +242 -0
- package/dist/ScopeNamespaceLookup.js.map +1 -0
- package/dist/SymbolTable.d.ts +9 -2
- package/dist/SymbolTable.js +24 -14
- package/dist/SymbolTable.js.map +1 -1
- package/dist/astUtils/CachedLookups.js +3 -0
- package/dist/astUtils/CachedLookups.js.map +1 -1
- package/dist/astUtils/reflection.d.ts +4 -1
- package/dist/astUtils/reflection.js +24 -4
- package/dist/astUtils/reflection.js.map +1 -1
- package/dist/astUtils/visitors.d.ts +2 -1
- package/dist/astUtils/visitors.js.map +1 -1
- package/dist/bscPlugin/BscPlugin.d.ts +4 -2
- package/dist/bscPlugin/BscPlugin.js +10 -2
- package/dist/bscPlugin/BscPlugin.js.map +1 -1
- package/dist/bscPlugin/CallExpressionInfo.d.ts +1 -1
- package/dist/bscPlugin/CallExpressionInfo.js +1 -2
- package/dist/bscPlugin/CallExpressionInfo.js.map +1 -1
- package/dist/bscPlugin/FileWriter.d.ts +13 -0
- package/dist/bscPlugin/FileWriter.js +56 -1
- package/dist/bscPlugin/FileWriter.js.map +1 -1
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.d.ts +106 -5
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +630 -126
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
- package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.d.ts +17 -0
- package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.js +66 -0
- package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.js.map +1 -0
- package/dist/bscPlugin/codeActions/codeActionHelpers.d.ts +18 -0
- package/dist/bscPlugin/codeActions/codeActionHelpers.js +31 -0
- package/dist/bscPlugin/codeActions/codeActionHelpers.js.map +1 -0
- package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +1 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.js +5 -5
- package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
- package/dist/bscPlugin/definition/DefinitionProvider.js +8 -0
- package/dist/bscPlugin/definition/DefinitionProvider.js.map +1 -1
- package/dist/bscPlugin/hover/HoverProcessor.js +11 -3
- package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
- package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.d.ts +7 -0
- package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.js +77 -0
- package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.js.map +1 -0
- package/dist/bscPlugin/serialize/FileSerializer.d.ts +1 -1
- package/dist/bscPlugin/serialize/FileSerializer.js +12 -7
- package/dist/bscPlugin/serialize/FileSerializer.js.map +1 -1
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.d.ts +7 -0
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js +87 -1
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +1 -1
- package/dist/bscPlugin/validation/BrsFileValidator.d.ts +14 -0
- package/dist/bscPlugin/validation/BrsFileValidator.js +97 -21
- package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.d.ts +17 -0
- package/dist/bscPlugin/validation/ScopeValidator.js +162 -4
- package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
- package/dist/bscPlugin/validation/XmlFileValidator.js +14 -0
- package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -1
- package/dist/cli.js +13 -0
- package/dist/cli.js.map +1 -1
- package/dist/diagnosticUtils.d.ts +51 -1
- package/dist/diagnosticUtils.js +222 -1
- package/dist/diagnosticUtils.js.map +1 -1
- package/dist/files/BrsFile.d.ts +18 -2
- package/dist/files/BrsFile.js +87 -6
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/XmlFile.js +2 -1
- package/dist/files/XmlFile.js.map +1 -1
- package/dist/interfaces.d.ts +68 -23
- package/dist/interfaces.js.map +1 -1
- package/dist/lexer/Lexer.js +4 -5
- package/dist/lexer/Lexer.js.map +1 -1
- package/dist/lexer/Token.d.ts +1 -1
- package/dist/lexer/TokenKind.d.ts +8 -0
- package/dist/lexer/TokenKind.js +21 -1
- package/dist/lexer/TokenKind.js.map +1 -1
- package/dist/lsp/LspProject.d.ts +49 -1
- package/dist/lsp/Project.d.ts +33 -1
- package/dist/lsp/Project.js +129 -4
- package/dist/lsp/Project.js.map +1 -1
- package/dist/lsp/ProjectManager.d.ts +48 -2
- package/dist/lsp/ProjectManager.js +152 -9
- package/dist/lsp/ProjectManager.js.map +1 -1
- package/dist/lsp/worker/WorkerThreadProject.d.ts +27 -2
- package/dist/lsp/worker/WorkerThreadProject.js +16 -0
- package/dist/lsp/worker/WorkerThreadProject.js.map +1 -1
- package/dist/parser/AstNode.d.ts +3 -1
- package/dist/parser/AstNode.js +2 -0
- package/dist/parser/AstNode.js.map +1 -1
- package/dist/parser/Expression.d.ts +54 -5
- package/dist/parser/Expression.js +112 -7
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.d.ts +24 -1
- package/dist/parser/Parser.js +180 -41
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/SGParser.d.ts +1 -0
- package/dist/parser/SGParser.js +9 -0
- package/dist/parser/SGParser.js.map +1 -1
- package/dist/parser/Statement.d.ts +6 -1
- package/dist/parser/Statement.js +22 -14
- package/dist/parser/Statement.js.map +1 -1
- package/dist/parser/TranspileState.d.ts +4 -2
- package/dist/parser/TranspileState.js +10 -4
- package/dist/parser/TranspileState.js.map +1 -1
- package/dist/roku-types/data.json +210 -3
- package/dist/types/ArrayType.js +6 -1
- package/dist/types/ArrayType.js.map +1 -1
- package/dist/types/BooleanType.js +1 -1
- package/dist/types/BooleanType.js.map +1 -1
- package/dist/types/CallFuncableType.d.ts +1 -1
- package/dist/types/ClassType.js +3 -0
- package/dist/types/ClassType.js.map +1 -1
- package/dist/types/ComponentType.js +3 -0
- package/dist/types/ComponentType.js.map +1 -1
- package/dist/types/EnumType.js +3 -0
- package/dist/types/EnumType.js.map +1 -1
- package/dist/types/IntersectionType.js +3 -0
- package/dist/types/IntersectionType.js.map +1 -1
- package/dist/types/ReferenceType.js +6 -0
- package/dist/types/ReferenceType.js.map +1 -1
- package/dist/types/TypeStatementType.d.ts +1 -0
- package/dist/types/TypeStatementType.js +12 -1
- package/dist/types/TypeStatementType.js.map +1 -1
- package/dist/types/TypedFunctionType.js +20 -10
- package/dist/types/TypedFunctionType.js.map +1 -1
- package/dist/types/UnionType.js +3 -0
- package/dist/types/UnionType.js.map +1 -1
- package/dist/types/helpers.js +6 -0
- package/dist/types/helpers.js.map +1 -1
- package/dist/util.d.ts +42 -3
- package/dist/util.js +131 -7
- package/dist/util.js.map +1 -1
- package/package.json +24 -26
- package/dist/astUtils/CachedLookups.spec.d.ts +0 -1
- package/dist/astUtils/CachedLookups.spec.js +0 -39
- package/dist/astUtils/CachedLookups.spec.js.map +0 -1
- package/dist/astUtils/Editor.spec.d.ts +0 -1
- package/dist/astUtils/Editor.spec.js +0 -258
- package/dist/astUtils/Editor.spec.js.map +0 -1
- package/dist/astUtils/creators.spec.d.ts +0 -1
- package/dist/astUtils/creators.spec.js +0 -21
- package/dist/astUtils/creators.spec.js.map +0 -1
- package/dist/astUtils/reflection.spec.d.ts +0 -1
- package/dist/astUtils/reflection.spec.js +0 -392
- package/dist/astUtils/reflection.spec.js.map +0 -1
- package/dist/astUtils/stackedVisitor.spec.d.ts +0 -1
- package/dist/astUtils/stackedVisitor.spec.js +0 -79
- package/dist/astUtils/stackedVisitor.spec.js.map +0 -1
- package/dist/astUtils/visitors.spec.d.ts +0 -1
- package/dist/astUtils/visitors.spec.js +0 -1432
- package/dist/astUtils/visitors.spec.js.map +0 -1
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.d.ts +0 -1
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +0 -311
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +0 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.spec.d.ts +0 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +0 -2512
- package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +0 -1
- package/dist/bscPlugin/definition/DefinitionProvider.spec.d.ts +0 -1
- package/dist/bscPlugin/definition/DefinitionProvider.spec.js +0 -87
- package/dist/bscPlugin/definition/DefinitionProvider.spec.js.map +0 -1
- package/dist/bscPlugin/hover/HoverProcessor.spec.d.ts +0 -1
- package/dist/bscPlugin/hover/HoverProcessor.spec.js +0 -991
- package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +0 -1
- package/dist/bscPlugin/references/ReferencesProvider.spec.d.ts +0 -1
- package/dist/bscPlugin/references/ReferencesProvider.spec.js +0 -51
- package/dist/bscPlugin/references/ReferencesProvider.spec.js.map +0 -1
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.d.ts +0 -1
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +0 -564
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +0 -1
- package/dist/bscPlugin/serialize/BslibInjector.spec.d.ts +0 -1
- package/dist/bscPlugin/serialize/BslibInjector.spec.js +0 -33
- package/dist/bscPlugin/serialize/BslibInjector.spec.js.map +0 -1
- package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.d.ts +0 -1
- package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.js +0 -291
- package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.js.map +0 -1
- package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.d.ts +0 -1
- package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.js +0 -245
- package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.js.map +0 -1
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.d.ts +0 -1
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js +0 -75
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js.map +0 -1
- package/dist/bscPlugin/validation/BrsFileValidator.spec.d.ts +0 -1
- package/dist/bscPlugin/validation/BrsFileValidator.spec.js +0 -1517
- package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +0 -1
- package/dist/bscPlugin/validation/ScopeValidator.spec.d.ts +0 -1
- package/dist/bscPlugin/validation/ScopeValidator.spec.js +0 -6135
- package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +0 -1
- package/dist/common/Sequencer.spec.d.ts +0 -1
- package/dist/common/Sequencer.spec.js +0 -75
- package/dist/common/Sequencer.spec.js.map +0 -1
- package/dist/files/BrsFile.Class.spec.d.ts +0 -1
- package/dist/files/BrsFile.Class.spec.js +0 -2035
- package/dist/files/BrsFile.Class.spec.js.map +0 -1
- package/dist/files/BrsFile.spec.d.ts +0 -1
- package/dist/files/BrsFile.spec.js +0 -5848
- package/dist/files/BrsFile.spec.js.map +0 -1
- package/dist/files/LazyFileData.spec.d.ts +0 -1
- package/dist/files/LazyFileData.spec.js +0 -27
- package/dist/files/LazyFileData.spec.js.map +0 -1
- package/dist/files/XmlFile.spec.d.ts +0 -1
- package/dist/files/XmlFile.spec.js +0 -1173
- package/dist/files/XmlFile.spec.js.map +0 -1
- package/dist/files/tests/imports.spec.d.ts +0 -1
- package/dist/files/tests/imports.spec.js +0 -251
- package/dist/files/tests/imports.spec.js.map +0 -1
- package/dist/files/tests/optionalChaning.spec.d.ts +0 -1
- package/dist/files/tests/optionalChaning.spec.js +0 -152
- package/dist/files/tests/optionalChaning.spec.js.map +0 -1
- package/dist/lexer/Character.spec.d.ts +0 -1
- package/dist/lexer/Character.spec.js +0 -27
- package/dist/lexer/Character.spec.js.map +0 -1
- package/dist/lexer/Lexer.spec.d.ts +0 -1
- package/dist/lexer/Lexer.spec.js +0 -1345
- package/dist/lexer/Lexer.spec.js.map +0 -1
- package/dist/lsp/ActionQueue.spec.d.ts +0 -1
- package/dist/lsp/ActionQueue.spec.js +0 -80
- package/dist/lsp/ActionQueue.spec.js.map +0 -1
- package/dist/lsp/DocumentManager.spec.d.ts +0 -1
- package/dist/lsp/DocumentManager.spec.js +0 -103
- package/dist/lsp/DocumentManager.spec.js.map +0 -1
- package/dist/lsp/PathFilterer.spec.d.ts +0 -1
- package/dist/lsp/PathFilterer.spec.js +0 -182
- package/dist/lsp/PathFilterer.spec.js.map +0 -1
- package/dist/lsp/Project.spec.d.ts +0 -1
- package/dist/lsp/Project.spec.js +0 -267
- package/dist/lsp/Project.spec.js.map +0 -1
- package/dist/lsp/ProjectManager.spec.d.ts +0 -1
- package/dist/lsp/ProjectManager.spec.js +0 -913
- package/dist/lsp/ProjectManager.spec.js.map +0 -1
- package/dist/lsp/worker/MessageHandler.spec.d.ts +0 -1
- package/dist/lsp/worker/MessageHandler.spec.js +0 -64
- package/dist/lsp/worker/MessageHandler.spec.js.map +0 -1
- package/dist/lsp/worker/WorkerPool.spec.d.ts +0 -1
- package/dist/lsp/worker/WorkerPool.spec.js +0 -59
- package/dist/lsp/worker/WorkerPool.spec.js.map +0 -1
- package/dist/lsp/worker/WorkerThreadProject.spec.d.ts +0 -2
- package/dist/lsp/worker/WorkerThreadProject.spec.js +0 -71
- package/dist/lsp/worker/WorkerThreadProject.spec.js.map +0 -1
- package/dist/parser/AstNode.spec.d.ts +0 -1
- package/dist/parser/AstNode.spec.js +0 -1455
- package/dist/parser/AstNode.spec.js.map +0 -1
- package/dist/parser/BrightScriptDocParser.spec.d.ts +0 -1
- package/dist/parser/BrightScriptDocParser.spec.js +0 -310
- package/dist/parser/BrightScriptDocParser.spec.js.map +0 -1
- package/dist/parser/Expression.spec.d.ts +0 -1
- package/dist/parser/Expression.spec.js +0 -40
- package/dist/parser/Expression.spec.js.map +0 -1
- package/dist/parser/Parser.Class.spec.d.ts +0 -1
- package/dist/parser/Parser.Class.spec.js +0 -520
- package/dist/parser/Parser.Class.spec.js.map +0 -1
- package/dist/parser/Parser.spec.d.ts +0 -6
- package/dist/parser/Parser.spec.js +0 -2802
- package/dist/parser/Parser.spec.js.map +0 -1
- package/dist/parser/SGParser.spec.d.ts +0 -1
- package/dist/parser/SGParser.spec.js +0 -130
- package/dist/parser/SGParser.spec.js.map +0 -1
- package/dist/parser/Statement.spec.d.ts +0 -1
- package/dist/parser/Statement.spec.js +0 -191
- package/dist/parser/Statement.spec.js.map +0 -1
- package/dist/parser/tests/Parser.spec.d.ts +0 -12
- package/dist/parser/tests/Parser.spec.js +0 -29
- package/dist/parser/tests/Parser.spec.js.map +0 -1
- package/dist/parser/tests/controlFlow/For.spec.d.ts +0 -1
- package/dist/parser/tests/controlFlow/For.spec.js +0 -169
- package/dist/parser/tests/controlFlow/For.spec.js.map +0 -1
- package/dist/parser/tests/controlFlow/ForEach.spec.d.ts +0 -1
- package/dist/parser/tests/controlFlow/ForEach.spec.js +0 -140
- package/dist/parser/tests/controlFlow/ForEach.spec.js.map +0 -1
- package/dist/parser/tests/controlFlow/If.spec.d.ts +0 -1
- package/dist/parser/tests/controlFlow/If.spec.js +0 -694
- package/dist/parser/tests/controlFlow/If.spec.js.map +0 -1
- package/dist/parser/tests/controlFlow/While.spec.d.ts +0 -1
- package/dist/parser/tests/controlFlow/While.spec.js +0 -114
- package/dist/parser/tests/controlFlow/While.spec.js.map +0 -1
- package/dist/parser/tests/expression/Additive.spec.d.ts +0 -1
- package/dist/parser/tests/expression/Additive.spec.js +0 -107
- package/dist/parser/tests/expression/Additive.spec.js.map +0 -1
- package/dist/parser/tests/expression/ArrayLiterals.spec.d.ts +0 -1
- package/dist/parser/tests/expression/ArrayLiterals.spec.js +0 -304
- package/dist/parser/tests/expression/ArrayLiterals.spec.js.map +0 -1
- package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.d.ts +0 -1
- package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +0 -342
- package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +0 -1
- package/dist/parser/tests/expression/Boolean.spec.d.ts +0 -1
- package/dist/parser/tests/expression/Boolean.spec.js +0 -90
- package/dist/parser/tests/expression/Boolean.spec.js.map +0 -1
- package/dist/parser/tests/expression/Call.spec.d.ts +0 -1
- package/dist/parser/tests/expression/Call.spec.js +0 -252
- package/dist/parser/tests/expression/Call.spec.js.map +0 -1
- package/dist/parser/tests/expression/Exponential.spec.d.ts +0 -1
- package/dist/parser/tests/expression/Exponential.spec.js +0 -37
- package/dist/parser/tests/expression/Exponential.spec.js.map +0 -1
- package/dist/parser/tests/expression/Function.spec.d.ts +0 -1
- package/dist/parser/tests/expression/Function.spec.js +0 -412
- package/dist/parser/tests/expression/Function.spec.js.map +0 -1
- package/dist/parser/tests/expression/Indexing.spec.d.ts +0 -1
- package/dist/parser/tests/expression/Indexing.spec.js +0 -302
- package/dist/parser/tests/expression/Indexing.spec.js.map +0 -1
- package/dist/parser/tests/expression/Multiplicative.spec.d.ts +0 -1
- package/dist/parser/tests/expression/Multiplicative.spec.js +0 -67
- package/dist/parser/tests/expression/Multiplicative.spec.js.map +0 -1
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.d.ts +0 -1
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +0 -346
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +0 -1
- package/dist/parser/tests/expression/PrefixUnary.spec.d.ts +0 -1
- package/dist/parser/tests/expression/PrefixUnary.spec.js +0 -111
- package/dist/parser/tests/expression/PrefixUnary.spec.js.map +0 -1
- package/dist/parser/tests/expression/Primary.spec.d.ts +0 -1
- package/dist/parser/tests/expression/Primary.spec.js +0 -165
- package/dist/parser/tests/expression/Primary.spec.js.map +0 -1
- package/dist/parser/tests/expression/RegexLiteralExpression.spec.d.ts +0 -1
- package/dist/parser/tests/expression/RegexLiteralExpression.spec.js +0 -171
- package/dist/parser/tests/expression/RegexLiteralExpression.spec.js.map +0 -1
- package/dist/parser/tests/expression/Relational.spec.d.ts +0 -1
- package/dist/parser/tests/expression/Relational.spec.js +0 -83
- package/dist/parser/tests/expression/Relational.spec.js.map +0 -1
- package/dist/parser/tests/expression/SourceLiteralExpression.spec.d.ts +0 -1
- package/dist/parser/tests/expression/SourceLiteralExpression.spec.js +0 -201
- package/dist/parser/tests/expression/SourceLiteralExpression.spec.js.map +0 -1
- package/dist/parser/tests/expression/TemplateStringExpression.spec.d.ts +0 -1
- package/dist/parser/tests/expression/TemplateStringExpression.spec.js +0 -389
- package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +0 -1
- package/dist/parser/tests/expression/TernaryExpression.spec.d.ts +0 -1
- package/dist/parser/tests/expression/TernaryExpression.spec.js +0 -878
- package/dist/parser/tests/expression/TernaryExpression.spec.js.map +0 -1
- package/dist/parser/tests/expression/TypeExpression.spec.d.ts +0 -1
- package/dist/parser/tests/expression/TypeExpression.spec.js +0 -126
- package/dist/parser/tests/expression/TypeExpression.spec.js.map +0 -1
- package/dist/parser/tests/expression/UnaryExpression.spec.d.ts +0 -1
- package/dist/parser/tests/expression/UnaryExpression.spec.js +0 -52
- package/dist/parser/tests/expression/UnaryExpression.spec.js.map +0 -1
- package/dist/parser/tests/statement/AssignmentOperators.spec.d.ts +0 -1
- package/dist/parser/tests/statement/AssignmentOperators.spec.js +0 -79
- package/dist/parser/tests/statement/AssignmentOperators.spec.js.map +0 -1
- package/dist/parser/tests/statement/ConstStatement.spec.d.ts +0 -1
- package/dist/parser/tests/statement/ConstStatement.spec.js +0 -500
- package/dist/parser/tests/statement/ConstStatement.spec.js.map +0 -1
- package/dist/parser/tests/statement/Continue.spec.d.ts +0 -1
- package/dist/parser/tests/statement/Continue.spec.js +0 -119
- package/dist/parser/tests/statement/Continue.spec.js.map +0 -1
- package/dist/parser/tests/statement/Declaration.spec.d.ts +0 -1
- package/dist/parser/tests/statement/Declaration.spec.js +0 -114
- package/dist/parser/tests/statement/Declaration.spec.js.map +0 -1
- package/dist/parser/tests/statement/Dim.spec.d.ts +0 -1
- package/dist/parser/tests/statement/Dim.spec.js +0 -80
- package/dist/parser/tests/statement/Dim.spec.js.map +0 -1
- package/dist/parser/tests/statement/Enum.spec.d.ts +0 -1
- package/dist/parser/tests/statement/Enum.spec.js +0 -744
- package/dist/parser/tests/statement/Enum.spec.js.map +0 -1
- package/dist/parser/tests/statement/For.spec.d.ts +0 -1
- package/dist/parser/tests/statement/For.spec.js +0 -45
- package/dist/parser/tests/statement/For.spec.js.map +0 -1
- package/dist/parser/tests/statement/ForEach.spec.d.ts +0 -1
- package/dist/parser/tests/statement/ForEach.spec.js +0 -36
- package/dist/parser/tests/statement/ForEach.spec.js.map +0 -1
- package/dist/parser/tests/statement/Function.spec.d.ts +0 -1
- package/dist/parser/tests/statement/Function.spec.js +0 -343
- package/dist/parser/tests/statement/Function.spec.js.map +0 -1
- package/dist/parser/tests/statement/Goto.spec.d.ts +0 -1
- package/dist/parser/tests/statement/Goto.spec.js +0 -51
- package/dist/parser/tests/statement/Goto.spec.js.map +0 -1
- package/dist/parser/tests/statement/Increment.spec.d.ts +0 -1
- package/dist/parser/tests/statement/Increment.spec.js +0 -120
- package/dist/parser/tests/statement/Increment.spec.js.map +0 -1
- package/dist/parser/tests/statement/InterfaceStatement.spec.d.ts +0 -1
- package/dist/parser/tests/statement/InterfaceStatement.spec.js +0 -110
- package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +0 -1
- package/dist/parser/tests/statement/LibraryStatement.spec.d.ts +0 -1
- package/dist/parser/tests/statement/LibraryStatement.spec.js +0 -74
- package/dist/parser/tests/statement/LibraryStatement.spec.js.map +0 -1
- package/dist/parser/tests/statement/Misc.spec.d.ts +0 -1
- package/dist/parser/tests/statement/Misc.spec.js +0 -292
- package/dist/parser/tests/statement/Misc.spec.js.map +0 -1
- package/dist/parser/tests/statement/PrintStatement.spec.d.ts +0 -1
- package/dist/parser/tests/statement/PrintStatement.spec.js +0 -200
- package/dist/parser/tests/statement/PrintStatement.spec.js.map +0 -1
- package/dist/parser/tests/statement/ReturnStatement.spec.d.ts +0 -1
- package/dist/parser/tests/statement/ReturnStatement.spec.js +0 -97
- package/dist/parser/tests/statement/ReturnStatement.spec.js.map +0 -1
- package/dist/parser/tests/statement/Set.spec.d.ts +0 -1
- package/dist/parser/tests/statement/Set.spec.js +0 -232
- package/dist/parser/tests/statement/Set.spec.js.map +0 -1
- package/dist/parser/tests/statement/Stop.spec.d.ts +0 -1
- package/dist/parser/tests/statement/Stop.spec.js +0 -38
- package/dist/parser/tests/statement/Stop.spec.js.map +0 -1
- package/dist/parser/tests/statement/Throw.spec.d.ts +0 -1
- package/dist/parser/tests/statement/Throw.spec.js +0 -38
- package/dist/parser/tests/statement/Throw.spec.js.map +0 -1
- package/dist/parser/tests/statement/TryCatch.spec.d.ts +0 -1
- package/dist/parser/tests/statement/TryCatch.spec.js +0 -151
- package/dist/parser/tests/statement/TryCatch.spec.js.map +0 -1
- package/dist/preprocessor/Manifest.spec.d.ts +0 -1
- package/dist/preprocessor/Manifest.spec.js +0 -80
- package/dist/preprocessor/Manifest.spec.js.map +0 -1
- package/dist/types/ArrayType.spec.d.ts +0 -1
- package/dist/types/ArrayType.spec.js +0 -58
- package/dist/types/ArrayType.spec.js.map +0 -1
- package/dist/types/BooleanType.spec.d.ts +0 -1
- package/dist/types/BooleanType.spec.js +0 -18
- package/dist/types/BooleanType.spec.js.map +0 -1
- package/dist/types/BuiltInInterfaceAdder.spec.d.ts +0 -1
- package/dist/types/BuiltInInterfaceAdder.spec.js +0 -115
- package/dist/types/BuiltInInterfaceAdder.spec.js.map +0 -1
- package/dist/types/ClassType.spec.d.ts +0 -1
- package/dist/types/ClassType.spec.js +0 -76
- package/dist/types/ClassType.spec.js.map +0 -1
- package/dist/types/DoubleType.spec.d.ts +0 -1
- package/dist/types/DoubleType.spec.js +0 -20
- package/dist/types/DoubleType.spec.js.map +0 -1
- package/dist/types/DynamicType.spec.d.ts +0 -1
- package/dist/types/DynamicType.spec.js +0 -23
- package/dist/types/DynamicType.spec.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/FloatType.spec.d.ts +0 -1
- package/dist/types/FloatType.spec.js +0 -12
- package/dist/types/FloatType.spec.js.map +0 -1
- package/dist/types/IntegerType.spec.d.ts +0 -1
- package/dist/types/IntegerType.spec.js +0 -16
- package/dist/types/IntegerType.spec.js.map +0 -1
- package/dist/types/InterfaceType.spec.d.ts +0 -1
- package/dist/types/InterfaceType.spec.js +0 -227
- package/dist/types/InterfaceType.spec.js.map +0 -1
- package/dist/types/IntersectionType.spec.d.ts +0 -1
- package/dist/types/IntersectionType.spec.js +0 -150
- package/dist/types/IntersectionType.spec.js.map +0 -1
- package/dist/types/InvalidType.spec.d.ts +0 -1
- package/dist/types/InvalidType.spec.js +0 -16
- package/dist/types/InvalidType.spec.js.map +0 -1
- package/dist/types/LongIntegerType.spec.d.ts +0 -1
- package/dist/types/LongIntegerType.spec.js +0 -18
- package/dist/types/LongIntegerType.spec.js.map +0 -1
- package/dist/types/ObjectType.spec.d.ts +0 -1
- package/dist/types/ObjectType.spec.js +0 -12
- package/dist/types/ObjectType.spec.js.map +0 -1
- package/dist/types/ReferenceType.spec.d.ts +0 -1
- package/dist/types/ReferenceType.spec.js +0 -151
- package/dist/types/ReferenceType.spec.js.map +0 -1
- package/dist/types/StringType.spec.d.ts +0 -1
- package/dist/types/StringType.spec.js +0 -12
- package/dist/types/StringType.spec.js.map +0 -1
- package/dist/types/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.spec.d.ts +0 -1
- package/dist/types/UnionType.spec.js +0 -205
- package/dist/types/UnionType.spec.js.map +0 -1
- package/dist/types/VoidType.spec.d.ts +0 -1
- package/dist/types/VoidType.spec.js +0 -12
- package/dist/types/VoidType.spec.js.map +0 -1
- package/dist/types/helper.spec.d.ts +0 -1
- package/dist/types/helper.spec.js +0 -174
- package/dist/types/helper.spec.js.map +0 -1
- package/dist/types/roFunctionType.spec.d.ts +0 -1
- package/dist/types/roFunctionType.spec.js +0 -20
- package/dist/types/roFunctionType.spec.js.map +0 -1
package/dist/ProgramBuilder.js
CHANGED
|
@@ -265,7 +265,7 @@ class ProgramBuilder {
|
|
|
265
265
|
return runPromise;
|
|
266
266
|
}
|
|
267
267
|
printDiagnostics(diagnostics) {
|
|
268
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
268
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
269
269
|
if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.showDiagnosticsInConsole) === false) {
|
|
270
270
|
return;
|
|
271
271
|
}
|
|
@@ -284,6 +284,15 @@ class ProgramBuilder {
|
|
|
284
284
|
//get printing options
|
|
285
285
|
const options = diagnosticUtils.getPrintDiagnosticOptions(this.options);
|
|
286
286
|
const { cwd, emitFullPaths } = options;
|
|
287
|
+
//custom-template reporters are pre-resolved once so we don't recompile them per diagnostic;
|
|
288
|
+
//the resolved function is stashed on the entry as `run` so we don't have to keep a parallel array.
|
|
289
|
+
//invalid entries are warned about and skipped (we never want to abort a build over a config typo).
|
|
290
|
+
const reporters = diagnosticUtils.normalizeDiagnosticReporters((_d = this.options) === null || _d === void 0 ? void 0 : _d.diagnosticReporters, this.logger)
|
|
291
|
+
.map(reporter => (reporter.type === 'custom'
|
|
292
|
+
? Object.assign(Object.assign({}, reporter), { run: diagnosticUtils.createCustomDiagnosticReporter(reporter.format) }) : reporter));
|
|
293
|
+
if (reporters.length === 0) {
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
287
296
|
let fileUris = Object.keys(diagnosticsByFile).sort();
|
|
288
297
|
for (let fileUri of fileUris) {
|
|
289
298
|
let diagnosticsForFile = diagnosticsByFile[fileUri];
|
|
@@ -298,13 +307,13 @@ class ProgramBuilder {
|
|
|
298
307
|
filePath = path.relative(cwd, filePath);
|
|
299
308
|
}
|
|
300
309
|
//load the file text
|
|
301
|
-
const file = (
|
|
310
|
+
const file = (_e = this.program) === null || _e === void 0 ? void 0 : _e.getFile(fileUri);
|
|
302
311
|
//get the file's in-memory contents if available
|
|
303
|
-
const lines = (
|
|
312
|
+
const lines = (_g = (_f = file === null || file === void 0 ? void 0 : file.fileContents) === null || _f === void 0 ? void 0 : _f.split(/\r?\n/g)) !== null && _g !== void 0 ? _g : [];
|
|
304
313
|
for (let diagnostic of sortedDiagnostics) {
|
|
305
314
|
//default the severity to error if undefined
|
|
306
315
|
let severity = typeof diagnostic.severity === 'number' ? diagnostic.severity : vscode_languageserver_1.DiagnosticSeverity.Error;
|
|
307
|
-
let relatedInformation = ((
|
|
316
|
+
let relatedInformation = ((_j = (_h = util_1.util.toDiagnostic(diagnostic, diagnostic.source)) === null || _h === void 0 ? void 0 : _h.relatedInformation) !== null && _j !== void 0 ? _j : []).map(x => {
|
|
308
317
|
var _a;
|
|
309
318
|
let relatedInfoFilePath = util_1.util.uriToPath((_a = x.location) === null || _a === void 0 ? void 0 : _a.uri);
|
|
310
319
|
if (!emitFullPaths) {
|
|
@@ -316,8 +325,18 @@ class ProgramBuilder {
|
|
|
316
325
|
message: x.message
|
|
317
326
|
};
|
|
318
327
|
});
|
|
319
|
-
//format output
|
|
320
|
-
|
|
328
|
+
//format output once per configured reporter
|
|
329
|
+
for (const reporter of reporters) {
|
|
330
|
+
if (reporter.type === 'github-actions') {
|
|
331
|
+
diagnosticUtils.printDiagnosticGithubActions({ options: options, severity: severity, filePath: filePath, diagnostic: diagnostic });
|
|
332
|
+
}
|
|
333
|
+
else if (reporter.type === 'custom') {
|
|
334
|
+
reporter.run({ options: options, severity: severity, filePath: filePath, diagnostic: diagnostic });
|
|
335
|
+
}
|
|
336
|
+
else {
|
|
337
|
+
diagnosticUtils.printDiagnostic(options, severity, filePath, lines, diagnostic, relatedInformation);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
321
340
|
}
|
|
322
341
|
}
|
|
323
342
|
}
|
|
@@ -326,19 +345,20 @@ class ProgramBuilder {
|
|
|
326
345
|
* NOTE: This should only be called by `runOnce`.
|
|
327
346
|
*/
|
|
328
347
|
async _runOnce(options) {
|
|
329
|
-
var _a, _b, _c;
|
|
348
|
+
var _a, _b, _c, _d;
|
|
330
349
|
let wereDiagnosticsPrinted = false;
|
|
331
350
|
try {
|
|
332
351
|
//maybe cancel?
|
|
333
352
|
if (((_a = options === null || options === void 0 ? void 0 : options.cancellationToken) === null || _a === void 0 ? void 0 : _a.isCanceled) === true) {
|
|
334
353
|
return -1;
|
|
335
354
|
}
|
|
336
|
-
//
|
|
337
|
-
|
|
355
|
+
//the prop-drilled validate value takes precedence over this.options.validate.
|
|
356
|
+
//false means no, everything else (including missing) means true
|
|
357
|
+
if (((_b = options === null || options === void 0 ? void 0 : options.validate) !== null && _b !== void 0 ? _b : this.options.validate) !== false) {
|
|
338
358
|
this.validateProject();
|
|
339
359
|
}
|
|
340
360
|
//maybe cancel?
|
|
341
|
-
if (((
|
|
361
|
+
if (((_c = options === null || options === void 0 ? void 0 : options.cancellationToken) === null || _c === void 0 ? void 0 : _c.isCanceled) === true) {
|
|
342
362
|
return -1;
|
|
343
363
|
}
|
|
344
364
|
const diagnostics = this.getDiagnostics();
|
|
@@ -353,7 +373,7 @@ class ProgramBuilder {
|
|
|
353
373
|
await this.transpile();
|
|
354
374
|
}
|
|
355
375
|
//maybe cancel?
|
|
356
|
-
if (((
|
|
376
|
+
if (((_d = options === null || options === void 0 ? void 0 : options.cancellationToken) === null || _d === void 0 ? void 0 : _d.isCanceled) === true) {
|
|
357
377
|
return -1;
|
|
358
378
|
}
|
|
359
379
|
return 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProgramBuilder.js","sourceRoot":"","sources":["../src/ProgramBuilder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ProgramBuilder.js","sourceRoot":"","sources":["../src/ProgramBuilder.ts"],"names":[],"mappings":"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"}
|
package/dist/Scope.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Range } from 'vscode-languageserver-protocol';
|
|
2
|
+
import type { CallableContainer, FileReference, FileLink, Callable, ScopeValidationOptions } from './interfaces';
|
|
2
3
|
import type { Program } from './Program';
|
|
3
|
-
import {
|
|
4
|
+
import type { NamespaceStatement, FunctionStatement, ClassStatement, EnumStatement, InterfaceStatement, EnumMemberStatement, ConstStatement, TypeStatement } from './parser/Statement';
|
|
4
5
|
import { Cache } from './Cache';
|
|
5
6
|
import type { BrsFile } from './files/BrsFile';
|
|
7
|
+
import type { Identifier } from './lexer/Token';
|
|
6
8
|
import type { DependencyGraph, DependencyChangedEvent } from './DependencyGraph';
|
|
7
9
|
import { SymbolTable } from './SymbolTable';
|
|
8
10
|
import type { BscFile } from './files/BscFile';
|
|
@@ -27,7 +29,7 @@ export declare class Scope {
|
|
|
27
29
|
* If a namespace is declared as "NameA.NameB.NameC", there will be 3 entries in this dictionary,
|
|
28
30
|
* "namea", "namea.nameb", "namea.nameb.namec"
|
|
29
31
|
*/
|
|
30
|
-
get namespaceLookup(): Map<string,
|
|
32
|
+
get namespaceLookup(): Map<string, NamespaceContainer>;
|
|
31
33
|
/**
|
|
32
34
|
* A dictionary of namespaces, indexed by the lower case full name of each namespace.
|
|
33
35
|
* If a namespace is declared as "NameA.NameB.NameC", there will be 3 entries in this dictionary,
|
|
@@ -41,7 +43,7 @@ export declare class Scope {
|
|
|
41
43
|
/**
|
|
42
44
|
* Get a NamespaceContainer by its name, looking for a fully qualified version first, then global version next if not found
|
|
43
45
|
*/
|
|
44
|
-
getNamespacesWithRoot(rootName: string, containingNamespace?: string):
|
|
46
|
+
getNamespacesWithRoot(rootName: string, containingNamespace?: string): NamespaceContainer[];
|
|
45
47
|
/**
|
|
46
48
|
* Get a NamespaceContainer by its name, looking for a fully qualified version first, then global version next if not found
|
|
47
49
|
*/
|
|
@@ -66,6 +68,7 @@ export declare class Scope {
|
|
|
66
68
|
getEnum(enumName: string, containingNamespace?: string): EnumStatement;
|
|
67
69
|
private useFileCachesForFileLinkLookups;
|
|
68
70
|
private getFileLinkFromFileMap;
|
|
71
|
+
getTypeStatement(typeName: string, containingNamespace?: string): Statement;
|
|
69
72
|
/**
|
|
70
73
|
* Get a class and its containing file by the class name
|
|
71
74
|
* @param className - The class name, including the namespace of the class if possible
|
|
@@ -97,6 +100,12 @@ export declare class Scope {
|
|
|
97
100
|
*/
|
|
98
101
|
getConstFileLink(constName: string, containingNamespace?: string): FileLink<ConstStatement>;
|
|
99
102
|
getAllFileLinks(name: string, containingNamespace?: string, includeNamespaces?: boolean, includeNameShadowsOutsideNamespace?: boolean): FileLink<Statement>[];
|
|
103
|
+
/**
|
|
104
|
+
* Get an TypeStatement and its containing file by the type name
|
|
105
|
+
* @param typeName - The TypeStatement name, including the namespace of the type if possible
|
|
106
|
+
* @param containingNamespace - The namespace used to resolve relative type names. (i.e. the namespace around the current statement trying to find a type)
|
|
107
|
+
*/
|
|
108
|
+
getTypeStatementFileLink(typeName: string, containingNamespace?: string): FileLink<TypeStatement>;
|
|
100
109
|
/**
|
|
101
110
|
* Get a map of all enums by their member name.
|
|
102
111
|
* The keys are lower-case fully-qualified paths to the enum and its member. For example:
|
|
@@ -121,6 +130,7 @@ export declare class Scope {
|
|
|
121
130
|
* @param namespaceName - the current namespace name
|
|
122
131
|
*/
|
|
123
132
|
hasEnum(enumName: string, namespaceName?: string): boolean;
|
|
133
|
+
hasTypeStatementType(typeName: string, namespaceName?: string): boolean;
|
|
124
134
|
/**
|
|
125
135
|
* A dictionary of all classes in this scope. This includes namespaced classes always with their full name.
|
|
126
136
|
* The key is stored in lower case
|
|
@@ -141,6 +151,11 @@ export declare class Scope {
|
|
|
141
151
|
* The key is stored in lower case
|
|
142
152
|
*/
|
|
143
153
|
getConstMap(): Map<string, FileLink<ConstStatement>>;
|
|
154
|
+
/**
|
|
155
|
+
* A dictionary of all TypeStatements in this scope. This includes namespaced types always with their full name.
|
|
156
|
+
* The key is stored in lower case
|
|
157
|
+
*/
|
|
158
|
+
getTypeStatementMap(): Map<string, FileLink<TypeStatement>>;
|
|
144
159
|
protected onDependenciesChanged(event: DependencyChangedEvent): void;
|
|
145
160
|
/**
|
|
146
161
|
* Clean up all event handles
|
|
@@ -212,9 +227,20 @@ export declare class Scope {
|
|
|
212
227
|
*/
|
|
213
228
|
getOwnCallables(): CallableContainer[];
|
|
214
229
|
/**
|
|
215
|
-
*
|
|
230
|
+
* Build the namespace lookup for this scope.
|
|
231
|
+
*
|
|
232
|
+
* The lookup is now backed by `ScopeNamespaceLookup`, which queries the
|
|
233
|
+
* Program-level `getNamespaceContributors` map lazily on each
|
|
234
|
+
* `.get(name)` call. Per-file contributions are pre-built by
|
|
235
|
+
* `BrsFile.getNamespaceContributions` and shared across every scope that
|
|
236
|
+
* pulls in the file, so single-contribution containers reuse the file's
|
|
237
|
+
* pre-built statement collections and symbolTable instead of allocating
|
|
238
|
+
* per-scope copies.
|
|
239
|
+
*
|
|
240
|
+
* The return type is `Map<string, NamespaceContainer>` for backward
|
|
241
|
+
* compatibility with plugins that consume the public API.
|
|
216
242
|
*/
|
|
217
|
-
buildNamespaceLookup(): Map<string,
|
|
243
|
+
buildNamespaceLookup(): Map<string, NamespaceContainer>;
|
|
218
244
|
getAllNamespaceStatements(): NamespaceStatement[];
|
|
219
245
|
protected logDebug(...args: any[]): void;
|
|
220
246
|
private _debugLogComponentName;
|
|
@@ -276,3 +302,58 @@ export declare class Scope {
|
|
|
276
302
|
*/
|
|
277
303
|
getClassHierarchy(className: string, callsiteNamespace?: string): FileLink<ClassStatement>[];
|
|
278
304
|
}
|
|
305
|
+
/**
|
|
306
|
+
* A single file's contribution to a namespace name. Cached on `BrsFile` and shared
|
|
307
|
+
* across every scope that pulls in this file. The fields here are intrinsic to the
|
|
308
|
+
* file's parsed AST, so they never need to be rebuilt per scope.
|
|
309
|
+
*
|
|
310
|
+
* Pure-intermediate contributions (a namespace name part that this file only references
|
|
311
|
+
* as a dotted prefix, e.g. `A` from `namespace A.B`) carry only the structural fields
|
|
312
|
+
* (file, fullName, lastPartName, nameRange). Leaf contributions populate the relevant
|
|
313
|
+
* statement collections and the per-file `symbolTable`.
|
|
314
|
+
*
|
|
315
|
+
* The `symbolTable` here has no parent provider; sibling resolution in `linkSymbolTable`
|
|
316
|
+
* does not walk into a sibling's parent, so the parent-provider plumbing was dead code.
|
|
317
|
+
*/
|
|
318
|
+
export interface NamespaceFileContribution {
|
|
319
|
+
file: BrsFile;
|
|
320
|
+
fullName: string;
|
|
321
|
+
lastPartName: string;
|
|
322
|
+
nameRange: Range;
|
|
323
|
+
namespaceStatements?: NamespaceStatement[];
|
|
324
|
+
statements?: Statement[];
|
|
325
|
+
classStatements?: Record<string, ClassStatement>;
|
|
326
|
+
functionStatements?: Record<string, FunctionStatement>;
|
|
327
|
+
enumStatements?: Map<string, EnumStatement>;
|
|
328
|
+
constStatements?: Map<string, ConstStatement>;
|
|
329
|
+
symbolTable?: SymbolTable;
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* A node in the per-scope namespace tree.
|
|
333
|
+
*
|
|
334
|
+
* `namespaces` is always allocated so parent-child wiring works for every container.
|
|
335
|
+
* The remaining collections are lazily allocated by `buildNamespaceLookup` only when
|
|
336
|
+
* a corresponding declaration is encountered, so pure-intermediate containers and
|
|
337
|
+
* sparsely-populated leaves do not pay the cost of empty Maps/Records they will never use.
|
|
338
|
+
*
|
|
339
|
+
* Consumers must handle these fields being undefined.
|
|
340
|
+
*/
|
|
341
|
+
export interface NamespaceContainer {
|
|
342
|
+
file: BscFile;
|
|
343
|
+
fullName: string;
|
|
344
|
+
nameRange: Range;
|
|
345
|
+
lastPartName: string;
|
|
346
|
+
namespaces?: Map<string, NamespaceContainer>;
|
|
347
|
+
namespaceStatements?: NamespaceStatement[];
|
|
348
|
+
statements?: Statement[];
|
|
349
|
+
classStatements?: Record<string, ClassStatement>;
|
|
350
|
+
functionStatements?: Record<string, FunctionStatement>;
|
|
351
|
+
enumStatements?: Map<string, EnumStatement>;
|
|
352
|
+
constStatements?: Map<string, ConstStatement>;
|
|
353
|
+
symbolTable?: SymbolTable;
|
|
354
|
+
fullNameLower?: string;
|
|
355
|
+
parentNameLower?: string;
|
|
356
|
+
nameParts?: Identifier[];
|
|
357
|
+
lastPartNameLower?: string;
|
|
358
|
+
isTopLevel?: boolean;
|
|
359
|
+
}
|
package/dist/Scope.js
CHANGED
|
@@ -8,6 +8,7 @@ const Parser_1 = require("./parser/Parser");
|
|
|
8
8
|
const util_1 = require("./util");
|
|
9
9
|
const Cache_1 = require("./Cache");
|
|
10
10
|
const reflection_1 = require("./astUtils/reflection");
|
|
11
|
+
const visitors_1 = require("./astUtils/visitors");
|
|
11
12
|
const SymbolTable_1 = require("./SymbolTable");
|
|
12
13
|
const ReferenceType_1 = require("./types/ReferenceType");
|
|
13
14
|
const UnionType_1 = require("./types/UnionType");
|
|
@@ -15,6 +16,7 @@ const AssociativeArrayType_1 = require("./types/AssociativeArrayType");
|
|
|
15
16
|
const perf_hooks_1 = require("perf_hooks");
|
|
16
17
|
const logging_1 = require("./logging");
|
|
17
18
|
const UninitializedType_1 = require("./types/UninitializedType");
|
|
19
|
+
const ScopeNamespaceLookup_1 = require("./ScopeNamespaceLookup");
|
|
18
20
|
/**
|
|
19
21
|
* Assign some few factories to the SymbolTable to prevent cyclical imports. This file seems like the most intuitive place to do the linking
|
|
20
22
|
* since Scope will be used by pretty much everything
|
|
@@ -91,16 +93,15 @@ class Scope {
|
|
|
91
93
|
* Get a NamespaceContainer by its name, looking for a fully qualified version first, then global version next if not found
|
|
92
94
|
*/
|
|
93
95
|
getNamespace(name, containingNamespace) {
|
|
94
|
-
var _a, _b;
|
|
95
96
|
const nameLower = name === null || name === void 0 ? void 0 : name.toLowerCase();
|
|
96
97
|
const lookup = this.namespaceLookup;
|
|
97
98
|
let ns;
|
|
98
99
|
if (containingNamespace) {
|
|
99
|
-
ns =
|
|
100
|
+
ns = lookup.get(`${containingNamespace === null || containingNamespace === void 0 ? void 0 : containingNamespace.toLowerCase()}.${nameLower}`);
|
|
100
101
|
}
|
|
101
102
|
//if we couldn't find the namespace by its full namespaced name, look for a global version
|
|
102
103
|
if (!ns) {
|
|
103
|
-
ns =
|
|
104
|
+
ns = lookup.get(nameLower);
|
|
104
105
|
}
|
|
105
106
|
return ns;
|
|
106
107
|
}
|
|
@@ -122,13 +123,12 @@ class Scope {
|
|
|
122
123
|
* Get a NamespaceContainer by its name, looking for a fully qualified version first, then global version next if not found
|
|
123
124
|
*/
|
|
124
125
|
getFirstNamespaceWithRoot(rootName, containingNamespace) {
|
|
125
|
-
var _a;
|
|
126
126
|
const nameLower = rootName === null || rootName === void 0 ? void 0 : rootName.toLowerCase();
|
|
127
127
|
let lookupName = nameLower;
|
|
128
128
|
if (containingNamespace) {
|
|
129
129
|
lookupName = `${containingNamespace === null || containingNamespace === void 0 ? void 0 : containingNamespace.toLowerCase()}.${nameLower}`;
|
|
130
130
|
}
|
|
131
|
-
return
|
|
131
|
+
return this.namespaceLookup.get(lookupName);
|
|
132
132
|
}
|
|
133
133
|
/**
|
|
134
134
|
* Get the class with the specified name.
|
|
@@ -182,6 +182,10 @@ class Scope {
|
|
|
182
182
|
}
|
|
183
183
|
return result;
|
|
184
184
|
}
|
|
185
|
+
getTypeStatement(typeName, containingNamespace) {
|
|
186
|
+
var _a;
|
|
187
|
+
return (_a = this.getTypeStatementFileLink(typeName, containingNamespace)) === null || _a === void 0 ? void 0 : _a.item;
|
|
188
|
+
}
|
|
185
189
|
/**
|
|
186
190
|
* Get a class and its containing file by the class name
|
|
187
191
|
* @param className - The class name, including the namespace of the class if possible
|
|
@@ -307,6 +311,21 @@ class Scope {
|
|
|
307
311
|
// remove empty links
|
|
308
312
|
return links.filter(link => link);
|
|
309
313
|
}
|
|
314
|
+
/**
|
|
315
|
+
* Get an TypeStatement and its containing file by the type name
|
|
316
|
+
* @param typeName - The TypeStatement name, including the namespace of the type if possible
|
|
317
|
+
* @param containingNamespace - The namespace used to resolve relative type names. (i.e. the namespace around the current statement trying to find a type)
|
|
318
|
+
*/
|
|
319
|
+
getTypeStatementFileLink(typeName, containingNamespace) {
|
|
320
|
+
const lowerName = typeName === null || typeName === void 0 ? void 0 : typeName.toLowerCase();
|
|
321
|
+
const typeStatementMap = this.getTypeStatementMap();
|
|
322
|
+
let typeStatement = typeStatementMap.get(util_1.util.getFullyQualifiedClassName(lowerName, containingNamespace === null || containingNamespace === void 0 ? void 0 : containingNamespace.toLowerCase()));
|
|
323
|
+
//if we couldn't find the enum by its full namespaced name, look for a global enum with that name
|
|
324
|
+
if (!typeStatement) {
|
|
325
|
+
typeStatement = typeStatementMap.get(lowerName);
|
|
326
|
+
}
|
|
327
|
+
return typeStatement;
|
|
328
|
+
}
|
|
310
329
|
/**
|
|
311
330
|
* Get a map of all enums by their member name.
|
|
312
331
|
* The keys are lower-case fully-qualified paths to the enum and its member. For example:
|
|
@@ -347,6 +366,9 @@ class Scope {
|
|
|
347
366
|
hasEnum(enumName, namespaceName) {
|
|
348
367
|
return !!this.getEnum(enumName, namespaceName);
|
|
349
368
|
}
|
|
369
|
+
hasTypeStatementType(typeName, namespaceName) {
|
|
370
|
+
return !!this.getTypeStatement(typeName, namespaceName);
|
|
371
|
+
}
|
|
350
372
|
/**
|
|
351
373
|
* A dictionary of all classes in this scope. This includes namespaced classes always with their full name.
|
|
352
374
|
* The key is stored in lower case
|
|
@@ -425,6 +447,29 @@ class Scope {
|
|
|
425
447
|
return map;
|
|
426
448
|
});
|
|
427
449
|
}
|
|
450
|
+
/**
|
|
451
|
+
* A dictionary of all TypeStatements in this scope. This includes namespaced types always with their full name.
|
|
452
|
+
* The key is stored in lower case
|
|
453
|
+
*/
|
|
454
|
+
getTypeStatementMap() {
|
|
455
|
+
return this.cache.getOrAdd('typeStatementMap', () => {
|
|
456
|
+
const map = new Map();
|
|
457
|
+
this.enumerateBrsFiles((file) => {
|
|
458
|
+
file.ast.walk((node) => {
|
|
459
|
+
var _a, _b;
|
|
460
|
+
if ((0, reflection_1.isTypeStatement)(node)) {
|
|
461
|
+
const namespaceName = (_a = node.findAncestor(reflection_1.isNamespaceStatement)) === null || _a === void 0 ? void 0 : _a.getName(Parser_1.ParseMode.BrighterScript);
|
|
462
|
+
const typeName = (_b = node.tokens.name) === null || _b === void 0 ? void 0 : _b.text;
|
|
463
|
+
if (typeName) {
|
|
464
|
+
const fullName = (namespaceName ? `${namespaceName}.${typeName}` : typeName).toLowerCase();
|
|
465
|
+
map.set(fullName, { item: node, file: file });
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
}, { walkMode: visitors_1.WalkMode.visitAllRecursive });
|
|
469
|
+
});
|
|
470
|
+
return map;
|
|
471
|
+
});
|
|
472
|
+
}
|
|
428
473
|
onDependenciesChanged(event) {
|
|
429
474
|
this.logDebug('invalidated because dependency graph said [', event.sourceKey, '] changed');
|
|
430
475
|
this.invalidate();
|
|
@@ -434,6 +479,8 @@ class Scope {
|
|
|
434
479
|
*/
|
|
435
480
|
dispose() {
|
|
436
481
|
var _a;
|
|
482
|
+
this.unlinkSymbolTable();
|
|
483
|
+
this.cache.clear();
|
|
437
484
|
(_a = this.unsubscribeFromDependencyGraph) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
438
485
|
}
|
|
439
486
|
/**
|
|
@@ -664,27 +711,21 @@ class Scope {
|
|
|
664
711
|
return result;
|
|
665
712
|
}
|
|
666
713
|
/**
|
|
667
|
-
*
|
|
714
|
+
* Build the namespace lookup for this scope.
|
|
715
|
+
*
|
|
716
|
+
* The lookup is now backed by `ScopeNamespaceLookup`, which queries the
|
|
717
|
+
* Program-level `getNamespaceContributors` map lazily on each
|
|
718
|
+
* `.get(name)` call. Per-file contributions are pre-built by
|
|
719
|
+
* `BrsFile.getNamespaceContributions` and shared across every scope that
|
|
720
|
+
* pulls in the file, so single-contribution containers reuse the file's
|
|
721
|
+
* pre-built statement collections and symbolTable instead of allocating
|
|
722
|
+
* per-scope copies.
|
|
723
|
+
*
|
|
724
|
+
* The return type is `Map<string, NamespaceContainer>` for backward
|
|
725
|
+
* compatibility with plugins that consume the public API.
|
|
668
726
|
*/
|
|
669
727
|
buildNamespaceLookup() {
|
|
670
|
-
|
|
671
|
-
this.enumerateBrsFiles((file) => {
|
|
672
|
-
const fileNamespaceLookup = file.getNamespaceLookupObject();
|
|
673
|
-
for (const [lowerNamespaceName, nsContainer] of fileNamespaceLookup) {
|
|
674
|
-
if (!namespaceLookup.has(lowerNamespaceName)) {
|
|
675
|
-
const newScopeNsContainer = {
|
|
676
|
-
namespaceContainers: [],
|
|
677
|
-
symbolTable: new SymbolTable_1.SymbolTable(`Namespace Scope Aggregate: '${nsContainer.fullName}'`),
|
|
678
|
-
firstInstance: nsContainer
|
|
679
|
-
};
|
|
680
|
-
namespaceLookup.set(lowerNamespaceName, newScopeNsContainer);
|
|
681
|
-
}
|
|
682
|
-
const scopeNsContainer = namespaceLookup.get(lowerNamespaceName);
|
|
683
|
-
scopeNsContainer.symbolTable.mergeSymbolTable(nsContainer.symbolTable);
|
|
684
|
-
scopeNsContainer.namespaceContainers.push(nsContainer);
|
|
685
|
-
}
|
|
686
|
-
});
|
|
687
|
-
return namespaceLookup;
|
|
728
|
+
return new ScopeNamespaceLookup_1.ScopeNamespaceLookup(this);
|
|
688
729
|
}
|
|
689
730
|
getAllNamespaceStatements() {
|
|
690
731
|
let result = [];
|
|
@@ -798,24 +839,28 @@ class Scope {
|
|
|
798
839
|
* ```
|
|
799
840
|
*/
|
|
800
841
|
linkSymbolTable() {
|
|
842
|
+
var _a;
|
|
801
843
|
SymbolTable_1.SymbolTable.cacheVerifier.generateToken();
|
|
802
844
|
this._allNamespaceTypeTable = new SymbolTable_1.SymbolTable(`Scope NamespaceTypes ${this.name}`);
|
|
803
845
|
for (const file of this.getAllFiles()) {
|
|
804
846
|
if ((0, reflection_1.isBrsFile)(file)) {
|
|
805
847
|
this.linkSymbolTableDisposables.push(file.parser.symbolTable.pushParentProvider(() => this.symbolTable));
|
|
848
|
+
//link each NamespaceStatement's SymbolTable with the aggregate NamespaceLookup SymbolTable.
|
|
849
|
+
//Leaf containers always have symbolTable populated, so the lookup below is safe; the null
|
|
850
|
+
//guard tolerates edge cases like a namespace that failed to register.
|
|
851
|
+
for (const namespace of file['_cachedLookups'].namespaceStatements) {
|
|
852
|
+
const namespaceNameLower = namespace.getName(Parser_1.ParseMode.BrighterScript).toLowerCase();
|
|
853
|
+
const aggregate = (_a = this.namespaceLookup.get(namespaceNameLower)) === null || _a === void 0 ? void 0 : _a.symbolTable;
|
|
854
|
+
if (aggregate) {
|
|
855
|
+
this.linkSymbolTableDisposables.push(namespace.getSymbolTable().addSibling(aggregate));
|
|
856
|
+
}
|
|
857
|
+
}
|
|
806
858
|
}
|
|
807
859
|
}
|
|
808
860
|
this.enumerateBrsFiles((file) => {
|
|
809
861
|
const namespaceTypes = file.getNamespaceSymbolTable();
|
|
810
862
|
this.linkSymbolTableDisposables.push(...this._allNamespaceTypeTable.mergeNamespaceSymbolTables(namespaceTypes));
|
|
811
863
|
});
|
|
812
|
-
for (const [_, scopeNsContainer] of this.namespaceLookup) {
|
|
813
|
-
for (let nsContainer of scopeNsContainer.namespaceContainers) {
|
|
814
|
-
for (let nsStmt of nsContainer.namespaceStatements) {
|
|
815
|
-
this.linkSymbolTableDisposables.push(nsStmt === null || nsStmt === void 0 ? void 0 : nsStmt.getSymbolTable().addSibling(scopeNsContainer.symbolTable));
|
|
816
|
-
}
|
|
817
|
-
}
|
|
818
|
-
}
|
|
819
864
|
this.linkSymbolTableDisposables.push(this.symbolTable.addSibling(this._allNamespaceTypeTable));
|
|
820
865
|
}
|
|
821
866
|
unlinkSymbolTable() {
|