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
|
@@ -1,744 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const chai_config_spec_1 = require("../../../chai-config.spec");
|
|
4
|
-
const Expression_1 = require("../../Expression");
|
|
5
|
-
const DiagnosticMessages_1 = require("../../../DiagnosticMessages");
|
|
6
|
-
const testHelpers_spec_1 = require("../../../testHelpers.spec");
|
|
7
|
-
const Parser_1 = require("../../Parser");
|
|
8
|
-
const util_1 = require("../../../util");
|
|
9
|
-
const Statement_1 = require("../../Statement");
|
|
10
|
-
const Program_1 = require("../../../Program");
|
|
11
|
-
const sinon_1 = require("sinon");
|
|
12
|
-
const vscode_languageserver_protocol_1 = require("vscode-languageserver-protocol");
|
|
13
|
-
const visitors_1 = require("../../../astUtils/visitors");
|
|
14
|
-
const reflection_1 = require("../../../astUtils/reflection");
|
|
15
|
-
const testHelpers_spec_2 = require("../../../testHelpers.spec");
|
|
16
|
-
const sinon = (0, sinon_1.createSandbox)();
|
|
17
|
-
describe('EnumStatement', () => {
|
|
18
|
-
let program;
|
|
19
|
-
let testTranspile = (0, testHelpers_spec_1.getTestTranspile)(() => [program, testHelpers_spec_2.rootDir]);
|
|
20
|
-
beforeEach(() => {
|
|
21
|
-
program = new Program_1.Program({ rootDir: testHelpers_spec_2.rootDir, sourceMap: true });
|
|
22
|
-
});
|
|
23
|
-
afterEach(() => {
|
|
24
|
-
sinon.restore();
|
|
25
|
-
program.dispose();
|
|
26
|
-
});
|
|
27
|
-
it('parses empty enum statement', () => {
|
|
28
|
-
const parser = Parser_1.Parser.parse(`
|
|
29
|
-
enum SomeEnum
|
|
30
|
-
end enum
|
|
31
|
-
`, { mode: Parser_1.ParseMode.BrighterScript });
|
|
32
|
-
(0, testHelpers_spec_1.expectZeroDiagnostics)(parser);
|
|
33
|
-
(0, chai_config_spec_1.expect)(parser.ast.statements[0]).to.be.instanceOf(Statement_1.EnumStatement);
|
|
34
|
-
});
|
|
35
|
-
it('supports annotations above', () => {
|
|
36
|
-
const parser = Parser_1.Parser.parse(`
|
|
37
|
-
@someAnnotation
|
|
38
|
-
enum SomeEnum
|
|
39
|
-
end enum
|
|
40
|
-
`, { mode: Parser_1.ParseMode.BrighterScript });
|
|
41
|
-
(0, testHelpers_spec_1.expectZeroDiagnostics)(parser);
|
|
42
|
-
(0, chai_config_spec_1.expect)(parser.ast.statements[0].annotations[0].name).to.eql('someAnnotation');
|
|
43
|
-
});
|
|
44
|
-
it('constructs when missing enum name', () => {
|
|
45
|
-
const parser = Parser_1.Parser.parse(`
|
|
46
|
-
enum
|
|
47
|
-
end enum
|
|
48
|
-
`, { mode: Parser_1.ParseMode.BrighterScript });
|
|
49
|
-
(0, testHelpers_spec_1.expectDiagnostics)(parser, [
|
|
50
|
-
DiagnosticMessages_1.DiagnosticMessages.expectedIdentifier()
|
|
51
|
-
]);
|
|
52
|
-
(0, chai_config_spec_1.expect)(parser.ast.statements[0]).to.be.instanceOf(Statement_1.EnumStatement);
|
|
53
|
-
});
|
|
54
|
-
it('collects uninitialized members', () => {
|
|
55
|
-
const parser = Parser_1.Parser.parse(`
|
|
56
|
-
enum Direction
|
|
57
|
-
up
|
|
58
|
-
down
|
|
59
|
-
left
|
|
60
|
-
right
|
|
61
|
-
end enum
|
|
62
|
-
`, { mode: Parser_1.ParseMode.BrighterScript });
|
|
63
|
-
(0, testHelpers_spec_1.expectZeroDiagnostics)(parser);
|
|
64
|
-
(0, chai_config_spec_1.expect)(parser.ast.statements[0].getMembers().map(x => x.tokens.name.text)).to.eql([
|
|
65
|
-
'up',
|
|
66
|
-
'down',
|
|
67
|
-
'left',
|
|
68
|
-
'right'
|
|
69
|
-
]);
|
|
70
|
-
});
|
|
71
|
-
it('collects int-initialized members', () => {
|
|
72
|
-
const parser = Parser_1.Parser.parse(`
|
|
73
|
-
enum Direction
|
|
74
|
-
up = 1
|
|
75
|
-
down = 2
|
|
76
|
-
left = 3
|
|
77
|
-
right = 4
|
|
78
|
-
end enum
|
|
79
|
-
`, { mode: Parser_1.ParseMode.BrighterScript });
|
|
80
|
-
(0, testHelpers_spec_1.expectZeroDiagnostics)(parser);
|
|
81
|
-
const values = parser.ast.statements[0].getMembers().map(x => x.value);
|
|
82
|
-
(0, testHelpers_spec_1.expectInstanceOf)(values, [
|
|
83
|
-
Expression_1.LiteralExpression,
|
|
84
|
-
Expression_1.LiteralExpression,
|
|
85
|
-
Expression_1.LiteralExpression,
|
|
86
|
-
Expression_1.LiteralExpression
|
|
87
|
-
]);
|
|
88
|
-
(0, chai_config_spec_1.expect)(values.map(x => x.tokens.value.text)).to.eql([
|
|
89
|
-
'1',
|
|
90
|
-
'2',
|
|
91
|
-
'3',
|
|
92
|
-
'4'
|
|
93
|
-
]);
|
|
94
|
-
});
|
|
95
|
-
it('collects string-initialized members', () => {
|
|
96
|
-
const parser = Parser_1.Parser.parse(`
|
|
97
|
-
enum Direction
|
|
98
|
-
up = "u"
|
|
99
|
-
down = "d"
|
|
100
|
-
left = "l"
|
|
101
|
-
right = "r"
|
|
102
|
-
end enum
|
|
103
|
-
`, { mode: Parser_1.ParseMode.BrighterScript });
|
|
104
|
-
(0, testHelpers_spec_1.expectZeroDiagnostics)(parser);
|
|
105
|
-
const values = parser.ast.statements[0].getMembers().map(x => x.value);
|
|
106
|
-
(0, testHelpers_spec_1.expectInstanceOf)(values, [
|
|
107
|
-
Expression_1.LiteralExpression,
|
|
108
|
-
Expression_1.LiteralExpression,
|
|
109
|
-
Expression_1.LiteralExpression,
|
|
110
|
-
Expression_1.LiteralExpression
|
|
111
|
-
]);
|
|
112
|
-
(0, chai_config_spec_1.expect)(values.map(x => x.tokens.value.text)).to.eql([
|
|
113
|
-
'"u"',
|
|
114
|
-
'"d"',
|
|
115
|
-
'"l"',
|
|
116
|
-
'"r"'
|
|
117
|
-
]);
|
|
118
|
-
});
|
|
119
|
-
it('flags when used in brs mode', () => {
|
|
120
|
-
const parser = Parser_1.Parser.parse(`
|
|
121
|
-
enum Direction
|
|
122
|
-
up = "u"
|
|
123
|
-
down = "d"
|
|
124
|
-
left = "l"
|
|
125
|
-
right = "r"
|
|
126
|
-
end enum
|
|
127
|
-
`, { mode: Parser_1.ParseMode.BrightScript });
|
|
128
|
-
(0, testHelpers_spec_1.expectDiagnostics)(parser, [
|
|
129
|
-
DiagnosticMessages_1.DiagnosticMessages.bsFeatureNotSupportedInBrsFiles('enum declarations')
|
|
130
|
-
]);
|
|
131
|
-
});
|
|
132
|
-
it('allows enum at top of file', () => {
|
|
133
|
-
const parser = Parser_1.Parser.parse(`
|
|
134
|
-
enum Direction
|
|
135
|
-
value1
|
|
136
|
-
end enum
|
|
137
|
-
|
|
138
|
-
interface Person
|
|
139
|
-
name as string
|
|
140
|
-
end interface
|
|
141
|
-
`, { mode: Parser_1.ParseMode.BrighterScript });
|
|
142
|
-
(0, testHelpers_spec_1.expectZeroDiagnostics)(parser);
|
|
143
|
-
(0, chai_config_spec_1.expect)(parser.ast.statements[0]).instanceof(Statement_1.EnumStatement);
|
|
144
|
-
(0, chai_config_spec_1.expect)(parser.ast.statements[1]).instanceof(Statement_1.InterfaceStatement);
|
|
145
|
-
});
|
|
146
|
-
it('allows enum at bottom of file', () => {
|
|
147
|
-
const parser = Parser_1.Parser.parse(`
|
|
148
|
-
interface Person
|
|
149
|
-
name as string
|
|
150
|
-
end interface
|
|
151
|
-
|
|
152
|
-
enum Direction
|
|
153
|
-
value1
|
|
154
|
-
end enum
|
|
155
|
-
`, { mode: Parser_1.ParseMode.BrighterScript });
|
|
156
|
-
(0, testHelpers_spec_1.expectZeroDiagnostics)(parser);
|
|
157
|
-
(0, chai_config_spec_1.expect)(parser.ast.statements[0]).instanceof(Statement_1.InterfaceStatement);
|
|
158
|
-
(0, chai_config_spec_1.expect)(parser.ast.statements[1]).instanceof(Statement_1.EnumStatement);
|
|
159
|
-
});
|
|
160
|
-
it('allows enum in namespace', () => {
|
|
161
|
-
const file = program.setFile('source/types.bs', `
|
|
162
|
-
namespace entities
|
|
163
|
-
enum Person
|
|
164
|
-
name
|
|
165
|
-
end enum
|
|
166
|
-
end namespace
|
|
167
|
-
|
|
168
|
-
enum Direction
|
|
169
|
-
up
|
|
170
|
-
end enum
|
|
171
|
-
`);
|
|
172
|
-
program.validate();
|
|
173
|
-
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
174
|
-
(0, chai_config_spec_1.expect)(file.ast.findChildren(reflection_1.isEnumStatement).map(x => x.fullName)).to.eql([
|
|
175
|
-
'entities.Person',
|
|
176
|
-
'Direction'
|
|
177
|
-
]);
|
|
178
|
-
});
|
|
179
|
-
describe('validation', () => {
|
|
180
|
-
it('allows enums named `optional`', () => {
|
|
181
|
-
program.setFile('source/main.bs', `
|
|
182
|
-
enum optional
|
|
183
|
-
thing = 1
|
|
184
|
-
end enum
|
|
185
|
-
`);
|
|
186
|
-
program.validate();
|
|
187
|
-
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
188
|
-
});
|
|
189
|
-
it('catches duplicate enums from same file', () => {
|
|
190
|
-
program.setFile('source/main.bs', `
|
|
191
|
-
enum Direction
|
|
192
|
-
up
|
|
193
|
-
end enum
|
|
194
|
-
|
|
195
|
-
enum Direction
|
|
196
|
-
up
|
|
197
|
-
end enum
|
|
198
|
-
`);
|
|
199
|
-
program.validate();
|
|
200
|
-
(0, testHelpers_spec_1.expectDiagnosticsIncludes)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.nameCollision('Enum', 'Enum', 'Direction')), { relatedInformation: [{
|
|
201
|
-
location: util_1.util.createLocationFromRange(util_1.util.pathToUri((0, util_1.standardizePath) `${testHelpers_spec_2.rootDir}/source/main.bs`), util_1.util.createRange(5, 21, 5, 30)),
|
|
202
|
-
message: 'Enum declared here'
|
|
203
|
-
},
|
|
204
|
-
{
|
|
205
|
-
location: util_1.util.createLocationFromRange(util_1.util.pathToUri((0, util_1.standardizePath) `${testHelpers_spec_2.rootDir}/source/main.bs`), util_1.util.createRange(1, 21, 1, 30)),
|
|
206
|
-
message: `In scope 'source'`
|
|
207
|
-
}] }), Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.nameCollision('Enum', 'Enum', 'Direction')), { relatedInformation: [{
|
|
208
|
-
location: util_1.util.createLocationFromRange(util_1.util.pathToUri((0, util_1.standardizePath) `${testHelpers_spec_2.rootDir}/source/main.bs`), util_1.util.createRange(1, 21, 1, 30)),
|
|
209
|
-
message: 'Enum declared here'
|
|
210
|
-
},
|
|
211
|
-
{
|
|
212
|
-
location: util_1.util.createLocationFromRange(util_1.util.pathToUri((0, util_1.standardizePath) `${testHelpers_spec_2.rootDir}/source/main.bs`), util_1.util.createRange(5, 21, 5, 30)),
|
|
213
|
-
message: `In scope 'source'`
|
|
214
|
-
}] })]);
|
|
215
|
-
});
|
|
216
|
-
it('catches duplicate enums from different files in same scope', () => {
|
|
217
|
-
program.setFile('source/main.bs', `
|
|
218
|
-
enum Direction
|
|
219
|
-
up
|
|
220
|
-
end enum
|
|
221
|
-
`);
|
|
222
|
-
program.setFile('source/lib.bs', `
|
|
223
|
-
enum Direction
|
|
224
|
-
up
|
|
225
|
-
end enum
|
|
226
|
-
`);
|
|
227
|
-
program.validate();
|
|
228
|
-
(0, testHelpers_spec_1.expectDiagnosticsIncludes)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.nameCollision('Enum', 'Enum', 'Direction')), { relatedInformation: [{
|
|
229
|
-
location: util_1.util.createLocationFromRange(util_1.util.pathToUri((0, util_1.standardizePath) `${testHelpers_spec_2.rootDir}/source/lib.bs`), util_1.util.createRange(1, 21, 1, 30)),
|
|
230
|
-
message: 'Enum declared here'
|
|
231
|
-
},
|
|
232
|
-
{
|
|
233
|
-
location: util_1.util.createLocationFromRange(util_1.util.pathToUri((0, util_1.standardizePath) `${testHelpers_spec_2.rootDir}/source/main.bs`), util_1.util.createRange(1, 21, 1, 30)),
|
|
234
|
-
message: `In scope 'source'`
|
|
235
|
-
}] })]);
|
|
236
|
-
});
|
|
237
|
-
it('allows duplicate enums across different scopes', () => {
|
|
238
|
-
program.setFile('source/main.bs', `
|
|
239
|
-
enum Direction
|
|
240
|
-
up
|
|
241
|
-
end enum
|
|
242
|
-
`);
|
|
243
|
-
program.setFile('components/comp1.xml', (0, testHelpers_spec_1.trim) `
|
|
244
|
-
<?xml version="1.0" encoding="utf-8" ?>
|
|
245
|
-
<component name="Comp1" extends="Scene">
|
|
246
|
-
<script uri="comp1.bs" />
|
|
247
|
-
</component>
|
|
248
|
-
`);
|
|
249
|
-
program.setFile('components/comp1.bs', `
|
|
250
|
-
enum Direction
|
|
251
|
-
up
|
|
252
|
-
end enum
|
|
253
|
-
`);
|
|
254
|
-
program.validate();
|
|
255
|
-
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
256
|
-
});
|
|
257
|
-
it('flags duplicate members', () => {
|
|
258
|
-
program.setFile('source/main.bs', `
|
|
259
|
-
enum Direction
|
|
260
|
-
name
|
|
261
|
-
name
|
|
262
|
-
end enum
|
|
263
|
-
`);
|
|
264
|
-
program.validate();
|
|
265
|
-
(0, testHelpers_spec_1.expectDiagnostics)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.duplicateIdentifier('name')), { location: { range: util_1.util.createRange(3, 20, 3, 24) } })]);
|
|
266
|
-
});
|
|
267
|
-
it('flags mixed enum value types with int first', () => {
|
|
268
|
-
program.setFile('source/main.bs', `
|
|
269
|
-
enum Direction
|
|
270
|
-
a = 1
|
|
271
|
-
b = "c"
|
|
272
|
-
end enum
|
|
273
|
-
`);
|
|
274
|
-
program.validate();
|
|
275
|
-
(0, testHelpers_spec_1.expectDiagnostics)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.enumValueMustBeType('integer')), { location: { range: util_1.util.createRange(3, 24, 3, 27) } })]);
|
|
276
|
-
});
|
|
277
|
-
it('flags mixed enum value types with string first', () => {
|
|
278
|
-
program.setFile('source/main.bs', `
|
|
279
|
-
enum Direction
|
|
280
|
-
a = "a"
|
|
281
|
-
b = 1
|
|
282
|
-
end enum
|
|
283
|
-
`);
|
|
284
|
-
program.validate();
|
|
285
|
-
(0, testHelpers_spec_1.expectDiagnostics)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.enumValueMustBeType('string')), { location: { range: util_1.util.createRange(3, 24, 3, 25) } })]);
|
|
286
|
-
});
|
|
287
|
-
it('flags missing value for string enum when string is first item', () => {
|
|
288
|
-
program.setFile('source/main.bs', `
|
|
289
|
-
enum Direction
|
|
290
|
-
a = "a"
|
|
291
|
-
b
|
|
292
|
-
end enum
|
|
293
|
-
`);
|
|
294
|
-
program.validate();
|
|
295
|
-
(0, testHelpers_spec_1.expectDiagnostics)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.enumValueIsRequired('string')), { location: { range: util_1.util.createRange(3, 20, 3, 21) } })]);
|
|
296
|
-
});
|
|
297
|
-
it('allows mixing-and-matching int and hex int', () => {
|
|
298
|
-
program.setFile('source/main.bs', `
|
|
299
|
-
enum Direction
|
|
300
|
-
a = 1
|
|
301
|
-
b = &HFF
|
|
302
|
-
end enum
|
|
303
|
-
`);
|
|
304
|
-
program.validate();
|
|
305
|
-
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
306
|
-
});
|
|
307
|
-
it('allows floats', () => {
|
|
308
|
-
program.setFile('source/main.bs', `
|
|
309
|
-
enum Direction
|
|
310
|
-
a = 1.2
|
|
311
|
-
b = 5.2345
|
|
312
|
-
end enum
|
|
313
|
-
`);
|
|
314
|
-
program.validate();
|
|
315
|
-
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
316
|
-
});
|
|
317
|
-
it('only support non-object literals', () => {
|
|
318
|
-
program.setFile('source/main.bs', `
|
|
319
|
-
enum AppConfig
|
|
320
|
-
serverInfo = {}
|
|
321
|
-
end enum
|
|
322
|
-
`);
|
|
323
|
-
program.validate();
|
|
324
|
-
(0, testHelpers_spec_1.expectDiagnostics)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.enumValueMustBeType('integer')), { location: { range: util_1.util.createRange(2, 33, 2, 35) } })]);
|
|
325
|
-
});
|
|
326
|
-
it('considers -1 to be an integer', () => {
|
|
327
|
-
program.setFile('source/main.bs', `
|
|
328
|
-
enum AppConfig
|
|
329
|
-
alpha = 1
|
|
330
|
-
beta = -1
|
|
331
|
-
end enum
|
|
332
|
-
`);
|
|
333
|
-
program.validate();
|
|
334
|
-
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
335
|
-
});
|
|
336
|
-
it('flags missing value for string enum where string is not first item', () => {
|
|
337
|
-
program.setFile('source/main.bs', `
|
|
338
|
-
enum Direction
|
|
339
|
-
a
|
|
340
|
-
b = "b" 'since this is the only value present, this is a string enum
|
|
341
|
-
end enum
|
|
342
|
-
`);
|
|
343
|
-
program.validate();
|
|
344
|
-
(0, testHelpers_spec_1.expectDiagnostics)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.enumValueIsRequired('string')), { location: { range: util_1.util.createRange(2, 20, 2, 21) } })]);
|
|
345
|
-
});
|
|
346
|
-
it('catches unknown non-namespaced enum members', () => {
|
|
347
|
-
program.setFile('source/main.bs', `
|
|
348
|
-
enum Direction
|
|
349
|
-
up
|
|
350
|
-
end enum
|
|
351
|
-
|
|
352
|
-
sub main()
|
|
353
|
-
print Direction.up
|
|
354
|
-
print Direction.DOWN
|
|
355
|
-
print Direction.down
|
|
356
|
-
end sub
|
|
357
|
-
`);
|
|
358
|
-
program.validate();
|
|
359
|
-
(0, testHelpers_spec_1.expectDiagnostics)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.cannotFindName('DOWN', 'Direction.DOWN', 'Direction', 'enum')), { location: { range: util_1.util.createRange(7, 36, 7, 40) } }), Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.cannotFindName('down', 'Direction.down', 'Direction', 'enum')), { location: { range: util_1.util.createRange(8, 36, 8, 40) } })]);
|
|
360
|
-
});
|
|
361
|
-
it('catches unknown namespaced enum members', () => {
|
|
362
|
-
program.setFile('source/main.bs', `
|
|
363
|
-
sub main()
|
|
364
|
-
print Enums.Direction.DOWN
|
|
365
|
-
print Enums.Direction.down
|
|
366
|
-
print Enums.Direction.up
|
|
367
|
-
end sub
|
|
368
|
-
namespace Enums
|
|
369
|
-
enum Direction
|
|
370
|
-
up
|
|
371
|
-
end enum
|
|
372
|
-
end namespace
|
|
373
|
-
|
|
374
|
-
`);
|
|
375
|
-
program.validate();
|
|
376
|
-
(0, testHelpers_spec_1.expectDiagnostics)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.cannotFindName('DOWN', 'Enums.Direction.DOWN', 'Enums.Direction', 'enum')), { location: { range: util_1.util.createRange(2, 42, 2, 46) } }), Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.cannotFindName('down', 'Enums.Direction.down', 'Enums.Direction', 'enum')), { location: { range: util_1.util.createRange(3, 42, 3, 46) } })]);
|
|
377
|
-
});
|
|
378
|
-
});
|
|
379
|
-
describe('getMemberValueMap', () => {
|
|
380
|
-
function expectMemberValueMap(code, expected) {
|
|
381
|
-
const file = program.setFile('source/lib.brs', code);
|
|
382
|
-
const cancel = new vscode_languageserver_protocol_1.CancellationTokenSource();
|
|
383
|
-
let firstEnum;
|
|
384
|
-
file.ast.walk(statement => {
|
|
385
|
-
if ((0, reflection_1.isEnumStatement)(statement)) {
|
|
386
|
-
firstEnum = statement;
|
|
387
|
-
cancel.cancel();
|
|
388
|
-
}
|
|
389
|
-
}, {
|
|
390
|
-
walkMode: visitors_1.WalkMode.visitStatements,
|
|
391
|
-
cancel: cancel.token
|
|
392
|
-
});
|
|
393
|
-
(0, chai_config_spec_1.expect)(firstEnum).to.exist;
|
|
394
|
-
const values = firstEnum.getMemberValueMap();
|
|
395
|
-
(0, chai_config_spec_1.expect)([...values].reduce((prev, [key, value]) => {
|
|
396
|
-
prev[key] = value;
|
|
397
|
-
return prev;
|
|
398
|
-
}, {})).to.eql(expected);
|
|
399
|
-
}
|
|
400
|
-
it('defaults first enum value to 0', () => {
|
|
401
|
-
expectMemberValueMap(`
|
|
402
|
-
enum Direction
|
|
403
|
-
up
|
|
404
|
-
down
|
|
405
|
-
left
|
|
406
|
-
right
|
|
407
|
-
end enum
|
|
408
|
-
`, {
|
|
409
|
-
up: '0',
|
|
410
|
-
down: '1',
|
|
411
|
-
left: '2',
|
|
412
|
-
right: '3'
|
|
413
|
-
});
|
|
414
|
-
});
|
|
415
|
-
it('continues incrementing after defined int value', () => {
|
|
416
|
-
expectMemberValueMap(`
|
|
417
|
-
enum Direction
|
|
418
|
-
up
|
|
419
|
-
down = 9
|
|
420
|
-
left
|
|
421
|
-
right = 20
|
|
422
|
-
other
|
|
423
|
-
end enum
|
|
424
|
-
`, {
|
|
425
|
-
up: '0',
|
|
426
|
-
down: '9',
|
|
427
|
-
left: '10',
|
|
428
|
-
right: '20',
|
|
429
|
-
other: '21'
|
|
430
|
-
});
|
|
431
|
-
});
|
|
432
|
-
it('returns string values when defined', () => {
|
|
433
|
-
expectMemberValueMap(`
|
|
434
|
-
enum Direction
|
|
435
|
-
up = "up"
|
|
436
|
-
down = "DOWN"
|
|
437
|
-
left = "LeFt"
|
|
438
|
-
right = "righT"
|
|
439
|
-
end enum
|
|
440
|
-
`, {
|
|
441
|
-
up: '"up"',
|
|
442
|
-
down: '"DOWN"',
|
|
443
|
-
left: '"LeFt"',
|
|
444
|
-
right: '"righT"'
|
|
445
|
-
});
|
|
446
|
-
});
|
|
447
|
-
});
|
|
448
|
-
describe('transpile', () => {
|
|
449
|
-
it('transpiles negative number', async () => {
|
|
450
|
-
await testTranspile(`
|
|
451
|
-
sub main()
|
|
452
|
-
print Direction.up
|
|
453
|
-
end sub
|
|
454
|
-
enum Direction
|
|
455
|
-
up = -1
|
|
456
|
-
end enum
|
|
457
|
-
`, `
|
|
458
|
-
sub main()
|
|
459
|
-
print -1
|
|
460
|
-
end sub
|
|
461
|
-
`, undefined, undefined, false);
|
|
462
|
-
});
|
|
463
|
-
it('includes original value when no value could be computed', async () => {
|
|
464
|
-
await testTranspile(`
|
|
465
|
-
sub main()
|
|
466
|
-
print Direction.up
|
|
467
|
-
end sub
|
|
468
|
-
enum Direction
|
|
469
|
-
up = {}
|
|
470
|
-
end enum
|
|
471
|
-
`, `
|
|
472
|
-
sub main()
|
|
473
|
-
print invalid
|
|
474
|
-
end sub
|
|
475
|
-
`, undefined, undefined, false);
|
|
476
|
-
});
|
|
477
|
-
it('writes all literal values as-is (even if there are errors)', async () => {
|
|
478
|
-
await testTranspile(`
|
|
479
|
-
sub main()
|
|
480
|
-
print Direction.up
|
|
481
|
-
print Direction.down
|
|
482
|
-
print Direction.left
|
|
483
|
-
print Direction.right
|
|
484
|
-
print Direction.upRight
|
|
485
|
-
end sub
|
|
486
|
-
enum Direction
|
|
487
|
-
up = 1
|
|
488
|
-
down = "asdf"
|
|
489
|
-
left = 3.14
|
|
490
|
-
right = &HFF '255
|
|
491
|
-
upRight ' will be 256 since hex ints are parsed as ints
|
|
492
|
-
end enum
|
|
493
|
-
`, `
|
|
494
|
-
sub main()
|
|
495
|
-
print 1
|
|
496
|
-
print "asdf"
|
|
497
|
-
print 3.14
|
|
498
|
-
print &HFF
|
|
499
|
-
print 256
|
|
500
|
-
end sub
|
|
501
|
-
`, 'trim', undefined, false);
|
|
502
|
-
});
|
|
503
|
-
it('supports default-as-integer', async () => {
|
|
504
|
-
await testTranspile(`
|
|
505
|
-
enum Direction
|
|
506
|
-
up
|
|
507
|
-
down
|
|
508
|
-
left
|
|
509
|
-
right
|
|
510
|
-
end enum
|
|
511
|
-
sub main()
|
|
512
|
-
print Direction.up, Direction.down, Direction.left, Direction.right
|
|
513
|
-
end sub
|
|
514
|
-
`, `
|
|
515
|
-
sub main()
|
|
516
|
-
print 0, 1, 2, 3
|
|
517
|
-
end sub
|
|
518
|
-
`);
|
|
519
|
-
});
|
|
520
|
-
it('supports string enums', async () => {
|
|
521
|
-
await testTranspile(`
|
|
522
|
-
enum Direction
|
|
523
|
-
up = "up"
|
|
524
|
-
down = "down"
|
|
525
|
-
left = "left"
|
|
526
|
-
right = "right"
|
|
527
|
-
end enum
|
|
528
|
-
sub main()
|
|
529
|
-
print Direction.up, Direction.down, Direction.left, Direction.right
|
|
530
|
-
end sub
|
|
531
|
-
`, `
|
|
532
|
-
sub main()
|
|
533
|
-
print "up", "down", "left", "right"
|
|
534
|
-
end sub
|
|
535
|
-
`);
|
|
536
|
-
});
|
|
537
|
-
it('recognizes namespace-relative enums', () => {
|
|
538
|
-
program.setFile('source/main.bs', `
|
|
539
|
-
namespace MyNamespace
|
|
540
|
-
enum MyEnum
|
|
541
|
-
val1
|
|
542
|
-
val2
|
|
543
|
-
end enum
|
|
544
|
-
|
|
545
|
-
function foo() as MyEnum
|
|
546
|
-
return MyEnum.val1
|
|
547
|
-
end function
|
|
548
|
-
end namespace
|
|
549
|
-
`);
|
|
550
|
-
program.validate();
|
|
551
|
-
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
552
|
-
});
|
|
553
|
-
it('replaces enum values from separate file with literals', async () => {
|
|
554
|
-
program.setFile('source/enum.bs', `
|
|
555
|
-
enum CharacterType
|
|
556
|
-
Human = "Human"
|
|
557
|
-
Zombie = "Zombie"
|
|
558
|
-
end enum
|
|
559
|
-
namespace Locations
|
|
560
|
-
enum Houses
|
|
561
|
-
TownHouse
|
|
562
|
-
FarmHouse
|
|
563
|
-
end enum
|
|
564
|
-
end namespace
|
|
565
|
-
`);
|
|
566
|
-
await testTranspile(`
|
|
567
|
-
sub test()
|
|
568
|
-
print CharacterType.Human
|
|
569
|
-
print CharacterType.Zombie
|
|
570
|
-
print Locations.Houses.TownHouse
|
|
571
|
-
print Locations.Houses.FarmHouse
|
|
572
|
-
end sub
|
|
573
|
-
`, `
|
|
574
|
-
sub test()
|
|
575
|
-
print "Human"
|
|
576
|
-
print "Zombie"
|
|
577
|
-
print 0
|
|
578
|
-
print 1
|
|
579
|
-
end sub
|
|
580
|
-
`);
|
|
581
|
-
});
|
|
582
|
-
it('replaces enums in if statements', async () => {
|
|
583
|
-
await testTranspile(`
|
|
584
|
-
enum CharacterType
|
|
585
|
-
zombie = "zombie"
|
|
586
|
-
end enum
|
|
587
|
-
sub main()
|
|
588
|
-
if "one" = CharacterType.zombie or "two" = CharacterType.zombie and "three" = CharacterType.zombie
|
|
589
|
-
print true
|
|
590
|
-
end if
|
|
591
|
-
end sub
|
|
592
|
-
`, `
|
|
593
|
-
sub main()
|
|
594
|
-
if "one" = "zombie" or "two" = "zombie" and "three" = "zombie"
|
|
595
|
-
print true
|
|
596
|
-
end if
|
|
597
|
-
end sub
|
|
598
|
-
`);
|
|
599
|
-
});
|
|
600
|
-
it('handles both sides of a logical expression', async () => {
|
|
601
|
-
await testTranspile(`
|
|
602
|
-
sub main()
|
|
603
|
-
dir = m.direction = Direction.up
|
|
604
|
-
dir = Direction.up = m.direction
|
|
605
|
-
end sub
|
|
606
|
-
enum Direction
|
|
607
|
-
up = "up"
|
|
608
|
-
down = "down"
|
|
609
|
-
end enum
|
|
610
|
-
`, `
|
|
611
|
-
sub main()
|
|
612
|
-
dir = m.direction = "up"
|
|
613
|
-
dir = "up" = m.direction
|
|
614
|
-
end sub
|
|
615
|
-
`);
|
|
616
|
-
});
|
|
617
|
-
it('handles when found in boolean expressions', async () => {
|
|
618
|
-
await testTranspile(`
|
|
619
|
-
sub main()
|
|
620
|
-
result = Direction.up = "up" or Direction.down = "down" and Direction.up = Direction.down
|
|
621
|
-
end sub
|
|
622
|
-
enum Direction
|
|
623
|
-
up = "up"
|
|
624
|
-
down = "down"
|
|
625
|
-
end enum
|
|
626
|
-
`, `
|
|
627
|
-
sub main()
|
|
628
|
-
result = "up" = "up" or "down" = "down" and "up" = "down"
|
|
629
|
-
end sub
|
|
630
|
-
`);
|
|
631
|
-
});
|
|
632
|
-
it('replaces enum values in if statements', async () => {
|
|
633
|
-
await testTranspile(`
|
|
634
|
-
sub main()
|
|
635
|
-
if m.direction = Direction.up
|
|
636
|
-
print Direction.up
|
|
637
|
-
end if
|
|
638
|
-
end sub
|
|
639
|
-
enum Direction
|
|
640
|
-
up = "up"
|
|
641
|
-
down = "down"
|
|
642
|
-
end enum
|
|
643
|
-
`, `
|
|
644
|
-
sub main()
|
|
645
|
-
if m.direction = "up"
|
|
646
|
-
print "up"
|
|
647
|
-
end if
|
|
648
|
-
end sub
|
|
649
|
-
`);
|
|
650
|
-
});
|
|
651
|
-
it('replaces enum values in function default parameter value expressions', async () => {
|
|
652
|
-
await testTranspile(`
|
|
653
|
-
sub speak(dir = Direction.up)
|
|
654
|
-
end sub
|
|
655
|
-
enum Direction
|
|
656
|
-
up = "up"
|
|
657
|
-
end enum
|
|
658
|
-
`, `
|
|
659
|
-
sub speak(dir = "up")
|
|
660
|
-
end sub
|
|
661
|
-
`);
|
|
662
|
-
});
|
|
663
|
-
it('replaces enum values in for loops', async () => {
|
|
664
|
-
await testTranspile(`
|
|
665
|
-
sub main()
|
|
666
|
-
for i = Loop.start to Loop.end step Loop.step
|
|
667
|
-
end for
|
|
668
|
-
end sub
|
|
669
|
-
enum Loop
|
|
670
|
-
start = 0
|
|
671
|
-
end = 10
|
|
672
|
-
step = 1
|
|
673
|
-
end enum
|
|
674
|
-
`, `
|
|
675
|
-
sub main()
|
|
676
|
-
for i = 0 to 10 step 1
|
|
677
|
-
end for
|
|
678
|
-
end sub
|
|
679
|
-
`);
|
|
680
|
-
});
|
|
681
|
-
it('transpiles enum values when used in complex expressions', async () => {
|
|
682
|
-
await testTranspile(`
|
|
683
|
-
sub main()
|
|
684
|
-
print Direction.up.toStr()
|
|
685
|
-
end sub
|
|
686
|
-
enum Direction
|
|
687
|
-
up = "up"
|
|
688
|
-
down = "down"
|
|
689
|
-
end enum
|
|
690
|
-
`, `
|
|
691
|
-
sub main()
|
|
692
|
-
print "up".toStr()
|
|
693
|
-
end sub
|
|
694
|
-
`);
|
|
695
|
-
});
|
|
696
|
-
it('works when enum is in a namespace', async () => {
|
|
697
|
-
program.setFile('components/Colors.bs', `
|
|
698
|
-
namespace Colors
|
|
699
|
-
enum Primary
|
|
700
|
-
red = "#FF0000"
|
|
701
|
-
end enum
|
|
702
|
-
end namespace
|
|
703
|
-
`);
|
|
704
|
-
program.setFile('components/Button.xml', `
|
|
705
|
-
<component name="Button" extends="Group">
|
|
706
|
-
<script type="text/brightscript" uri="pkg:/components/Button.bs" />
|
|
707
|
-
</component>
|
|
708
|
-
`);
|
|
709
|
-
const file = program.setFile('components/Button.bs', `
|
|
710
|
-
import "Colors.bs"
|
|
711
|
-
|
|
712
|
-
namespace alpha
|
|
713
|
-
sub testIt()
|
|
714
|
-
print Colors.Primary.red
|
|
715
|
-
aa = {
|
|
716
|
-
value: Colors.Primary.red
|
|
717
|
-
}
|
|
718
|
-
end sub
|
|
719
|
-
end namespace
|
|
720
|
-
|
|
721
|
-
namespace Colors
|
|
722
|
-
sub testIt()
|
|
723
|
-
print Primary.red
|
|
724
|
-
end sub
|
|
725
|
-
end namespace
|
|
726
|
-
`);
|
|
727
|
-
program.validate();
|
|
728
|
-
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
729
|
-
await testTranspile(file, `
|
|
730
|
-
'import "Colors.bs"
|
|
731
|
-
sub alpha_testIt()
|
|
732
|
-
print "#FF0000"
|
|
733
|
-
aa = {
|
|
734
|
-
value: "#FF0000"
|
|
735
|
-
}
|
|
736
|
-
end sub
|
|
737
|
-
sub Colors_testIt()
|
|
738
|
-
print "#FF0000"
|
|
739
|
-
end sub
|
|
740
|
-
`);
|
|
741
|
-
});
|
|
742
|
-
});
|
|
743
|
-
});
|
|
744
|
-
//# sourceMappingURL=Enum.spec.js.map
|