brighterscript 1.0.0-alpha.27 → 1.0.0-alpha.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +71 -0
- package/README.md +1 -1
- package/dist/AstValidationSegmenter.d.ts +12 -2
- package/dist/AstValidationSegmenter.js +74 -16
- package/dist/AstValidationSegmenter.js.map +1 -1
- package/dist/DependencyGraph.d.ts +4 -0
- package/dist/DependencyGraph.js +19 -0
- package/dist/DependencyGraph.js.map +1 -1
- package/dist/DiagnosticFilterer.d.ts +7 -4
- package/dist/DiagnosticFilterer.js +67 -37
- package/dist/DiagnosticFilterer.js.map +1 -1
- package/dist/DiagnosticMessages.d.ts +1 -1
- package/dist/PluginInterface.js +1 -1
- package/dist/PluginInterface.js.map +1 -1
- package/dist/Program.d.ts +19 -15
- package/dist/Program.js +153 -88
- package/dist/Program.js.map +1 -1
- package/dist/Scope.d.ts +27 -28
- package/dist/Scope.js +174 -361
- package/dist/Scope.js.map +1 -1
- package/dist/Stopwatch.d.ts +4 -0
- package/dist/Stopwatch.js +7 -0
- package/dist/Stopwatch.js.map +1 -1
- package/dist/SymbolTable.d.ts +2 -1
- package/dist/SymbolTable.js +26 -0
- package/dist/SymbolTable.js.map +1 -1
- package/dist/{SymbolTableFlag.js → SymbolTypeFlag.js} +1 -1
- package/dist/SymbolTypeFlag.js.map +1 -0
- package/dist/XmlScope.d.ts +0 -8
- package/dist/XmlScope.js +0 -77
- package/dist/XmlScope.js.map +1 -1
- package/dist/astUtils/CachedLookups.js +4 -8
- package/dist/astUtils/CachedLookups.js.map +1 -1
- package/dist/astUtils/creators.d.ts +1 -0
- package/dist/astUtils/creators.js +3 -2
- package/dist/astUtils/creators.js.map +1 -1
- package/dist/astUtils/creators.spec.js +0 -10
- package/dist/astUtils/creators.spec.js.map +1 -1
- package/dist/astUtils/reflection.d.ts +4 -4
- package/dist/astUtils/reflection.js +8 -7
- package/dist/astUtils/reflection.js.map +1 -1
- package/dist/astUtils/reflection.spec.js +10 -15
- package/dist/astUtils/reflection.spec.js.map +1 -1
- package/dist/astUtils/visitors.d.ts +1 -2
- package/dist/astUtils/visitors.js.map +1 -1
- package/dist/astUtils/visitors.spec.js +1 -5
- package/dist/astUtils/visitors.spec.js.map +1 -1
- package/dist/bscPlugin/BscPlugin.d.ts +3 -1
- package/dist/bscPlugin/BscPlugin.js +10 -0
- package/dist/bscPlugin/BscPlugin.js.map +1 -1
- package/dist/bscPlugin/SignatureHelpUtil.js +4 -3
- package/dist/bscPlugin/SignatureHelpUtil.js.map +1 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +1 -0
- package/dist/bscPlugin/completions/CompletionsProcessor.js +31 -11
- package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +39 -0
- package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/hover/HoverProcessor.js +5 -5
- package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
- package/dist/bscPlugin/hover/HoverProcessor.spec.js +51 -5
- package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/references/ReferencesProvider.d.ts +12 -0
- package/dist/bscPlugin/references/ReferencesProvider.js +56 -0
- package/dist/bscPlugin/references/ReferencesProvider.js.map +1 -0
- package/dist/bscPlugin/references/ReferencesProvider.spec.d.ts +1 -0
- package/dist/bscPlugin/references/ReferencesProvider.spec.js +51 -0
- package/dist/bscPlugin/references/ReferencesProvider.spec.js.map +1 -0
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js +1 -1
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +1 -1
- package/dist/bscPlugin/validation/BrsFileAfterValidatior.d.ts +7 -0
- package/dist/bscPlugin/validation/BrsFileAfterValidatior.js +18 -0
- package/dist/bscPlugin/validation/BrsFileAfterValidatior.js.map +1 -0
- package/dist/bscPlugin/validation/BrsFileValidator.d.ts +1 -0
- package/dist/bscPlugin/validation/BrsFileValidator.js +17 -10
- package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.d.ts +37 -1
- package/dist/bscPlugin/validation/ScopeValidator.js +434 -25
- package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.spec.js +91 -4
- package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -1
- package/dist/files/BrsFile.Class.spec.js +11 -4
- package/dist/files/BrsFile.Class.spec.js.map +1 -1
- package/dist/files/BrsFile.d.ts +23 -5
- package/dist/files/BrsFile.js +189 -51
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +589 -97
- package/dist/files/BrsFile.spec.js.map +1 -1
- package/dist/files/BscFile.d.ts +2 -1
- package/dist/files/BscFile.js.map +1 -1
- package/dist/files/XmlFile.d.ts +2 -2
- package/dist/files/XmlFile.js +2 -2
- package/dist/files/XmlFile.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +43 -4
- package/dist/interfaces.js.map +1 -1
- package/dist/lexer/Lexer.d.ts +9 -3
- package/dist/lexer/Lexer.js +36 -15
- package/dist/lexer/Lexer.js.map +1 -1
- package/dist/lexer/Lexer.spec.js +76 -38
- package/dist/lexer/Lexer.spec.js.map +1 -1
- package/dist/lexer/Token.js +1 -1
- package/dist/lexer/Token.js.map +1 -1
- package/dist/lexer/TokenKind.d.ts +1 -0
- package/dist/lexer/TokenKind.js +4 -1
- package/dist/lexer/TokenKind.js.map +1 -1
- package/dist/parser/AstNode.d.ts +1 -2
- package/dist/parser/AstNode.js +0 -1
- package/dist/parser/AstNode.js.map +1 -1
- package/dist/parser/BrsTranspileState.d.ts +1 -1
- package/dist/parser/Expression.d.ts +77 -47
- package/dist/parser/Expression.js +162 -88
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.d.ts +7 -2
- package/dist/parser/Parser.js +40 -90
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/Parser.spec.js +21 -44
- package/dist/parser/Parser.spec.js.map +1 -1
- package/dist/parser/SGTypes.js +5 -5
- package/dist/parser/SGTypes.js.map +1 -1
- package/dist/parser/Statement.d.ts +92 -84
- package/dist/parser/Statement.js +199 -133
- package/dist/parser/Statement.js.map +1 -1
- package/dist/parser/Statement.spec.js +0 -13
- package/dist/parser/Statement.spec.js.map +1 -1
- package/dist/parser/TranspileState.d.ts +17 -8
- package/dist/parser/TranspileState.js +67 -8
- package/dist/parser/TranspileState.js.map +1 -1
- package/dist/parser/tests/Parser.spec.d.ts +1 -1
- package/dist/parser/tests/Parser.spec.js +1 -2
- package/dist/parser/tests/Parser.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/If.spec.js +1 -1
- package/dist/parser/tests/controlFlow/If.spec.js.map +1 -1
- package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +1 -3
- package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +1 -1
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +44 -0
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/TemplateStringExpression.spec.js +6 -6
- package/dist/parser/tests/expression/TernaryExpression.spec.js +47 -0
- package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
- package/dist/parser/tests/statement/ConstStatement.spec.js +2 -2
- package/dist/parser/tests/statement/InterfaceStatement.spec.js +8 -1
- package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Misc.spec.js +25 -5
- package/dist/parser/tests/statement/Misc.spec.js.map +1 -1
- package/dist/preprocessor/Chunk.js +1 -2
- package/dist/preprocessor/Chunk.js.map +1 -1
- package/dist/preprocessor/PreprocessorParser.js +2 -1
- package/dist/preprocessor/PreprocessorParser.js.map +1 -1
- package/dist/types/AssociativeArrayType.d.ts +3 -0
- package/dist/types/AssociativeArrayType.js +9 -0
- package/dist/types/AssociativeArrayType.js.map +1 -1
- package/dist/types/BscType.d.ts +1 -1
- package/dist/types/BscType.js +1 -0
- package/dist/types/BscType.js.map +1 -1
- package/dist/types/ComponentType.d.ts +1 -1
- package/dist/types/ReferenceType.d.ts +9 -1
- package/dist/types/ReferenceType.js +45 -1
- package/dist/types/ReferenceType.js.map +1 -1
- package/dist/types/ReferenceType.spec.js +15 -0
- package/dist/types/ReferenceType.spec.js.map +1 -1
- package/dist/util.d.ts +23 -9
- package/dist/util.js +115 -21
- package/dist/util.js.map +1 -1
- package/package.json +6 -3
- package/dist/SymbolTableFlag.js.map +0 -1
- /package/dist/{SymbolTableFlag.d.ts → SymbolTypeFlag.d.ts} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,34 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
|
+
## [1.0.0-alpha.29](https://github.com/rokucommunity/brighterscript/compare/v1.0.0-alpha.28...v1.0.0-alpha.29) - 2024-03-28
|
|
10
|
+
### Fixed
|
|
11
|
+
- transpile crash when token has no text ([#1109](https://github.com/rokucommunity/brighterscript/pull/1109))
|
|
12
|
+
- array type in const ([#1111](https://github.com/rokucommunity/brighterscript/pull/1111))
|
|
13
|
+
- more validation performance ([#1110](https://github.com/rokucommunity/brighterscript/pull/1110))
|
|
14
|
+
- significant validation improvement ([#1119](https://github.com/rokucommunity/brighterscript/pull/1119))
|
|
15
|
+
- fix bug in range and position caching ([#1126](https://github.com/rokucommunity/brighterscript/pull/1126))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
## [1.0.0-alpha.28](https://github.com/rokucommunity/brighterscript/compare/v1.0.0-alpha.27...v1.0.0-alpha.28) - 2024-03-13
|
|
20
|
+
### Added
|
|
21
|
+
- type to const hovers and adds hover for for-each loop vars ([#1092](https://github.com/rokucommunity/brighterscript/pull/1092))
|
|
22
|
+
### Changed
|
|
23
|
+
- formal support for various variable and name shadowing rules ([#1089](https://github.com/rokucommunity/brighterscript/pull/1089))
|
|
24
|
+
- improve message for empty throw statements ([#1099](https://github.com/rokucommunity/brighterscript/pull/1099))
|
|
25
|
+
- move scope.validate() into BscPlugin ([#1105](https://github.com/rokucommunity/brighterscript/pull/1105))
|
|
26
|
+
- remove `CommentStatement` and all comment tokens from Lexer output ([#1083](https://github.com/rokucommunity/brighterscript/pull/1083))
|
|
27
|
+
### Fixed
|
|
28
|
+
- 'm' type is now AssocArray in function in AALiteral ([#1097](https://github.com/rokucommunity/brighterscript/pull/1097))
|
|
29
|
+
- ensure SymbolTypeFlag is exported from ./index.ts ([#1094](https://github.com/rokucommunity/brighterscript/pull/1094))
|
|
30
|
+
- diagnostic when using variable declared with unknown type ([#1098](https://github.com/rokucommunity/brighterscript/pull/1098))
|
|
31
|
+
- issue with bitwise binary operators ([#1107](https://github.com/rokucommunity/brighterscript/pull/1107))
|
|
32
|
+
- issue with AA overriding built-in properties ([#1106](https://github.com/rokucommunity/brighterscript/pull/1106))
|
|
33
|
+
- classname as variable for completions and validations ([#1096](https://github.com/rokucommunity/brighterscript/pull/1096))
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
9
37
|
## [1.0.0-alpha.27](https://github.com/rokucommunity/brighterscript/compare/v1.0.0-alpha.26...v1.0.0-alpha.27) - 2024-02-27
|
|
10
38
|
### Added
|
|
11
39
|
- Validation when trying to access a class member directly on a class name ([#1073](https://github.com/rokucommunity/brighterscript/pull/1073))
|
|
@@ -181,6 +209,49 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
181
209
|
## [0.66.0-alpha.0](https://github.com/rokucommunity/brighterscript/compare/v0.65.1...v0.66.0-alpha.0) - 2023-06-09
|
|
182
210
|
### Changed
|
|
183
211
|
- all the type tracking stuff!
|
|
212
|
+
## [0.65.26](https://github.com/rokucommunity/brighterscript/compare/v0.65.25...v0.65.26) - 2024-03-13
|
|
213
|
+
### Fixed
|
|
214
|
+
- Prevent unused variable warnings on transpiled ternary and null coalescence expressions ([#1101](https://github.com/rokucommunity/brighterscript/pull/1101))
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
## [0.65.25](https://github.com/rokucommunity/brighterscript/compare/v0.65.24...v0.65.25) - 2024-03-07
|
|
219
|
+
### Added
|
|
220
|
+
- Allow negative patterns in diagnostic filters ([#1078](https://github.com/rokucommunity/brighterscript/pull/1078))
|
|
221
|
+
- Support when tokens have null ranges ([#1072](https://github.com/rokucommunity/brighterscript/pull/1072))
|
|
222
|
+
- Support whitespace in conditional compile keywords ([#1090](https://github.com/rokucommunity/brighterscript/pull/1090))
|
|
223
|
+
### Changed
|
|
224
|
+
- Add `create-test-package` command for easier tgz testing ([#1088](https://github.com/rokucommunity/brighterscript/pull/1088))
|
|
225
|
+
- Bump ip from 2.0.0 to 2.0.1 in /benchmarks ([#1079](https://github.com/rokucommunity/brighterscript/pull/1079))
|
|
226
|
+
- Reduce null safety issues in Statement and Expression subclasses ([#1033](https://github.com/rokucommunity/brighterscript/pull/1033))
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
## [0.65.24](https://github.com/rokucommunity/brighterscript/compare/v0.65.23...v0.65.24) - 2024-03-01
|
|
231
|
+
### Changed
|
|
232
|
+
- upgrade to [roku-deploy@3.12.0](https://github.com/rokucommunity/roku-deploy/blob/master/CHANGELOG.md#3120---2024-03-01). Notable changes since 3.11.3:
|
|
233
|
+
- Support overriding various package upload form data ([roku-deploy#136](https://github.com/rokucommunity/roku-deploy/pull/136))
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
## [0.65.23](https://github.com/rokucommunity/brighterscript/compare/v0.65.22...v0.65.23) - 2024-02-29
|
|
238
|
+
### Changed
|
|
239
|
+
- upgrade to [roku-deploy@3.11.3](https://github.com/rokucommunity/roku-deploy/blob/master/CHANGELOG.md#3113---2024-02-29). Notable changes since 3.11.2:
|
|
240
|
+
- Retry the convertToSquahsfs request given the HPE_INVALID_CONSTANT error ([roku-deploy#145](https://github.com/rokucommunity/roku-deploy/pull/145))
|
|
241
|
+
### Fixed
|
|
242
|
+
- empty interfaces break the parser ([#1082](https://github.com/rokucommunity/brighterscript/pull/1082))
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
## [0.65.22](https://github.com/rokucommunity/brighterscript/compare/v0.65.21...0.65.22) - 2024-02-09
|
|
246
|
+
### Added
|
|
247
|
+
- support for `provideReferences` in plugins ([#1066](https://github.com/rokucommunity/brighterscript/pull/1066))
|
|
248
|
+
- allow v1 syntax: built-in types for class member types and type declarations on lhs ([#1059](https://github.com/rokucommunity/brighterscript/pull/1059))
|
|
249
|
+
### Changed
|
|
250
|
+
- fix sourcemap comment and add `file` prop to map ([#1064](https://github.com/rokucommunity/brighterscript/pull/1064))
|
|
251
|
+
- move `coveralls-next` to a devDependency since it's not needed at runtime ([#1051](https://github.com/rokucommunity/brighterscript/pull/1051))
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
|
|
184
255
|
## [0.65.21](https://github.com/rokucommunity/brighterscript/compare/v0.65.20...v0.65.21) - 2024-01-31
|
|
185
256
|
### Fixed
|
|
186
257
|
- parsing issues with multi-index IndexedSet and IndexedGet ([#1050](https://github.com/rokucommunity/brighterscript/pull/1050))
|
package/README.md
CHANGED
|
@@ -93,7 +93,7 @@ BrighterScript adds several new features to the BrightScript language such as na
|
|
|
93
93
|
</p>
|
|
94
94
|
<br/>
|
|
95
95
|
|
|
96
|
-
The BrighterScript project is used to power the popular [Brightscript Language](https://marketplace.visualstudio.com/items?itemName=rokucommunity.brightscript) VSCode extension, the [maestro framework](https://github.com/georgejecook/maestro
|
|
96
|
+
The BrighterScript project is used to power the popular [Brightscript Language](https://marketplace.visualstudio.com/items?itemName=rokucommunity.brightscript) VSCode extension, the [maestro framework](https://github.com/georgejecook/maestro-roku), and more.
|
|
97
97
|
|
|
98
98
|
[Contact us](https://github.com/rokucommunity/brighterscript/issues/new) if you use BrighterScript in your project and would like your logo listed above. More projects are adopting BrighterScript all the time, from using the new BrighterScript language features to simply using the compiler in their build pipeline.
|
|
99
99
|
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { DottedGetExpression, TypeExpression, VariableExpression } from './parser/Expression';
|
|
2
|
-
import { SymbolTypeFlag } from './SymbolTableFlag';
|
|
3
2
|
import type { TypeChainEntry } from './interfaces';
|
|
4
3
|
import type { AstNode } from './parser/AstNode';
|
|
4
|
+
import { SymbolTypeFlag } from './SymbolTypeFlag';
|
|
5
|
+
import type { Token } from './lexer/Token';
|
|
5
6
|
export declare const InsideSegmentWalkMode: number;
|
|
6
7
|
export interface UnresolvedSymbol {
|
|
7
8
|
typeChain: TypeChainEntry[];
|
|
@@ -9,17 +10,26 @@ export interface UnresolvedSymbol {
|
|
|
9
10
|
endChainFlags: SymbolTypeFlag;
|
|
10
11
|
containingNamespaces: string[];
|
|
11
12
|
}
|
|
13
|
+
export interface AssignedSymbol {
|
|
14
|
+
token: Token;
|
|
15
|
+
node: AstNode;
|
|
16
|
+
}
|
|
12
17
|
export declare class AstValidationSegmenter {
|
|
13
18
|
validatedSegments: Map<AstNode, boolean>;
|
|
14
19
|
segmentsForValidation: AstNode[];
|
|
15
20
|
singleValidationSegments: Set<AstNode>;
|
|
16
21
|
unresolvedSegmentsSymbols: Map<AstNode, Set<UnresolvedSymbol>>;
|
|
22
|
+
assignedTokensInSegment: Map<AstNode, Set<AssignedSymbol>>;
|
|
17
23
|
ast: AstNode;
|
|
18
24
|
reset(): void;
|
|
19
25
|
processTree(ast: AstNode): void;
|
|
20
|
-
checkExpressionForUnresolved(segment: AstNode, expression: VariableExpression | DottedGetExpression | TypeExpression,
|
|
26
|
+
checkExpressionForUnresolved(segment: AstNode, expression: VariableExpression | DottedGetExpression | TypeExpression, assignedSymbolsNames?: Set<string>): boolean;
|
|
21
27
|
private currentNamespaceStatement;
|
|
22
28
|
checkSegmentWalk(segment: AstNode): void;
|
|
23
29
|
getSegments(changedSymbols: Map<SymbolTypeFlag, Set<string>>): AstNode[];
|
|
24
30
|
markSegmentAsValidated(segment: AstNode): void;
|
|
31
|
+
unValidateAllSegments(): void;
|
|
32
|
+
hasUnvalidatedSegments(): boolean;
|
|
33
|
+
checkIfSegmentNeedRevalidation(segment: AstNode): boolean;
|
|
34
|
+
markSegmentsInvalidatedBySymbol(symbolName: string, flag: SymbolTypeFlag): void;
|
|
25
35
|
}
|
|
@@ -12,6 +12,7 @@ class AstValidationSegmenter {
|
|
|
12
12
|
this.segmentsForValidation = new Array();
|
|
13
13
|
this.singleValidationSegments = new Set();
|
|
14
14
|
this.unresolvedSegmentsSymbols = new Map();
|
|
15
|
+
this.assignedTokensInSegment = new Map();
|
|
15
16
|
}
|
|
16
17
|
reset() {
|
|
17
18
|
this.validatedSegments.clear();
|
|
@@ -27,9 +28,9 @@ class AstValidationSegmenter {
|
|
|
27
28
|
walkMode: visitors_1.WalkMode.visitStatements
|
|
28
29
|
});
|
|
29
30
|
}
|
|
30
|
-
checkExpressionForUnresolved(segment, expression,
|
|
31
|
+
checkExpressionForUnresolved(segment, expression, assignedSymbolsNames) {
|
|
31
32
|
var _a, _b;
|
|
32
|
-
if (!expression
|
|
33
|
+
if (!expression) {
|
|
33
34
|
return false;
|
|
34
35
|
}
|
|
35
36
|
if ((0, reflection_1.isVariableExpression)(expression) && expression.tokens.name.text.toLowerCase() === 'm') {
|
|
@@ -41,7 +42,7 @@ class AstValidationSegmenter {
|
|
|
41
42
|
const nodeType = expression.getType(options);
|
|
42
43
|
if (!(nodeType === null || nodeType === void 0 ? void 0 : nodeType.isResolvable())) {
|
|
43
44
|
let symbolsSet;
|
|
44
|
-
if (!(
|
|
45
|
+
if (!(assignedSymbolsNames === null || assignedSymbolsNames === void 0 ? void 0 : assignedSymbolsNames.has(typeChain[0].name.toLowerCase()))) {
|
|
45
46
|
if (!this.unresolvedSegmentsSymbols.has(segment)) {
|
|
46
47
|
symbolsSet = new Set();
|
|
47
48
|
this.unresolvedSegmentsSymbols.set(segment, symbolsSet);
|
|
@@ -49,6 +50,7 @@ class AstValidationSegmenter {
|
|
|
49
50
|
else {
|
|
50
51
|
symbolsSet = this.unresolvedSegmentsSymbols.get(segment);
|
|
51
52
|
}
|
|
53
|
+
this.validatedSegments.set(segment, false);
|
|
52
54
|
symbolsSet.add({ typeChain: typeChain, flags: typeChain[0].data.flags, endChainFlags: flag, containingNamespaces: (_b = (_a = this.currentNamespaceStatement) === null || _a === void 0 ? void 0 : _a.getNameParts()) === null || _b === void 0 ? void 0 : _b.map(t => t.text) });
|
|
53
55
|
}
|
|
54
56
|
return true;
|
|
@@ -56,7 +58,7 @@ class AstValidationSegmenter {
|
|
|
56
58
|
return false;
|
|
57
59
|
}
|
|
58
60
|
checkSegmentWalk(segment) {
|
|
59
|
-
if ((0, reflection_1.isNamespaceStatement)(segment) || (0, reflection_1.isBody)(segment)
|
|
61
|
+
if ((0, reflection_1.isNamespaceStatement)(segment) || (0, reflection_1.isBody)(segment)) {
|
|
60
62
|
return;
|
|
61
63
|
}
|
|
62
64
|
if ((0, reflection_1.isClassStatement)(segment)) {
|
|
@@ -86,28 +88,35 @@ class AstValidationSegmenter {
|
|
|
86
88
|
let foundUnresolvedInSegment = false;
|
|
87
89
|
const skipper = new visitors_1.ChildrenSkipper();
|
|
88
90
|
const assignedSymbols = new Set();
|
|
91
|
+
const assignedSymbolsNames = new Set();
|
|
89
92
|
this.currentNamespaceStatement = segment.findAncestor(reflection_1.isNamespaceStatement);
|
|
90
93
|
segment.walk((0, visitors_1.createVisitor)({
|
|
91
94
|
AssignmentStatement: (stmt) => {
|
|
92
|
-
assignedSymbols.add(stmt.tokens.name
|
|
95
|
+
assignedSymbols.add({ token: stmt.tokens.name, node: stmt });
|
|
96
|
+
assignedSymbolsNames.add(stmt.tokens.name.text.toLowerCase());
|
|
93
97
|
},
|
|
94
98
|
FunctionParameterExpression: (expr) => {
|
|
95
|
-
assignedSymbols.add(expr.tokens.name
|
|
99
|
+
assignedSymbols.add({ token: expr.tokens.name, node: expr });
|
|
100
|
+
assignedSymbolsNames.add(expr.tokens.name.text.toLowerCase());
|
|
101
|
+
},
|
|
102
|
+
ForEachStatement: (stmt) => {
|
|
103
|
+
assignedSymbols.add({ token: stmt.tokens.item, node: stmt });
|
|
104
|
+
assignedSymbolsNames.add(stmt.tokens.item.text.toLowerCase());
|
|
96
105
|
},
|
|
97
106
|
VariableExpression: (expr) => {
|
|
98
|
-
if (!
|
|
99
|
-
const expressionIsUnresolved = this.checkExpressionForUnresolved(segment, expr,
|
|
107
|
+
if (!assignedSymbolsNames.has(expr.tokens.name.text.toLowerCase())) {
|
|
108
|
+
const expressionIsUnresolved = this.checkExpressionForUnresolved(segment, expr, assignedSymbolsNames);
|
|
100
109
|
foundUnresolvedInSegment = expressionIsUnresolved || foundUnresolvedInSegment;
|
|
101
110
|
}
|
|
102
111
|
skipper.skip();
|
|
103
112
|
},
|
|
104
113
|
DottedGetExpression: (expr) => {
|
|
105
|
-
const expressionIsUnresolved = this.checkExpressionForUnresolved(segment, expr,
|
|
114
|
+
const expressionIsUnresolved = this.checkExpressionForUnresolved(segment, expr, assignedSymbolsNames);
|
|
106
115
|
foundUnresolvedInSegment = expressionIsUnresolved || foundUnresolvedInSegment;
|
|
107
116
|
skipper.skip();
|
|
108
117
|
},
|
|
109
118
|
TypeExpression: (expr) => {
|
|
110
|
-
const expressionIsUnresolved = this.checkExpressionForUnresolved(segment, expr,
|
|
119
|
+
const expressionIsUnresolved = this.checkExpressionForUnresolved(segment, expr, assignedSymbolsNames);
|
|
111
120
|
foundUnresolvedInSegment = expressionIsUnresolved || foundUnresolvedInSegment;
|
|
112
121
|
skipper.skip();
|
|
113
122
|
}
|
|
@@ -115,12 +124,15 @@ class AstValidationSegmenter {
|
|
|
115
124
|
walkMode: exports.InsideSegmentWalkMode,
|
|
116
125
|
skipChildren: skipper
|
|
117
126
|
});
|
|
127
|
+
this.assignedTokensInSegment.set(segment, assignedSymbols);
|
|
118
128
|
if (!foundUnresolvedInSegment) {
|
|
119
129
|
this.singleValidationSegments.add(segment);
|
|
120
130
|
}
|
|
121
131
|
}
|
|
122
132
|
getSegments(changedSymbols) {
|
|
133
|
+
var _a, _b, _c;
|
|
123
134
|
const segmentsToWalkForValidation = [];
|
|
135
|
+
const allChangedSymbolNames = [...changedSymbols.get(1 /* SymbolTypeFlag.runtime */), ...changedSymbols.get(2 /* SymbolTypeFlag.typetime */)];
|
|
124
136
|
for (const segment of this.segmentsForValidation) {
|
|
125
137
|
const symbolsRequired = this.unresolvedSegmentsSymbols.get(segment);
|
|
126
138
|
const isSingleValidationSegment = this.singleValidationSegments.has(segment);
|
|
@@ -128,24 +140,70 @@ class AstValidationSegmenter {
|
|
|
128
140
|
let segmentNeedsRevalidation = !singleValidationSegmentAlreadyValidated;
|
|
129
141
|
if (symbolsRequired) {
|
|
130
142
|
for (const requiredSymbol of symbolsRequired.values()) {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
143
|
+
for (const flagType of [1 /* SymbolTypeFlag.runtime */, 2 /* SymbolTypeFlag.typetime */]) {
|
|
144
|
+
// eslint-disable-next-line no-bitwise
|
|
145
|
+
const runTimeOrTypeTimeSymbolFlag = requiredSymbol.flags & flagType;
|
|
146
|
+
const changeSymbolSetForFlag = changedSymbols.get(runTimeOrTypeTimeSymbolFlag);
|
|
147
|
+
if (!changeSymbolSetForFlag) {
|
|
148
|
+
// This symbol has no flag - it is of unknown usage
|
|
149
|
+
// This can happen when testing if a function exists
|
|
150
|
+
}
|
|
151
|
+
else if (util_1.util.setContainsUnresolvedSymbol(changeSymbolSetForFlag, requiredSymbol)) {
|
|
152
|
+
segmentsToWalkForValidation.push(segment);
|
|
153
|
+
break;
|
|
154
|
+
}
|
|
137
155
|
}
|
|
138
156
|
}
|
|
139
157
|
}
|
|
140
158
|
else if (segmentNeedsRevalidation) {
|
|
141
159
|
segmentsToWalkForValidation.push(segment);
|
|
142
160
|
}
|
|
161
|
+
else {
|
|
162
|
+
for (let assignedToken of (_c = (_b = (_a = this.assignedTokensInSegment) === null || _a === void 0 ? void 0 : _a.get(segment)) === null || _b === void 0 ? void 0 : _b.values()) !== null && _c !== void 0 ? _c : []) {
|
|
163
|
+
if (allChangedSymbolNames.includes(assignedToken.token.text.toLowerCase())) {
|
|
164
|
+
segmentsToWalkForValidation.push(segment);
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
143
169
|
}
|
|
144
170
|
return segmentsToWalkForValidation;
|
|
145
171
|
}
|
|
146
172
|
markSegmentAsValidated(segment) {
|
|
147
173
|
this.validatedSegments.set(segment, true);
|
|
148
174
|
}
|
|
175
|
+
unValidateAllSegments() {
|
|
176
|
+
for (const segment of this.validatedSegments.keys()) {
|
|
177
|
+
this.validatedSegments.set(segment, false);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
hasUnvalidatedSegments() {
|
|
181
|
+
return Array.from(this.validatedSegments.values()).includes(false);
|
|
182
|
+
}
|
|
183
|
+
checkIfSegmentNeedRevalidation(segment) {
|
|
184
|
+
if (!this.validatedSegments.get(segment)) {
|
|
185
|
+
return true;
|
|
186
|
+
}
|
|
187
|
+
const unresolved = this.unresolvedSegmentsSymbols.get(segment);
|
|
188
|
+
if ((unresolved === null || unresolved === void 0 ? void 0 : unresolved.size) > 0) {
|
|
189
|
+
return true;
|
|
190
|
+
} /*
|
|
191
|
+
const assignedTokens = this.assignedTokensInSegment.get(segment);
|
|
192
|
+
if (assignedTokens?.size > 0) {
|
|
193
|
+
return true;
|
|
194
|
+
}*/
|
|
195
|
+
return false;
|
|
196
|
+
}
|
|
197
|
+
markSegmentsInvalidatedBySymbol(symbolName, flag) {
|
|
198
|
+
for (let [segment, unresolvedSet] of this.unresolvedSegmentsSymbols) {
|
|
199
|
+
for (let unresolvedSymbol of unresolvedSet.values()) {
|
|
200
|
+
if (unresolvedSymbol.typeChain.join('.').toLowerCase() === symbolName) {
|
|
201
|
+
this.validatedSegments.set(segment, false);
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
149
207
|
}
|
|
150
208
|
exports.AstValidationSegmenter = AstValidationSegmenter;
|
|
151
209
|
//# sourceMappingURL=AstValidationSegmenter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AstValidationSegmenter.js","sourceRoot":"","sources":["../src/AstValidationSegmenter.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"AstValidationSegmenter.js","sourceRoot":"","sources":["../src/AstValidationSegmenter.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,10 @@ export declare class DependencyGraph {
|
|
|
31
31
|
* @param exclude a list of keys to exclude from traversal. Anytime one of these nodes is encountered, it is skipped.
|
|
32
32
|
*/
|
|
33
33
|
getAllDependencies(keys: string | string[], exclude?: string[]): string[];
|
|
34
|
+
/**
|
|
35
|
+
* Get a list of the immediate dependencies for the given key.
|
|
36
|
+
*/
|
|
37
|
+
getImmediateDependencies(keys: string | string[], exclude?: string[]): string[];
|
|
34
38
|
/**
|
|
35
39
|
* Remove the item. This will emit an onchange event for all dependent nodes
|
|
36
40
|
*/
|
package/dist/DependencyGraph.js
CHANGED
|
@@ -79,6 +79,25 @@ class DependencyGraph {
|
|
|
79
79
|
return [...set];
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Get a list of the immediate dependencies for the given key.
|
|
84
|
+
*/
|
|
85
|
+
getImmediateDependencies(keys, exclude) {
|
|
86
|
+
var _a, _b;
|
|
87
|
+
if (typeof keys === 'string') {
|
|
88
|
+
return (_b = (_a = this.nodes[keys]) === null || _a === void 0 ? void 0 : _a.dependencies) !== null && _b !== void 0 ? _b : [];
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
const set = new Set();
|
|
92
|
+
for (const key of keys) {
|
|
93
|
+
const dependencies = this.getImmediateDependencies(key, exclude);
|
|
94
|
+
for (const dependency of dependencies) {
|
|
95
|
+
set.add(dependency);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return [...set];
|
|
99
|
+
}
|
|
100
|
+
}
|
|
82
101
|
/**
|
|
83
102
|
* Remove the item. This will emit an onchange event for all dependent nodes
|
|
84
103
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DependencyGraph.js","sourceRoot":"","sources":["../src/DependencyGraph.ts"],"names":[],"mappings":";;;AAAA,iDAA6C;AAC7C;;;GAGG;AACH,MAAa,eAAe;IAA5B;QACI;;WAEG;QACI,UAAK,GAAG,EAA0B,CAAC;QAE1C;;WAEG;QACK,oBAAe,GAAG,IAAI,4BAAY,EAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"DependencyGraph.js","sourceRoot":"","sources":["../src/DependencyGraph.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import type { BsDiagnostic } from './interfaces';
|
|
2
2
|
import type { BsConfig } from './BsConfig';
|
|
3
|
+
interface NormalizedFilter {
|
|
4
|
+
src?: string;
|
|
5
|
+
codes?: (number | string)[];
|
|
6
|
+
isNegative: boolean;
|
|
7
|
+
}
|
|
3
8
|
export declare class DiagnosticFilterer {
|
|
4
9
|
private byFile;
|
|
5
10
|
private filters;
|
|
@@ -20,8 +25,6 @@ export declare class DiagnosticFilterer {
|
|
|
20
25
|
private groupByFile;
|
|
21
26
|
private filterAllFiles;
|
|
22
27
|
private filterFile;
|
|
23
|
-
getDiagnosticFilters(
|
|
24
|
-
src?: string;
|
|
25
|
-
codes: (number | string)[];
|
|
26
|
-
}[];
|
|
28
|
+
getDiagnosticFilters(config: BsConfig): NormalizedFilter[];
|
|
27
29
|
}
|
|
30
|
+
export {};
|
|
@@ -35,11 +35,9 @@ class DiagnosticFilterer {
|
|
|
35
35
|
for (let key in this.byFile) {
|
|
36
36
|
let fileDiagnostics = this.byFile[key];
|
|
37
37
|
for (let diagnostic of fileDiagnostics) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
else {
|
|
42
|
-
finalDiagnostics.push(diagnostic);
|
|
38
|
+
//filter out duplicate and suppressed diagnostics
|
|
39
|
+
if (!finalDiagnostics.includes(diagnostic.diagnostic) && !diagnostic.isSuppressed) {
|
|
40
|
+
finalDiagnostics.push(diagnostic.diagnostic);
|
|
43
41
|
}
|
|
44
42
|
}
|
|
45
43
|
}
|
|
@@ -62,7 +60,10 @@ class DiagnosticFilterer {
|
|
|
62
60
|
if (!this.byFile[lowerSrcPath]) {
|
|
63
61
|
this.byFile[lowerSrcPath] = [];
|
|
64
62
|
}
|
|
65
|
-
this.byFile[lowerSrcPath].push(
|
|
63
|
+
this.byFile[lowerSrcPath].push({
|
|
64
|
+
diagnostic: diagnostic,
|
|
65
|
+
isSuppressed: false
|
|
66
|
+
});
|
|
66
67
|
}
|
|
67
68
|
}
|
|
68
69
|
filterAllFiles(filter) {
|
|
@@ -85,56 +86,85 @@ class DiagnosticFilterer {
|
|
|
85
86
|
}
|
|
86
87
|
}
|
|
87
88
|
filterFile(filter, filePath) {
|
|
88
|
-
//if
|
|
89
|
+
//if the filter is negative, we're turning diagnostics on
|
|
90
|
+
//if the filter is not negative we're turning diagnostics off
|
|
91
|
+
const isSuppressing = !filter.isNegative;
|
|
92
|
+
//if there is no code, set isSuppressed on every diagnostic in this file
|
|
89
93
|
if (!filter.codes) {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
94
|
+
this.byFile[filePath].forEach(diagnostic => {
|
|
95
|
+
diagnostic.isSuppressed = isSuppressing;
|
|
96
|
+
});
|
|
97
|
+
//set isSuppressed for any diagnostics with matching codes
|
|
93
98
|
}
|
|
94
99
|
else {
|
|
95
100
|
let fileDiagnostics = this.byFile[filePath];
|
|
96
|
-
for (
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
//remove this diagnostic
|
|
100
|
-
fileDiagnostics.splice(i, 1);
|
|
101
|
-
//repeat this loop iteration (with the new item at this index)
|
|
102
|
-
i--;
|
|
101
|
+
for (const diagnostic of fileDiagnostics) {
|
|
102
|
+
if (filter.codes.includes(diagnostic.diagnostic.code)) {
|
|
103
|
+
diagnostic.isSuppressed = isSuppressing;
|
|
103
104
|
}
|
|
104
105
|
}
|
|
105
106
|
}
|
|
106
107
|
}
|
|
107
|
-
getDiagnosticFilters(
|
|
108
|
+
getDiagnosticFilters(config) {
|
|
108
109
|
var _a, _b;
|
|
109
|
-
let globalIgnoreCodes = [...(_a =
|
|
110
|
-
let diagnosticFilters = [...(_b =
|
|
110
|
+
let globalIgnoreCodes = [...(_a = config.ignoreErrorCodes) !== null && _a !== void 0 ? _a : []];
|
|
111
|
+
let diagnosticFilters = [...(_b = config.diagnosticFilters) !== null && _b !== void 0 ? _b : []];
|
|
111
112
|
let result = [];
|
|
113
|
+
//include a filter for all global ignore codes
|
|
114
|
+
//this comes first, because negative patterns will override ignoreErrorCodes
|
|
115
|
+
if (globalIgnoreCodes.length > 0) {
|
|
116
|
+
result.push({
|
|
117
|
+
codes: globalIgnoreCodes,
|
|
118
|
+
isNegative: false
|
|
119
|
+
});
|
|
120
|
+
}
|
|
112
121
|
for (let filter of diagnosticFilters) {
|
|
113
122
|
if (typeof filter === 'number') {
|
|
114
|
-
|
|
123
|
+
result.push({
|
|
124
|
+
codes: [filter],
|
|
125
|
+
isNegative: false
|
|
126
|
+
});
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
if (typeof filter === 'string') {
|
|
130
|
+
const isNegative = filter.startsWith('!');
|
|
131
|
+
const trimmedFilter = isNegative ? filter.slice(1) : filter;
|
|
132
|
+
result.push({
|
|
133
|
+
src: trimmedFilter,
|
|
134
|
+
isNegative: isNegative
|
|
135
|
+
});
|
|
115
136
|
continue;
|
|
116
137
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
};
|
|
121
|
-
//if this is a code-only filter, add them to the globalCodes array (and skip adding it now)
|
|
138
|
+
//filter out bad inputs
|
|
139
|
+
if (!filter || typeof filter !== 'object') {
|
|
140
|
+
continue;
|
|
122
141
|
}
|
|
123
|
-
|
|
124
|
-
|
|
142
|
+
//code-only filter
|
|
143
|
+
if ('codes' in filter && !('src' in filter) && Array.isArray(filter.codes)) {
|
|
144
|
+
result.push({
|
|
145
|
+
codes: filter.codes,
|
|
146
|
+
isNegative: false
|
|
147
|
+
});
|
|
125
148
|
continue;
|
|
126
149
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
150
|
+
if ('src' in filter) {
|
|
151
|
+
const isNegative = filter.src.startsWith('!');
|
|
152
|
+
const trimmedFilter = isNegative ? filter.src.slice(1) : filter.src;
|
|
153
|
+
if ('codes' in filter) {
|
|
154
|
+
result.push({
|
|
155
|
+
src: trimmedFilter,
|
|
156
|
+
codes: filter.codes,
|
|
157
|
+
isNegative: isNegative
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
result.push({
|
|
162
|
+
src: trimmedFilter,
|
|
163
|
+
isNegative: isNegative
|
|
164
|
+
});
|
|
165
|
+
}
|
|
130
166
|
}
|
|
131
167
|
}
|
|
132
|
-
//include a filter for all global ignore codes
|
|
133
|
-
if (globalIgnoreCodes.length > 0) {
|
|
134
|
-
result.push({
|
|
135
|
-
codes: globalIgnoreCodes
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
168
|
return result;
|
|
139
169
|
}
|
|
140
170
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiagnosticFilterer.js","sourceRoot":"","sources":["../src/DiagnosticFilterer.ts"],"names":[],"mappings":";;;AACA,6BAA6B;AAC7B,uCAAuC;AAEvC,iCAA8C;
|
|
1
|
+
{"version":3,"file":"DiagnosticFilterer.js","sourceRoot":"","sources":["../src/DiagnosticFilterer.ts"],"names":[],"mappings":";;;AACA,6BAA6B;AAC7B,uCAAuC;AAEvC,iCAA8C;AAa9C,MAAa,kBAAkB;IAM3B;QACI,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACrB,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,OAAiB,EAAE,WAA2B;QACxD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAE/B,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAE9B,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC7B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;SAC/B;QACD,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAEnC,UAAU;QACV,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC;QAEpB,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;OAGG;IACK,cAAc;QAClB,mCAAmC;QACnC,IAAI,gBAAgB,GAAG,EAAoB,CAAC;QAC5C,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE;YACzB,IAAI,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvC,KAAK,IAAI,UAAU,IAAI,eAAe,EAAE;gBACpC,iDAAiD;gBACjD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;oBAC/E,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;iBAChD;aACJ;SACJ;QACD,OAAO,gBAAgB,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,WAA2B;;QAC3C,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAEjB,KAAK,IAAI,UAAU,IAAI,WAAW,EAAE;YAChC,MAAM,OAAO,GAAG,MAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,0CAAE,OAAO,mCAAI,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,0CAAE,OAAO,CAAC;YACvE,mCAAmC;YACnC,IAAI,CAAC,OAAO,EAAE;gBACV,SAAS;aACZ;YACD,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YAC3C,0DAA0D;YAC1D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;gBAC5B,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;aAClC;YACD,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC;gBAC3B,UAAU,EAAE,UAAU;gBACtB,YAAY,EAAE,KAAK;aACtB,CAAC,CAAC;SACN;IACL,CAAC;IAEO,cAAc,CAAC,MAAwB;QAC3C,IAAI,gBAA0B,CAAC;QAE/B,2CAA2C;QAC3C,IAAI,MAAM,CAAC,GAAG,EAAE;YACZ,yDAAyD;YACzD,IAAI,GAAG,GAAG,IAAA,sBAAC,EACP,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,EAAE,CAC7E,CAAC;YAEF,gBAAgB,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE;gBAC9D,MAAM,EAAE,IAAI;aACf,CAAC,CAAC;YAEH,4CAA4C;SAC/C;aAAM;YACH,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC/C;QAED,0BAA0B;QAC1B,KAAK,IAAI,QAAQ,IAAI,gBAAgB,EAAE;YACnC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;SACrC;IACL,CAAC;IAEO,UAAU,CAAC,MAAwB,EAAE,QAAgB;QACzD,yDAAyD;QACzD,6DAA6D;QAC7D,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;QAEzC,wEAAwE;QACxE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;gBACvC,UAAU,CAAC,YAAY,GAAG,aAAa,CAAC;YAC5C,CAAC,CAAC,CAAC;YAEH,0DAA0D;SAC7D;aAAM;YACH,IAAI,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC5C,KAAK,MAAM,UAAU,IAAI,eAAe,EAAE;gBACtC,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,IAAK,CAAC,EAAE;oBACpD,UAAU,CAAC,YAAY,GAAG,aAAa,CAAC;iBAC3C;aACJ;SACJ;IACL,CAAC;IAEM,oBAAoB,CAAC,MAAgB;;QACxC,IAAI,iBAAiB,GAAwB,CAAC,GAAG,MAAA,MAAM,CAAC,gBAAgB,mCAAI,EAAE,CAAC,CAAC;QAChF,IAAI,iBAAiB,GAAG,CAAC,GAAG,MAAA,MAAM,CAAC,iBAAiB,mCAAI,EAAE,CAAC,CAAC;QAE5D,IAAI,MAAM,GAAuB,EAAE,CAAC;QAEpC,8CAA8C;QAC9C,4EAA4E;QAC5E,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9B,MAAM,CAAC,IAAI,CAAC;gBACR,KAAK,EAAE,iBAAiB;gBACxB,UAAU,EAAE,KAAK;aACpB,CAAC,CAAC;SACN;QAED,KAAK,IAAI,MAAM,IAAI,iBAAiB,EAAE;YAClC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;gBAC5B,MAAM,CAAC,IAAI,CAAC;oBACR,KAAK,EAAE,CAAC,MAAM,CAAC;oBACf,UAAU,EAAE,KAAK;iBACpB,CAAC,CAAC;gBACH,SAAS;aACZ;YAED,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;gBAC5B,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAC1C,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBAE5D,MAAM,CAAC,IAAI,CAAC;oBACR,GAAG,EAAE,aAAa;oBAClB,UAAU,EAAE,UAAU;iBACzB,CAAC,CAAC;gBACH,SAAS;aACZ;YAED,uBAAuB;YACvB,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;gBACvC,SAAS;aACZ;YAED,kBAAkB;YAClB,IAAI,OAAO,IAAI,MAAM,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBACxE,MAAM,CAAC,IAAI,CAAC;oBACR,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,UAAU,EAAE,KAAK;iBACpB,CAAC,CAAC;gBACH,SAAS;aACZ;YAED,IAAI,KAAK,IAAI,MAAM,EAAE;gBACjB,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAC9C,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;gBAEpE,IAAI,OAAO,IAAI,MAAM,EAAE;oBACnB,MAAM,CAAC,IAAI,CAAC;wBACR,GAAG,EAAE,aAAa;wBAClB,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,UAAU,EAAE,UAAU;qBACzB,CAAC,CAAC;iBACN;qBAAM;oBACH,MAAM,CAAC,IAAI,CAAC;wBACR,GAAG,EAAE,aAAa;wBAClB,UAAU,EAAE,UAAU;qBACzB,CAAC,CAAC;iBACN;aACJ;SACJ;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AA/LD,gDA+LC"}
|
|
@@ -2,7 +2,7 @@ import type { Position } from 'vscode-languageserver';
|
|
|
2
2
|
import { DiagnosticSeverity } from 'vscode-languageserver';
|
|
3
3
|
import type { BsDiagnostic, TypeCompatibilityData } from './interfaces';
|
|
4
4
|
import { TokenKind } from './lexer/TokenKind';
|
|
5
|
-
import { SymbolTypeFlag } from './
|
|
5
|
+
import { SymbolTypeFlag } from './SymbolTypeFlag';
|
|
6
6
|
/**
|
|
7
7
|
* An object that keeps track of all possible error messages.
|
|
8
8
|
*/
|
package/dist/PluginInterface.js
CHANGED
|
@@ -23,7 +23,7 @@ class PluginInterface {
|
|
|
23
23
|
});
|
|
24
24
|
}
|
|
25
25
|
catch (err) {
|
|
26
|
-
(_b = this.logger) === null || _b === void 0 ? void 0 : _b.error(`Error when calling plugin ${plugin.name}.${event}:`, err);
|
|
26
|
+
(_b = this.logger) === null || _b === void 0 ? void 0 : _b.error(`Error when calling plugin ${plugin.name}.${event}:`, err.stack);
|
|
27
27
|
if (!this.suppressErrors) {
|
|
28
28
|
throw err;
|
|
29
29
|
}
|