brighterscript 1.0.0-alpha.43 → 1.0.0-alpha.45
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 +69 -0
- package/bsconfig.schema.json +6 -1
- package/dist/AstValidationSegmenter.js +6 -1
- package/dist/AstValidationSegmenter.js.map +1 -1
- package/dist/BsConfig.d.ts +4 -0
- package/dist/BusyStatusTracker.d.ts +37 -7
- package/dist/BusyStatusTracker.js +73 -8
- package/dist/BusyStatusTracker.js.map +1 -1
- package/dist/Cache.d.ts +0 -4
- package/dist/Cache.js +0 -6
- package/dist/Cache.js.map +1 -1
- package/dist/CrossScopeValidator.d.ts +1 -1
- package/dist/CrossScopeValidator.js +4 -4
- package/dist/CrossScopeValidator.js.map +1 -1
- package/dist/DiagnosticCollection.d.ts +19 -5
- package/dist/DiagnosticCollection.js +71 -23
- package/dist/DiagnosticCollection.js.map +1 -1
- package/dist/DiagnosticFilterer.d.ts +14 -1
- package/dist/DiagnosticFilterer.js +130 -12
- package/dist/DiagnosticFilterer.js.map +1 -1
- package/dist/DiagnosticManager.d.ts +11 -1
- package/dist/DiagnosticManager.js +192 -35
- package/dist/DiagnosticManager.js.map +1 -1
- package/dist/LanguageServer.d.ts +82 -133
- package/dist/LanguageServer.js +403 -942
- package/dist/LanguageServer.js.map +1 -1
- package/dist/Logger.d.ts +9 -4
- package/dist/Logger.js +30 -6
- package/dist/Logger.js.map +1 -1
- package/dist/PluginInterface.d.ts +8 -8
- package/dist/PluginInterface.js.map +1 -1
- package/dist/Program.d.ts +23 -4
- package/dist/Program.js +294 -194
- package/dist/Program.js.map +1 -1
- package/dist/ProgramBuilder.d.ts +22 -7
- package/dist/ProgramBuilder.js +44 -21
- package/dist/ProgramBuilder.js.map +1 -1
- package/dist/Scope.d.ts +11 -6
- package/dist/Scope.js +60 -36
- package/dist/Scope.js.map +1 -1
- package/dist/SemanticTokenUtils.js +1 -1
- package/dist/SemanticTokenUtils.js.map +1 -1
- package/dist/SymbolTable.js +4 -3
- package/dist/SymbolTable.js.map +1 -1
- package/dist/astUtils/reflection.d.ts +4 -4
- package/dist/astUtils/reflection.js +12 -10
- package/dist/astUtils/reflection.js.map +1 -1
- package/dist/bscPlugin/BscPlugin.d.ts +3 -3
- package/dist/bscPlugin/BscPlugin.js.map +1 -1
- package/dist/bscPlugin/CallExpressionInfo.js +4 -2
- package/dist/bscPlugin/CallExpressionInfo.js.map +1 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +1 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.js +15 -15
- package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +82 -5
- package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/hover/HoverProcessor.js +3 -0
- package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.d.ts +4 -1
- package/dist/bscPlugin/validation/ScopeValidator.js +161 -61
- package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
- package/dist/common/Sequencer.d.ts +53 -0
- package/dist/common/Sequencer.js +232 -0
- package/dist/common/Sequencer.js.map +1 -0
- package/dist/common/Sequencer.spec.d.ts +1 -0
- package/dist/common/Sequencer.spec.js +75 -0
- package/dist/common/Sequencer.spec.js.map +1 -0
- package/dist/deferred.d.ts +2 -0
- package/dist/deferred.js +10 -0
- package/dist/deferred.js.map +1 -1
- package/dist/examples/plugins/removePrint.d.ts +2 -2
- package/dist/examples/plugins/removePrint.js.map +1 -1
- package/dist/files/BrsFile.d.ts +1 -1
- package/dist/files/BrsFile.js +11 -40
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +51 -2
- package/dist/files/BrsFile.spec.js.map +1 -1
- package/dist/files/BscFile.d.ts +1 -0
- package/dist/files/LazyFileData.d.ts +1 -0
- package/dist/files/XmlFile.spec.js +1 -1
- package/dist/files/XmlFile.spec.js.map +1 -1
- package/dist/globalCallables.js +186 -186
- package/dist/globalCallables.js.map +1 -1
- package/dist/interfaces.d.ts +56 -13
- package/dist/interfaces.js.map +1 -1
- package/dist/lexer/Lexer.js +1 -1
- package/dist/lexer/Lexer.js.map +1 -1
- package/dist/logging.d.ts +6 -1
- package/dist/logging.js +14 -1
- package/dist/logging.js.map +1 -1
- package/dist/lsp/ActionQueue.d.ts +35 -0
- package/dist/lsp/ActionQueue.js +115 -0
- package/dist/lsp/ActionQueue.js.map +1 -0
- package/dist/lsp/ActionQueue.spec.d.ts +1 -0
- package/dist/lsp/ActionQueue.spec.js +80 -0
- package/dist/lsp/ActionQueue.spec.js.map +1 -0
- package/dist/lsp/DocumentManager.d.ts +63 -0
- package/dist/lsp/DocumentManager.js +122 -0
- package/dist/lsp/DocumentManager.js.map +1 -0
- package/dist/lsp/DocumentManager.spec.d.ts +1 -0
- package/dist/lsp/DocumentManager.spec.js +103 -0
- package/dist/lsp/DocumentManager.spec.js.map +1 -0
- package/dist/lsp/LspProject.d.ts +231 -0
- package/dist/lsp/LspProject.js +3 -0
- package/dist/lsp/LspProject.js.map +1 -0
- package/dist/lsp/PathFilterer.d.ts +75 -0
- package/dist/lsp/PathFilterer.js +196 -0
- package/dist/lsp/PathFilterer.js.map +1 -0
- package/dist/lsp/PathFilterer.spec.d.ts +1 -0
- package/dist/lsp/PathFilterer.spec.js +182 -0
- package/dist/lsp/PathFilterer.spec.js.map +1 -0
- package/dist/lsp/Project.d.ts +167 -0
- package/dist/lsp/Project.js +432 -0
- package/dist/lsp/Project.js.map +1 -0
- package/dist/lsp/Project.spec.d.ts +1 -0
- package/dist/lsp/Project.spec.js +220 -0
- package/dist/lsp/Project.spec.js.map +1 -0
- package/dist/lsp/ProjectManager.d.ts +221 -0
- package/dist/lsp/ProjectManager.js +735 -0
- package/dist/lsp/ProjectManager.js.map +1 -0
- package/dist/lsp/ProjectManager.spec.d.ts +1 -0
- package/dist/lsp/ProjectManager.spec.js +757 -0
- package/dist/lsp/ProjectManager.spec.js.map +1 -0
- package/dist/lsp/ReaderWriterManager.d.ts +21 -0
- package/dist/lsp/ReaderWriterManager.js +60 -0
- package/dist/lsp/ReaderWriterManager.js.map +1 -0
- package/dist/lsp/worker/MessageHandler.d.ts +99 -0
- package/dist/lsp/worker/MessageHandler.js +138 -0
- package/dist/lsp/worker/MessageHandler.js.map +1 -0
- package/dist/lsp/worker/MessageHandler.spec.d.ts +1 -0
- package/dist/lsp/worker/MessageHandler.spec.js +64 -0
- package/dist/lsp/worker/MessageHandler.spec.js.map +1 -0
- package/dist/lsp/worker/WorkerPool.d.ts +38 -0
- package/dist/lsp/worker/WorkerPool.js +78 -0
- package/dist/lsp/worker/WorkerPool.js.map +1 -0
- package/dist/lsp/worker/WorkerPool.spec.d.ts +1 -0
- package/dist/lsp/worker/WorkerPool.spec.js +59 -0
- package/dist/lsp/worker/WorkerPool.spec.js.map +1 -0
- package/dist/lsp/worker/WorkerThreadProject.d.ts +144 -0
- package/dist/lsp/worker/WorkerThreadProject.js +183 -0
- package/dist/lsp/worker/WorkerThreadProject.js.map +1 -0
- package/dist/lsp/worker/WorkerThreadProject.spec.d.ts +2 -0
- package/dist/lsp/worker/WorkerThreadProject.spec.js +68 -0
- package/dist/lsp/worker/WorkerThreadProject.spec.js.map +1 -0
- package/dist/lsp/worker/WorkerThreadProjectRunner.d.ts +15 -0
- package/dist/lsp/worker/WorkerThreadProjectRunner.js +58 -0
- package/dist/lsp/worker/WorkerThreadProjectRunner.js.map +1 -0
- package/dist/parser/Expression.js +7 -2
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.spec.js +12 -0
- package/dist/parser/Parser.spec.js.map +1 -1
- package/dist/parser/Statement.js +2 -2
- package/dist/parser/Statement.js.map +1 -1
- package/dist/parser/tests/expression/TemplateStringExpression.spec.js +51 -5
- package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
- package/dist/roku-types/data.json +745 -751
- package/dist/types/BooleanType.d.ts +0 -2
- package/dist/types/BooleanType.js +4 -6
- package/dist/types/BooleanType.js.map +1 -1
- package/dist/types/BscType.js +5 -0
- package/dist/types/BscType.js.map +1 -1
- package/dist/types/BuiltInInterfaceAdder.d.ts +1 -0
- package/dist/types/BuiltInInterfaceAdder.js +24 -17
- package/dist/types/BuiltInInterfaceAdder.js.map +1 -1
- package/dist/types/DoubleType.d.ts +0 -2
- package/dist/types/DoubleType.js +4 -6
- package/dist/types/DoubleType.js.map +1 -1
- package/dist/types/DynamicType.d.ts +0 -2
- package/dist/types/DynamicType.js +3 -5
- package/dist/types/DynamicType.js.map +1 -1
- package/dist/types/FloatType.d.ts +0 -2
- package/dist/types/FloatType.js +4 -6
- package/dist/types/FloatType.js.map +1 -1
- package/dist/types/FunctionType.d.ts +0 -2
- package/dist/types/FunctionType.js +5 -7
- package/dist/types/FunctionType.js.map +1 -1
- package/dist/types/IntegerType.d.ts +0 -2
- package/dist/types/IntegerType.js +4 -6
- package/dist/types/IntegerType.js.map +1 -1
- package/dist/types/LongIntegerType.d.ts +0 -2
- package/dist/types/LongIntegerType.js +4 -6
- package/dist/types/LongIntegerType.js.map +1 -1
- package/dist/types/ObjectType.d.ts +3 -3
- package/dist/types/ObjectType.js +6 -8
- package/dist/types/ObjectType.js.map +1 -1
- package/dist/types/StringType.d.ts +0 -2
- package/dist/types/StringType.js +4 -6
- package/dist/types/StringType.js.map +1 -1
- package/dist/types/VoidType.d.ts +0 -2
- package/dist/types/VoidType.js +4 -6
- package/dist/types/VoidType.js.map +1 -1
- package/dist/types/helpers.d.ts +4 -0
- package/dist/types/helpers.js +5 -1
- package/dist/types/helpers.js.map +1 -1
- package/dist/util.d.ts +44 -16
- package/dist/util.js +196 -70
- package/dist/util.js.map +1 -1
- package/dist/validators/ClassValidator.js +2 -2
- package/dist/validators/ClassValidator.js.map +1 -1
- package/package.json +15 -5
|
@@ -1,60 +1,107 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DiagnosticCollection = void 0;
|
|
4
|
+
const vscode_uri_1 = require("vscode-uri");
|
|
4
5
|
const util_1 = require("./util");
|
|
6
|
+
const thenby_1 = require("thenby");
|
|
5
7
|
class DiagnosticCollection {
|
|
6
8
|
constructor() {
|
|
7
9
|
this.previousDiagnosticsByFile = {};
|
|
8
10
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Get a patch of any changed diagnostics since last time. This takes a single project and diagnostics, but evaluates
|
|
13
|
+
* the patch based on all previously seen projects. It's supposed to be a rolling patch.
|
|
14
|
+
* This will include _ALL_ diagnostics for a file if any diagnostics have changed for that file, due to how the language server expects diagnostics to be sent.
|
|
15
|
+
*/
|
|
16
|
+
getPatch(projectId, diagnostics) {
|
|
17
|
+
const diagnosticsByFile = this.getDiagnosticsByFile(projectId, diagnostics);
|
|
11
18
|
const patch = Object.assign(Object.assign(Object.assign({}, this.getRemovedPatch(diagnosticsByFile)), this.getModifiedPatch(diagnosticsByFile)), this.getAddedPatch(diagnosticsByFile));
|
|
12
19
|
//save the new list of diagnostics
|
|
13
20
|
this.previousDiagnosticsByFile = diagnosticsByFile;
|
|
14
21
|
return patch;
|
|
15
22
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
/**
|
|
24
|
+
* Get all the previous diagnostics, remove any that were exclusive to the current project, then mix in the project's new diagnostics.
|
|
25
|
+
* @param projectId the id of the project that should have its diagnostics refreshed
|
|
26
|
+
* @param thisProjectDiagnostics diagnostics for the project
|
|
27
|
+
*/
|
|
28
|
+
getDiagnosticsByFile(projectId, thisProjectDiagnostics) {
|
|
29
|
+
var _a, _b;
|
|
30
|
+
const result = this.clonePreviousDiagnosticsByFile();
|
|
31
|
+
const diagnosticsByKey = new Map();
|
|
32
|
+
//delete all diagnostics linked to this project
|
|
33
|
+
for (const srcPath in result) {
|
|
34
|
+
const diagnostics = result[srcPath];
|
|
35
|
+
for (let i = diagnostics.length - 1; i >= 0; i--) {
|
|
36
|
+
const diagnostic = diagnostics[i];
|
|
37
|
+
//remember this diagnostic key for use when deduplicating down below
|
|
38
|
+
diagnosticsByKey.set(diagnostic.key, diagnostic);
|
|
39
|
+
//unlink the diagnostic from this project
|
|
40
|
+
diagnostic.projectIds.delete(projectId);
|
|
41
|
+
//delete this diagnostic if it's no longer linked to any projects
|
|
42
|
+
if (diagnostic.projectIds.size === 0) {
|
|
43
|
+
diagnostics.splice(i, 1);
|
|
44
|
+
diagnosticsByKey.delete(diagnostic.key);
|
|
45
|
+
}
|
|
27
46
|
}
|
|
47
|
+
}
|
|
48
|
+
//build the full current set of diagnostics by file
|
|
49
|
+
for (let diagnostic of thisProjectDiagnostics) {
|
|
50
|
+
const srcPath = vscode_uri_1.URI.parse(diagnostic.uri).fsPath;
|
|
28
51
|
//ensure the file entry exists
|
|
29
|
-
if (!result[
|
|
30
|
-
result[
|
|
52
|
+
if (!result[srcPath]) {
|
|
53
|
+
result[srcPath] = [];
|
|
31
54
|
}
|
|
32
|
-
const diagnosticMap = result[fileUri];
|
|
33
55
|
//fall back to a default range if missing
|
|
34
|
-
const range = (
|
|
56
|
+
const range = (_a = diagnostic.range) !== null && _a !== void 0 ? _a : util_1.util.createRange(0, 0, 0, 0);
|
|
35
57
|
diagnostic.key =
|
|
36
|
-
|
|
58
|
+
srcPath.toLowerCase() + '-' +
|
|
37
59
|
diagnostic.code + '-' +
|
|
38
60
|
range.start.line + '-' +
|
|
39
61
|
range.start.character + '-' +
|
|
40
62
|
range.end.line + '-' +
|
|
41
63
|
range.end.character +
|
|
42
64
|
diagnostic.message;
|
|
65
|
+
(_b = diagnostic.projectIds) !== null && _b !== void 0 ? _b : (diagnostic.projectIds = new Set([projectId]));
|
|
43
66
|
//don't include duplicates
|
|
44
|
-
if (!
|
|
45
|
-
|
|
46
|
-
|
|
67
|
+
if (!diagnosticsByKey.has(diagnostic.key)) {
|
|
68
|
+
diagnosticsByKey.set(diagnostic.key, diagnostic);
|
|
69
|
+
const diagnosticsForFile = result[srcPath];
|
|
70
|
+
diagnosticsForFile.push(diagnostic);
|
|
47
71
|
}
|
|
72
|
+
//link this project to the diagnostic
|
|
73
|
+
diagnosticsByKey.get(diagnostic.key).projectIds.add(projectId);
|
|
74
|
+
}
|
|
75
|
+
//sort the list so it's easier to compare later
|
|
76
|
+
for (let key in result) {
|
|
77
|
+
result[key].sort((0, thenby_1.firstBy)(x => x.key));
|
|
48
78
|
}
|
|
49
79
|
return result;
|
|
50
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* Clone the previousDiagnosticsByFile, retaining the array of project references on each diagnostic
|
|
83
|
+
*/
|
|
84
|
+
clonePreviousDiagnosticsByFile() {
|
|
85
|
+
let clone = {};
|
|
86
|
+
for (let key in this.previousDiagnosticsByFile) {
|
|
87
|
+
clone[key] = [];
|
|
88
|
+
for (const diagnostic of this.previousDiagnosticsByFile[key]) {
|
|
89
|
+
clone[key].push(Object.assign(Object.assign({}, diagnostic), {
|
|
90
|
+
//make a copy of the projects array (but keep the project references intact)
|
|
91
|
+
projectIds: new Set([...diagnostic.projectIds]) }));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return clone;
|
|
95
|
+
}
|
|
51
96
|
/**
|
|
52
97
|
* Get a patch for all the files that have been removed since last time
|
|
53
98
|
*/
|
|
54
99
|
getRemovedPatch(currentDiagnosticsByFile) {
|
|
100
|
+
var _a, _b;
|
|
55
101
|
const result = {};
|
|
56
102
|
for (const filePath in this.previousDiagnosticsByFile) {
|
|
57
|
-
if
|
|
103
|
+
//if there are no current diagnostics for this file, add an empty array to the result for that file path
|
|
104
|
+
if (((_b = (_a = currentDiagnosticsByFile[filePath]) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) === 0) {
|
|
58
105
|
result[filePath] = [];
|
|
59
106
|
}
|
|
60
107
|
}
|
|
@@ -93,9 +140,10 @@ class DiagnosticCollection {
|
|
|
93
140
|
* Get diagnostics for all new files not seen since last time
|
|
94
141
|
*/
|
|
95
142
|
getAddedPatch(currentDiagnosticsByFile) {
|
|
143
|
+
var _a, _b;
|
|
96
144
|
const result = {};
|
|
97
145
|
for (const filePath in currentDiagnosticsByFile) {
|
|
98
|
-
if (
|
|
146
|
+
if (((_b = (_a = this.previousDiagnosticsByFile[filePath]) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) === 0) {
|
|
99
147
|
result[filePath] = currentDiagnosticsByFile[filePath];
|
|
100
148
|
}
|
|
101
149
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiagnosticCollection.js","sourceRoot":"","sources":["../src/DiagnosticCollection.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"DiagnosticCollection.js","sourceRoot":"","sources":["../src/DiagnosticCollection.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,13 +10,23 @@ interface NormalizedFilter {
|
|
|
10
10
|
export declare class DiagnosticFilterer {
|
|
11
11
|
private byFile;
|
|
12
12
|
private fileDestSrcUriMap;
|
|
13
|
-
private
|
|
13
|
+
private _filters;
|
|
14
14
|
private rootDir;
|
|
15
|
+
options: BsConfig | undefined;
|
|
15
16
|
constructor();
|
|
17
|
+
get filters(): NormalizedFilter[];
|
|
16
18
|
/**
|
|
17
19
|
* Filter a list of diagnostics based on the provided filters
|
|
18
20
|
*/
|
|
19
21
|
filter(options: BsConfig, diagnostics: BsDiagnostic[], program?: Program): BsDiagnostic[];
|
|
22
|
+
/**
|
|
23
|
+
* Should this file be completely ignored?
|
|
24
|
+
* If the file diagnostics are ignored, we do not need to validate this file
|
|
25
|
+
*/
|
|
26
|
+
isFileFiltered(file: {
|
|
27
|
+
srcPath: string;
|
|
28
|
+
destPath: string;
|
|
29
|
+
}): boolean;
|
|
20
30
|
/**
|
|
21
31
|
* Iterate over all remaining diagnostics from the byFile map.
|
|
22
32
|
* Also removes duplicates
|
|
@@ -26,9 +36,12 @@ export declare class DiagnosticFilterer {
|
|
|
26
36
|
* group the diagnostics by file
|
|
27
37
|
*/
|
|
28
38
|
private groupByFile;
|
|
39
|
+
private matchFileSrcUris;
|
|
40
|
+
private matchFileDestUris;
|
|
29
41
|
private filterAllFiles;
|
|
30
42
|
private filterFile;
|
|
31
43
|
getDiagnosticFilters(config: BsConfig): NormalizedFilter[];
|
|
44
|
+
private getDiagnosticFiltersV0;
|
|
32
45
|
private getNormalizedFilter;
|
|
33
46
|
}
|
|
34
47
|
export {};
|
|
@@ -10,12 +10,22 @@ class DiagnosticFilterer {
|
|
|
10
10
|
this.byFile = {};
|
|
11
11
|
this.fileDestSrcUriMap = {};
|
|
12
12
|
}
|
|
13
|
+
get filters() {
|
|
14
|
+
if (!this.options) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
if (!this._filters) {
|
|
18
|
+
this._filters = this.getDiagnosticFilters(this.options);
|
|
19
|
+
}
|
|
20
|
+
return this._filters;
|
|
21
|
+
}
|
|
13
22
|
/**
|
|
14
23
|
* Filter a list of diagnostics based on the provided filters
|
|
15
24
|
*/
|
|
16
25
|
filter(options, diagnostics, program) {
|
|
17
|
-
this.
|
|
18
|
-
this.
|
|
26
|
+
this.options = options;
|
|
27
|
+
delete this._filters;
|
|
28
|
+
this.rootDir = this.options.rootDir;
|
|
19
29
|
this.groupByFile(diagnostics, program);
|
|
20
30
|
for (let filter of this.filters) {
|
|
21
31
|
this.filterAllFiles(filter);
|
|
@@ -24,10 +34,45 @@ class DiagnosticFilterer {
|
|
|
24
34
|
//clean up
|
|
25
35
|
this.byFile = {};
|
|
26
36
|
this.fileDestSrcUriMap = {};
|
|
27
|
-
delete this.rootDir;
|
|
28
|
-
delete this.filters;
|
|
29
37
|
return result;
|
|
30
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Should this file be completely ignored?
|
|
41
|
+
* If the file diagnostics are ignored, we do not need to validate this file
|
|
42
|
+
*/
|
|
43
|
+
isFileFiltered(file) {
|
|
44
|
+
var _a, _b, _c;
|
|
45
|
+
if (!this.options || !this.filters) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
this.rootDir = this.options.rootDir;
|
|
49
|
+
let isMatch = false;
|
|
50
|
+
//filter each matched file
|
|
51
|
+
for (let filter of this.filters) {
|
|
52
|
+
if (((_a = filter.codes) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
let srcMatch = false;
|
|
56
|
+
if (filter.src) {
|
|
57
|
+
const srcUri = util_1.default.pathToUri(file.srcPath);
|
|
58
|
+
const srcFsPath = vscode_uri_1.URI.parse(srcUri).fsPath;
|
|
59
|
+
srcMatch = !!(filter.src && ((_b = this.matchFileSrcUris(filter, [srcFsPath])) === null || _b === void 0 ? void 0 : _b.length) > 0);
|
|
60
|
+
}
|
|
61
|
+
let destMatch = false;
|
|
62
|
+
if (filter.dest) {
|
|
63
|
+
destMatch = !!(filter.dest && ((_c = this.matchFileDestUris(filter, [file.destPath])) === null || _c === void 0 ? void 0 : _c.length) > 0);
|
|
64
|
+
}
|
|
65
|
+
if (!filter.isNegative) {
|
|
66
|
+
isMatch = isMatch || srcMatch || destMatch;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
if (srcMatch || destMatch) {
|
|
70
|
+
isMatch = false;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return isMatch;
|
|
75
|
+
}
|
|
31
76
|
/**
|
|
32
77
|
* Iterate over all remaining diagnostics from the byFile map.
|
|
33
78
|
* Also removes duplicates
|
|
@@ -77,24 +122,32 @@ class DiagnosticFilterer {
|
|
|
77
122
|
}
|
|
78
123
|
}
|
|
79
124
|
}
|
|
125
|
+
matchFileSrcUris(filter, fileUris) {
|
|
126
|
+
//prepend rootDir to src if the filter is not a relative path
|
|
127
|
+
let src = (0, util_1.standardizePath)(path.isAbsolute(filter.src) ? filter.src : `${this.rootDir}/${filter.src}`);
|
|
128
|
+
let matchedFileUris = minimatch.match(fileUris, src, {
|
|
129
|
+
nocase: true
|
|
130
|
+
}).map(src => util_1.default.pathToUri(src).toLowerCase());
|
|
131
|
+
return matchedFileUris;
|
|
132
|
+
}
|
|
133
|
+
matchFileDestUris(filter, fileUris) {
|
|
134
|
+
let matchedFileUris = minimatch.match(fileUris, filter.dest, {
|
|
135
|
+
nocase: true
|
|
136
|
+
});
|
|
137
|
+
return matchedFileUris;
|
|
138
|
+
}
|
|
80
139
|
filterAllFiles(filter) {
|
|
81
140
|
let matchedFileUris;
|
|
82
141
|
if (filter.src) {
|
|
83
142
|
//if there's a src, match against all files
|
|
84
|
-
//prepend rootDir to src if the filter is not a relative path
|
|
85
|
-
let src = (0, util_1.standardizePath)(path.isAbsolute(filter.src) ? filter.src : `${this.rootDir}/${filter.src}`);
|
|
86
143
|
const byFileSrcs = Object.keys(this.byFile).map(uri => vscode_uri_1.URI.parse(uri).fsPath);
|
|
87
|
-
matchedFileUris =
|
|
88
|
-
nocase: true
|
|
89
|
-
}).map(src => util_1.default.pathToUri(src).toLowerCase());
|
|
144
|
+
matchedFileUris = this.matchFileSrcUris(filter, byFileSrcs);
|
|
90
145
|
}
|
|
91
146
|
else if (filter.dest) {
|
|
92
147
|
// applies to file dest location
|
|
93
148
|
// search against the set of file destinations
|
|
94
149
|
const byFileDests = Object.keys(this.fileDestSrcUriMap);
|
|
95
|
-
matchedFileUris =
|
|
96
|
-
nocase: true
|
|
97
|
-
}).map((destPath) => {
|
|
150
|
+
matchedFileUris = this.matchFileDestUris(filter, byFileDests).map((destPath) => {
|
|
98
151
|
var _a;
|
|
99
152
|
return (_a = this.fileDestSrcUriMap[destPath]) === null || _a === void 0 ? void 0 : _a.toLowerCase();
|
|
100
153
|
});
|
|
@@ -136,6 +189,9 @@ class DiagnosticFilterer {
|
|
|
136
189
|
}
|
|
137
190
|
getDiagnosticFilters(config) {
|
|
138
191
|
var _a, _b;
|
|
192
|
+
if (config.diagnosticFiltersV0Compatibility) {
|
|
193
|
+
return this.getDiagnosticFiltersV0(config);
|
|
194
|
+
}
|
|
139
195
|
let globalIgnoreCodes = [...(_a = config.ignoreErrorCodes) !== null && _a !== void 0 ? _a : []];
|
|
140
196
|
let diagnosticFilters = [...(_b = config.diagnosticFilters) !== null && _b !== void 0 ? _b : []];
|
|
141
197
|
let result = [];
|
|
@@ -194,6 +250,68 @@ class DiagnosticFilterer {
|
|
|
194
250
|
}
|
|
195
251
|
return result;
|
|
196
252
|
}
|
|
253
|
+
getDiagnosticFiltersV0(config) {
|
|
254
|
+
var _a, _b;
|
|
255
|
+
let globalIgnoreCodes = [...(_a = config.ignoreErrorCodes) !== null && _a !== void 0 ? _a : []];
|
|
256
|
+
let diagnosticFilters = [...(_b = config.diagnosticFilters) !== null && _b !== void 0 ? _b : []];
|
|
257
|
+
let result = [];
|
|
258
|
+
//include a filter for all global ignore codes
|
|
259
|
+
//this comes first, because negative patterns will override ignoreErrorCodes
|
|
260
|
+
if (globalIgnoreCodes.length > 0) {
|
|
261
|
+
result.push({
|
|
262
|
+
codes: globalIgnoreCodes,
|
|
263
|
+
isNegative: false
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
for (let filter of diagnosticFilters) {
|
|
267
|
+
if (typeof filter === 'number') {
|
|
268
|
+
result.push({
|
|
269
|
+
codes: [filter],
|
|
270
|
+
isNegative: false
|
|
271
|
+
});
|
|
272
|
+
continue;
|
|
273
|
+
}
|
|
274
|
+
if (typeof filter === 'string') {
|
|
275
|
+
const isNegative = filter.startsWith('!');
|
|
276
|
+
const trimmedFilter = isNegative ? filter.slice(1) : filter;
|
|
277
|
+
result.push({
|
|
278
|
+
src: trimmedFilter,
|
|
279
|
+
isNegative: isNegative
|
|
280
|
+
});
|
|
281
|
+
continue;
|
|
282
|
+
}
|
|
283
|
+
//filter out bad inputs
|
|
284
|
+
if (!filter || typeof filter !== 'object') {
|
|
285
|
+
continue;
|
|
286
|
+
}
|
|
287
|
+
//code-only filter
|
|
288
|
+
if ('codes' in filter && !('src' in filter) && Array.isArray(filter.codes)) {
|
|
289
|
+
result.push({
|
|
290
|
+
codes: filter.codes,
|
|
291
|
+
isNegative: false
|
|
292
|
+
});
|
|
293
|
+
continue;
|
|
294
|
+
}
|
|
295
|
+
if ('src' in filter && typeof filter.src === 'string') {
|
|
296
|
+
const isNegative = filter.src.startsWith('!');
|
|
297
|
+
const trimmedFilter = isNegative ? filter.src.slice(1) : filter.src;
|
|
298
|
+
if ('codes' in filter) {
|
|
299
|
+
result.push({
|
|
300
|
+
src: trimmedFilter,
|
|
301
|
+
codes: filter.codes,
|
|
302
|
+
isNegative: isNegative
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
else {
|
|
306
|
+
result.push({
|
|
307
|
+
src: trimmedFilter,
|
|
308
|
+
isNegative: isNegative
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
return result;
|
|
314
|
+
}
|
|
197
315
|
getNormalizedFilter(fileGlob, filter, locationKey = 'src') {
|
|
198
316
|
const isNegative = fileGlob.startsWith('!');
|
|
199
317
|
const trimmedFilter = isNegative ? fileGlob.slice(1) : fileGlob;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiagnosticFilterer.js","sourceRoot":"","sources":["../src/DiagnosticFilterer.ts"],"names":[],"mappings":";;;AACA,6BAA6B;AAC7B,uCAAuC;AAEvC,iCAAoD;AACpD,2CAAiC;AAejC,MAAa,kBAAkB;
|
|
1
|
+
{"version":3,"file":"DiagnosticFilterer.js","sourceRoot":"","sources":["../src/DiagnosticFilterer.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import type { Scope } from './Scope';
|
|
|
4
4
|
import type { FinalizedBsConfig } from './BsConfig';
|
|
5
5
|
import type { Logger } from './logging';
|
|
6
6
|
import type { Program } from './Program';
|
|
7
|
+
import type { BrsFile } from './files/BrsFile';
|
|
7
8
|
/**
|
|
8
9
|
* Manages all diagnostics for a program.
|
|
9
10
|
* Diagnostics can be added specific to a certain file/range and optionally scope or an AST node
|
|
@@ -21,6 +22,10 @@ export declare class DiagnosticManager {
|
|
|
21
22
|
logger: Logger;
|
|
22
23
|
options: FinalizedBsConfig;
|
|
23
24
|
program: Program;
|
|
25
|
+
private fileUriMap;
|
|
26
|
+
private tagMap;
|
|
27
|
+
private scopeMap;
|
|
28
|
+
private segmentMap;
|
|
24
29
|
/**
|
|
25
30
|
* Registers a diagnostic (or multiple diagnostics) for a program.
|
|
26
31
|
* Diagnostics can optionally be associated with a context
|
|
@@ -28,12 +33,13 @@ export declare class DiagnosticManager {
|
|
|
28
33
|
register(diagnostic: BsDiagnostic, context?: DiagnosticContext): any;
|
|
29
34
|
register(diagnostics: Array<BsDiagnostic>, context?: DiagnosticContext): any;
|
|
30
35
|
register(diagnostics: Array<DiagnosticContextPair>): any;
|
|
36
|
+
private addToMaps;
|
|
31
37
|
/**
|
|
32
38
|
* Returns a list of all diagnostics, filtered by the in-file comment filters, filtered by BsConfig diagnostics and adjusted based on BsConfig
|
|
33
39
|
* If the same diagnostic is included in multiple contexts, they are included in a single diagnostic's relatedInformation
|
|
34
40
|
*/
|
|
35
41
|
getDiagnostics(): BsDiagnostic[];
|
|
36
|
-
private
|
|
42
|
+
private getNonSuppressedDiagnostics;
|
|
37
43
|
/**
|
|
38
44
|
* Determine whether this diagnostic should be supressed or not, based on brs comment-flags
|
|
39
45
|
*/
|
|
@@ -44,13 +50,17 @@ export declare class DiagnosticManager {
|
|
|
44
50
|
clearForScope(scope: Scope): void;
|
|
45
51
|
clearForSegment(segment: AstNode): void;
|
|
46
52
|
clearForTag(tag: string): void;
|
|
53
|
+
private getSearchIntersection;
|
|
47
54
|
/**
|
|
48
55
|
* Clears all diagnostics that match all aspects of the filter provided
|
|
49
56
|
* Matches equality of tag, scope, file, segment filters. Leave filter option undefined to not filter on option
|
|
50
57
|
*/
|
|
51
58
|
clearByFilter(filter: DiagnosticContextFilter): void;
|
|
59
|
+
private deleteContextsFromDiagnostic;
|
|
60
|
+
private removeDiagnosticIfNoContexts;
|
|
52
61
|
private getDiagnosticKey;
|
|
53
62
|
private mergeRelatedInformation;
|
|
63
|
+
shouldFilterFile(file: BrsFile): boolean;
|
|
54
64
|
}
|
|
55
65
|
interface DiagnosticContextFilter {
|
|
56
66
|
tag?: string;
|