@zzzen/pyright-internal 1.2.0-dev.20230212 → 1.2.0-dev.20230219
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/dist/analyzer/backgroundAnalysisProgram.d.ts +1 -0
- package/dist/analyzer/backgroundAnalysisProgram.js +5 -0
- package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
- package/dist/analyzer/checker.js +7 -4
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/commentUtils.d.ts +6 -1
- package/dist/analyzer/commentUtils.js +100 -25
- package/dist/analyzer/commentUtils.js.map +1 -1
- package/dist/analyzer/declaration.d.ts +1 -0
- package/dist/analyzer/declaration.js.map +1 -1
- package/dist/analyzer/importStatementUtils.d.ts +1 -0
- package/dist/analyzer/importStatementUtils.js +14 -1
- package/dist/analyzer/importStatementUtils.js.map +1 -1
- package/dist/analyzer/parseTreeUtils.d.ts +5 -2
- package/dist/analyzer/parseTreeUtils.js +21 -3
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/patternMatching.js +25 -5
- package/dist/analyzer/patternMatching.js.map +1 -1
- package/dist/analyzer/program.d.ts +9 -2
- package/dist/analyzer/program.js +106 -8
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/service.d.ts +1 -4
- package/dist/analyzer/service.js +16 -36
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceFile.d.ts +4 -0
- package/dist/analyzer/sourceFile.js +82 -16
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/typeEvaluator.js +43 -15
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/backgroundAnalysisBase.d.ts +2 -1
- package/dist/backgroundAnalysisBase.js +15 -1
- package/dist/backgroundAnalysisBase.js.map +1 -1
- package/dist/backgroundThreadBase.js +1 -0
- package/dist/backgroundThreadBase.js.map +1 -1
- package/dist/common/commandLineOptions.d.ts +2 -0
- package/dist/common/commandLineOptions.js.map +1 -1
- package/dist/common/configOptions.d.ts +3 -0
- package/dist/common/configOptions.js +10 -1
- package/dist/common/configOptions.js.map +1 -1
- package/dist/common/core.d.ts +2 -0
- package/dist/common/core.js +9 -1
- package/dist/common/core.js.map +1 -1
- package/dist/common/diagnostic.d.ts +15 -3
- package/dist/common/diagnostic.js +13 -4
- package/dist/common/diagnostic.js.map +1 -1
- package/dist/common/editAction.d.ts +1 -0
- package/dist/common/editAction.js +8 -0
- package/dist/common/editAction.js.map +1 -1
- package/dist/common/extensibility.d.ts +34 -11
- package/dist/common/extensibility.js +63 -18
- package/dist/common/extensibility.js.map +1 -1
- package/dist/common/pathUtils.d.ts +3 -0
- package/dist/common/pathUtils.js +18 -0
- package/dist/common/pathUtils.js.map +1 -1
- package/dist/common/textEditUtils.d.ts +26 -9
- package/dist/common/textEditUtils.js +218 -41
- package/dist/common/textEditUtils.js.map +1 -1
- package/dist/languageServerBase.d.ts +3 -0
- package/dist/languageServerBase.js +90 -1
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/analyzerServiceExecutor.js +1 -0
- package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
- package/dist/languageService/definitionProvider.js +1 -1
- package/dist/languageService/definitionProvider.js.map +1 -1
- package/dist/languageService/documentSymbolCollector.js +1 -1
- package/dist/languageService/documentSymbolCollector.js.map +1 -1
- package/dist/languageService/hoverProvider.js +10 -6
- package/dist/languageService/hoverProvider.js.map +1 -1
- package/dist/languageService/importAdder.d.ts +4 -0
- package/dist/languageService/importAdder.js +50 -13
- package/dist/languageService/importAdder.js.map +1 -1
- package/dist/languageService/insertionPointUtils.js +28 -7
- package/dist/languageService/insertionPointUtils.js.map +1 -1
- package/dist/languageService/renameModuleProvider.d.ts +12 -10
- package/dist/languageService/renameModuleProvider.js +240 -229
- package/dist/languageService/renameModuleProvider.js.map +1 -1
- package/dist/localization/localize.d.ts +9 -0
- package/dist/localization/localize.js +5 -0
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.en-us.json +7 -1
- package/dist/tests/checker.test.js +5 -0
- package/dist/tests/checker.test.js.map +1 -1
- package/dist/tests/fourslash/hover.inferred.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/hover.inferred.fourslash.js +24 -0
- package/dist/tests/fourslash/hover.inferred.fourslash.js.map +1 -0
- package/dist/tests/importAdder.test.js +39 -2
- package/dist/tests/importAdder.test.js.map +1 -1
- package/dist/tests/insertionPointUtils.test.js +70 -3
- package/dist/tests/insertionPointUtils.test.js.map +1 -1
- package/dist/tests/{updateSymbolReference.test.d.ts → moveSymbol.importAdder.test.d.ts} +0 -0
- package/dist/tests/moveSymbol.importAdder.test.js +139 -0
- package/dist/tests/moveSymbol.importAdder.test.js.map +1 -0
- package/dist/tests/moveSymbol.insertion.test.d.ts +1 -0
- package/dist/tests/moveSymbol.insertion.test.js +360 -0
- package/dist/tests/moveSymbol.insertion.test.js.map +1 -0
- package/dist/tests/moveSymbol.misc.test.d.ts +1 -0
- package/dist/tests/moveSymbol.misc.test.js +37 -0
- package/dist/tests/moveSymbol.misc.test.js.map +1 -0
- package/dist/tests/moveSymbol.updateReference.test.d.ts +1 -0
- package/dist/tests/{updateSymbolReference.test.js → moveSymbol.updateReference.test.js} +235 -158
- package/dist/tests/moveSymbol.updateReference.test.js.map +1 -0
- package/dist/tests/parseTreeUtils.test.js +36 -13
- package/dist/tests/parseTreeUtils.test.js.map +1 -1
- package/dist/tests/renameModuleTestUtils.js +9 -3
- package/dist/tests/renameModuleTestUtils.js.map +1 -1
- package/dist/tests/testStateUtils.d.ts +2 -0
- package/dist/tests/testStateUtils.js +25 -22
- package/dist/tests/testStateUtils.js.map +1 -1
- package/dist/tests/textEditUtil.test.d.ts +1 -0
- package/dist/tests/textEditUtil.test.js +107 -0
- package/dist/tests/textEditUtil.test.js.map +1 -0
- package/dist/tests/typeEvaluator4.test.js +4 -0
- package/dist/tests/typeEvaluator4.test.js.map +1 -1
- package/dist/workspaceMap.d.ts +0 -1
- package/dist/workspaceMap.js +0 -11
- package/dist/workspaceMap.js.map +1 -1
- package/package.json +1 -1
- package/dist/tests/updateSymbolReference.test.js.map +0 -1
@@ -26,11 +26,12 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
26
26
|
return result;
|
27
27
|
};
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
29
|
-
exports.TextEditTracker = exports.convertEditActionsToWorkspaceEdit = exports.convertEditActionsToTextEdits = void 0;
|
29
|
+
exports.TextEditTracker = exports.applyTextEditActions = exports.convertEditActionsToWorkspaceEdit = exports.convertEditActionsToTextEdits = void 0;
|
30
30
|
const analyzerNodeInfo_1 = require("../analyzer/analyzerNodeInfo");
|
31
31
|
const importStatementUtils_1 = require("../analyzer/importStatementUtils");
|
32
32
|
const ParseTreeUtils = __importStar(require("../analyzer/parseTreeUtils"));
|
33
33
|
const debug = __importStar(require("../common/debug"));
|
34
|
+
const editAction_1 = require("../common/editAction");
|
34
35
|
const collectionUtils_1 = require("./collectionUtils");
|
35
36
|
const core_1 = require("./core");
|
36
37
|
const positionUtils_1 = require("./positionUtils");
|
@@ -54,50 +55,116 @@ function convertEditActionsToWorkspaceEdit(uri, editActions) {
|
|
54
55
|
};
|
55
56
|
}
|
56
57
|
exports.convertEditActionsToWorkspaceEdit = convertEditActionsToWorkspaceEdit;
|
58
|
+
function applyTextEditActions(text, edits, lines) {
|
59
|
+
const editsWithOffset = edits
|
60
|
+
.map((e) => {
|
61
|
+
var _a;
|
62
|
+
return ({
|
63
|
+
range: (_a = (0, positionUtils_1.convertRangeToTextRange)(e.range, lines)) !== null && _a !== void 0 ? _a : { start: text.length, length: 0 },
|
64
|
+
text: e.replacementText,
|
65
|
+
});
|
66
|
+
})
|
67
|
+
.sort((e1, e2) => {
|
68
|
+
const result = e2.range.start - e1.range.start;
|
69
|
+
if (result !== 0) {
|
70
|
+
return result;
|
71
|
+
}
|
72
|
+
return textRange_1.TextRange.getEnd(e2.range) - textRange_1.TextRange.getEnd(e1.range);
|
73
|
+
});
|
74
|
+
// Apply change in reverse order.
|
75
|
+
let current = text;
|
76
|
+
for (const change of editsWithOffset) {
|
77
|
+
current = current.substr(0, change.range.start) + change.text + current.substr(textRange_1.TextRange.getEnd(change.range));
|
78
|
+
}
|
79
|
+
return current;
|
80
|
+
}
|
81
|
+
exports.applyTextEditActions = applyTextEditActions;
|
57
82
|
class TextEditTracker {
|
58
|
-
constructor() {
|
59
|
-
this.
|
83
|
+
constructor(_mergeOnlyDuplications = true) {
|
84
|
+
this._mergeOnlyDuplications = _mergeOnlyDuplications;
|
85
|
+
this._nodesRemoved = new Map();
|
60
86
|
this._results = new Map();
|
87
|
+
this._pendingNodeToRemove = [];
|
88
|
+
// Empty
|
61
89
|
}
|
62
90
|
addEdits(...edits) {
|
63
91
|
edits.forEach((e) => this.addEdit(e.filePath, e.range, e.replacementText));
|
64
92
|
}
|
65
93
|
addEdit(filePath, range, replacementText) {
|
66
94
|
const edits = (0, collectionUtils_1.getOrAdd)(this._results, filePath, () => []);
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
95
|
+
// If there is any overlapping edit, see whether we can merge edits.
|
96
|
+
// We can merge edits, if one of them is 'deletion' or 2 edits has the same
|
97
|
+
// replacement text with containing range.
|
98
|
+
const overlappingEdits = this._getEditsToMerge(edits, range, replacementText);
|
99
|
+
if (overlappingEdits.length > 0) {
|
100
|
+
// Merge the given edit with the existing edits by
|
101
|
+
// first deleting existing edits and expanding the current edit's range
|
102
|
+
// to cover all existing edits.
|
103
|
+
this._removeEdits(edits, overlappingEdits);
|
104
|
+
(0, textRange_1.extendRange)(range, overlappingEdits.map((d) => d.range));
|
76
105
|
}
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
106
|
+
edits.push({ filePath, range, replacementText });
|
107
|
+
}
|
108
|
+
addEditWithTextRange(parseResults, range, replacementText) {
|
109
|
+
const filePath = (0, analyzerNodeInfo_1.getFileInfo)(parseResults.parseTree).filePath;
|
110
|
+
const existing = parseResults.text.substr(range.start, range.length);
|
111
|
+
if (existing === replacementText) {
|
112
|
+
// No change. Return as it is.
|
81
113
|
return;
|
82
114
|
}
|
83
|
-
|
115
|
+
this.addEdit(filePath, (0, positionUtils_1.convertTextRangeToRange)(range, parseResults.tokenizerOutput.lines), replacementText);
|
84
116
|
}
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
117
|
+
deleteImportName(parseResults, importToDelete) {
|
118
|
+
// TODO: remove all these manual text handling and merge it to _processNodeRemoved that is
|
119
|
+
// used by remove unused imports.
|
120
|
+
const imports = importToDelete.nodeType === 21 /* ImportAs */
|
121
|
+
? importToDelete.parent.list
|
122
|
+
: importToDelete.parent.imports;
|
123
|
+
const filePath = (0, analyzerNodeInfo_1.getFileInfo)(parseResults.parseTree).filePath;
|
124
|
+
const ranges = (0, importStatementUtils_1.getTextRangeForImportNameDeletion)(imports, imports.findIndex((v) => v === importToDelete));
|
125
|
+
ranges.forEach((r) => this.addEditWithTextRange(parseResults, r, ''));
|
126
|
+
this._markNodeRemoved(importToDelete, parseResults);
|
127
|
+
// Check whether we have deleted all trailing import names.
|
128
|
+
// If either no trailing import is deleted or handled properly
|
129
|
+
// then, there is nothing to do. otherwise, either delete the whole statement
|
130
|
+
// or remove trailing comma.
|
131
|
+
// ex) from x import [y], z or from x import y[, z]
|
132
|
+
let lastImportIndexNotDeleted = 0;
|
133
|
+
for (lastImportIndexNotDeleted = imports.length - 1; lastImportIndexNotDeleted >= 0; lastImportIndexNotDeleted--) {
|
134
|
+
if (!this._nodesRemoved.has(imports[lastImportIndexNotDeleted])) {
|
135
|
+
break;
|
136
|
+
}
|
137
|
+
}
|
138
|
+
if (lastImportIndexNotDeleted === -1) {
|
139
|
+
// Whole statement is deleted. Remove the statement itself.
|
140
|
+
// ex) [from x import a, b, c] or [import a]
|
141
|
+
const importStatement = importToDelete.parent;
|
142
|
+
if (importStatement) {
|
143
|
+
this.addEdit(filePath, ParseTreeUtils.getFullStatementRange(importStatement, parseResults), '');
|
144
|
+
}
|
145
|
+
}
|
146
|
+
else if (lastImportIndexNotDeleted >= 0 && lastImportIndexNotDeleted < imports.length - 2) {
|
147
|
+
// We need to delete trailing comma
|
148
|
+
// ex) from x import a, [b, c]
|
149
|
+
const start = textRange_1.TextRange.getEnd(imports[lastImportIndexNotDeleted]);
|
150
|
+
const length = textRange_1.TextRange.getEnd(imports[lastImportIndexNotDeleted + 1]) - start;
|
151
|
+
this.addEditWithTextRange(parseResults, { start, length }, '');
|
89
152
|
}
|
90
|
-
return filePathOrEdit.filter((e) => e.replacementText === '' && (0, textRange_1.doRangesIntersect)(e.range, range));
|
91
153
|
}
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
154
|
+
addOrUpdateImport(parseResults, importStatements, moduleNameInfo, importGroup, importNameInfo, updateOptions) {
|
155
|
+
// TODO: remove all these manual text handling and merge it to _processNodeRemoved that is
|
156
|
+
// used by remove unused imports.
|
157
|
+
if (importNameInfo &&
|
158
|
+
this._tryUpdateImport(parseResults, importStatements, moduleNameInfo, importNameInfo, updateOptions)) {
|
159
|
+
return;
|
96
160
|
}
|
97
|
-
(
|
161
|
+
this._addImport(parseResults, importStatements, moduleNameInfo, importGroup, importNameInfo);
|
98
162
|
}
|
99
163
|
removeNodes(...nodes) {
|
100
|
-
this.
|
164
|
+
this._pendingNodeToRemove.push(...nodes);
|
165
|
+
}
|
166
|
+
isNodeRemoved(node) {
|
167
|
+
return this._nodesRemoved.has(node);
|
101
168
|
}
|
102
169
|
getEdits(token) {
|
103
170
|
this._processNodeRemoved(token);
|
@@ -105,39 +172,131 @@ class TextEditTracker {
|
|
105
172
|
this._results.forEach((v) => (0, collectionUtils_1.appendArray)(edits, v));
|
106
173
|
return edits;
|
107
174
|
}
|
175
|
+
_addImport(parseResults, importStatements, moduleNameInfo, importGroup, importNameInfo) {
|
176
|
+
const filePath = (0, analyzerNodeInfo_1.getFileInfo)(parseResults.parseTree).filePath;
|
177
|
+
this.addEdits(...(0, importStatementUtils_1.getTextEditsForAutoImportInsertion)(importNameInfo !== null && importNameInfo !== void 0 ? importNameInfo : [], moduleNameInfo, importStatements, importGroup, parseResults, (0, positionUtils_1.convertOffsetToPosition)(parseResults.parseTree.length, parseResults.tokenizerOutput.lines)).map((e) => ({ filePath, range: e.range, replacementText: e.replacementText })));
|
178
|
+
}
|
179
|
+
_tryUpdateImport(parseResults, importStatements, moduleNameInfo, importNameInfo, updateOptions) {
|
180
|
+
if (!updateOptions) {
|
181
|
+
return false;
|
182
|
+
}
|
183
|
+
// See whether we have existing from import statement for the same module
|
184
|
+
// ex) from [|moduleName|] import subModule
|
185
|
+
const imported = importStatements.orderedImports.find((i) => i.node.nodeType === 22 /* ImportFrom */ &&
|
186
|
+
(i.moduleName === moduleNameInfo.nameForImportFrom || i.moduleName === moduleNameInfo.name));
|
187
|
+
if (!imported || imported.node.nodeType !== 22 /* ImportFrom */ || imported.node.isWildcardImport) {
|
188
|
+
return false;
|
189
|
+
}
|
190
|
+
const filePath = (0, analyzerNodeInfo_1.getFileInfo)(parseResults.parseTree).filePath;
|
191
|
+
const edits = (0, importStatementUtils_1.getTextEditsForAutoImportSymbolAddition)(importNameInfo, imported, parseResults);
|
192
|
+
if (imported.node !== updateOptions.currentFromImport) {
|
193
|
+
// Add what we want to the existing "import from" statement as long as it is not the same import
|
194
|
+
// node we are working on.
|
195
|
+
// ex) from xxx import yyy <= we are working on here.
|
196
|
+
// from xxx import zzz <= but we found this.
|
197
|
+
this.addEdits(...edits.map((e) => ({ filePath, range: e.range, replacementText: e.replacementText })));
|
198
|
+
return true;
|
199
|
+
}
|
200
|
+
const moduleNames = updateOptions.originalModuleName.split('.');
|
201
|
+
const newModuleNames = moduleNameInfo.name.split('.');
|
202
|
+
if (!(0, importStatementUtils_1.haveSameParentModule)(moduleNames, newModuleNames)) {
|
203
|
+
// Module has moved.
|
204
|
+
return false;
|
205
|
+
}
|
206
|
+
// Check whether we can avoid creating a new statement. We can't just merge with existing one since
|
207
|
+
// we could create invalid text edits (2 edits that change the same span, or invalid replacement text since
|
208
|
+
// texts on the node has changed)
|
209
|
+
if (importNameInfo.length !== 1 || edits.length !== 1) {
|
210
|
+
return false;
|
211
|
+
}
|
212
|
+
const deletions = this._getDeletionsForSpan(filePath, edits[0].range);
|
213
|
+
if (deletions.length === 0) {
|
214
|
+
this.addEdit(filePath, edits[0].range, edits[0].replacementText);
|
215
|
+
return true;
|
216
|
+
}
|
217
|
+
const lastModuleName = moduleNames[moduleNames.length - 1];
|
218
|
+
const newLastModuleName = newModuleNames[newModuleNames.length - 1];
|
219
|
+
const alias = importNameInfo[0].alias === newLastModuleName ? lastModuleName : importNameInfo[0].alias;
|
220
|
+
const importName = updateOptions.currentFromImport.imports.find((i) => { var _a; return i.name.value === lastModuleName && ((_a = i.alias) === null || _a === void 0 ? void 0 : _a.value) === alias; });
|
221
|
+
if (!importName) {
|
222
|
+
return false;
|
223
|
+
}
|
224
|
+
this._removeEdits(filePath, deletions);
|
225
|
+
if (importName.alias) {
|
226
|
+
this._nodesRemoved.delete(importName.alias);
|
227
|
+
}
|
228
|
+
this.addEdit(filePath, (0, positionUtils_1.convertTextRangeToRange)(importName.name, parseResults.tokenizerOutput.lines), newLastModuleName);
|
229
|
+
return true;
|
230
|
+
}
|
231
|
+
_getDeletionsForSpan(filePathOrEdit, range) {
|
232
|
+
const edits = this._getOverlappingForSpan(filePathOrEdit, range);
|
233
|
+
return edits.filter((e) => e.replacementText === '');
|
234
|
+
}
|
235
|
+
_removeEdits(filePathOrEdit, edits) {
|
236
|
+
var _a;
|
237
|
+
if ((0, core_1.isString)(filePathOrEdit)) {
|
238
|
+
filePathOrEdit = (_a = this._results.get(filePathOrEdit)) !== null && _a !== void 0 ? _a : [];
|
239
|
+
}
|
240
|
+
(0, collectionUtils_1.removeArrayElements)(filePathOrEdit, (f) => edits.some((e) => editAction_1.FileEditAction.areEqual(f, e)));
|
241
|
+
}
|
242
|
+
_getEditsToMerge(edits, range, replacementText) {
|
243
|
+
const overlappingEdits = this._getOverlappingForSpan(edits, range);
|
244
|
+
if (this._mergeOnlyDuplications && overlappingEdits.length > 0) {
|
245
|
+
// Merge duplicated deletion. For deletion, we can even merge edits
|
246
|
+
// intersecting each other.
|
247
|
+
if (replacementText === '') {
|
248
|
+
return overlappingEdits.filter((e) => e.replacementText === '');
|
249
|
+
}
|
250
|
+
// Merge duplicated edits as long as one of them contains the other.
|
251
|
+
return overlappingEdits.filter((e) => e.replacementText === replacementText &&
|
252
|
+
((0, textRange_1.doesRangeContain)(range, e.range) || (0, textRange_1.doesRangeContain)(e.range, range)));
|
253
|
+
}
|
254
|
+
// We are allowed to merge more than exact duplication. If the existing edit
|
255
|
+
// is deletion or duplicated text with containing ranges, merge them to 1.
|
256
|
+
return overlappingEdits.filter((e) => e.replacementText === '' ||
|
257
|
+
(e.replacementText === replacementText &&
|
258
|
+
((0, textRange_1.doesRangeContain)(range, e.range) || (0, textRange_1.doesRangeContain)(e.range, range))));
|
259
|
+
}
|
260
|
+
_getOverlappingForSpan(filePathOrEdit, range) {
|
261
|
+
var _a;
|
262
|
+
if ((0, core_1.isString)(filePathOrEdit)) {
|
263
|
+
filePathOrEdit = (_a = this._results.get(filePathOrEdit)) !== null && _a !== void 0 ? _a : [];
|
264
|
+
}
|
265
|
+
return filePathOrEdit.filter((e) => (0, textRange_1.doRangesIntersect)(e.range, range));
|
266
|
+
}
|
108
267
|
_processNodeRemoved(token) {
|
109
|
-
while (this.
|
110
|
-
const numberOfNodesBeforeProcessing = this.
|
111
|
-
const peekNodeToRemove = this.
|
268
|
+
while (this._pendingNodeToRemove.length > 0) {
|
269
|
+
const numberOfNodesBeforeProcessing = this._pendingNodeToRemove.length;
|
270
|
+
const peekNodeToRemove = this._pendingNodeToRemove[this._pendingNodeToRemove.length - 1];
|
112
271
|
this._handleImportNameNode(peekNodeToRemove, token);
|
113
|
-
if (this.
|
272
|
+
if (this._pendingNodeToRemove.length === numberOfNodesBeforeProcessing) {
|
114
273
|
// It looks like we don't know how to handle the node,
|
115
274
|
// Please add code to handle the case.
|
116
275
|
debug.assert(`please add handler for ${peekNodeToRemove.node.nodeType}`);
|
117
276
|
// As a default behavior, we will just remove the node
|
118
|
-
this.
|
277
|
+
this._pendingNodeToRemove.pop();
|
119
278
|
const info = (0, analyzerNodeInfo_1.getFileInfo)(peekNodeToRemove.parseResults.parseTree);
|
120
279
|
this.addEdit(info.filePath, (0, positionUtils_1.convertTextRangeToRange)(peekNodeToRemove.node, info.lines), '');
|
121
280
|
}
|
122
281
|
}
|
123
282
|
}
|
124
|
-
_handleImportNameNode(
|
125
|
-
const
|
126
|
-
if (
|
283
|
+
_handleImportNameNode(nodeToRemove, token) {
|
284
|
+
const node = nodeToRemove.node;
|
285
|
+
if (node.nodeType !== 38 /* Name */) {
|
127
286
|
return false;
|
128
287
|
}
|
129
|
-
const module =
|
288
|
+
const module = nodeToRemove.parseResults.parseTree;
|
130
289
|
const info = (0, analyzerNodeInfo_1.getFileInfo)(module);
|
131
|
-
const importNode = (0, importStatementUtils_1.getContainingImportStatement)(ParseTreeUtils.findNodeByOffset(module,
|
290
|
+
const importNode = (0, importStatementUtils_1.getContainingImportStatement)(ParseTreeUtils.findNodeByOffset(module, node.start), token);
|
132
291
|
if (!importNode) {
|
133
292
|
return false;
|
134
293
|
}
|
135
294
|
const nameNodes = (0, importStatementUtils_1.getAllImportNames)(importNode);
|
136
295
|
// check various different cases
|
137
296
|
// 1. check whether all imported names in the import statement is not used.
|
138
|
-
const nodesRemoved = this.
|
297
|
+
const nodesRemoved = this._pendingNodeToRemove.filter((nodeToRemove) => nameNodes.some((n) => textRange_1.TextRange.overlapsRange(nodeToRemove.node, n)));
|
139
298
|
if (nameNodes.length === nodesRemoved.length) {
|
140
|
-
this.addEdit(info.filePath, ParseTreeUtils.getFullStatementRange(importNode,
|
299
|
+
this.addEdit(info.filePath, ParseTreeUtils.getFullStatementRange(importNode, nodeToRemove.parseResults), '');
|
141
300
|
// Remove nodes that are handled from queue.
|
142
301
|
this._removeNodesHandled(nodesRemoved);
|
143
302
|
return true;
|
@@ -160,7 +319,25 @@ class TextEditTracker {
|
|
160
319
|
return true;
|
161
320
|
}
|
162
321
|
_removeNodesHandled(nodesRemoved) {
|
163
|
-
|
322
|
+
nodesRemoved.forEach((n) => this._markNodeRemoved(n.node, n.parseResults));
|
323
|
+
(0, collectionUtils_1.removeArrayElements)(this._pendingNodeToRemove, (n) => this._nodesRemoved.has(n.node));
|
324
|
+
}
|
325
|
+
_markNodeRemoved(nodeToDelete, parseResults) {
|
326
|
+
// Mark that we don't need to process these node again later.
|
327
|
+
this._nodesRemoved.set(nodeToDelete, parseResults);
|
328
|
+
if (nodeToDelete.nodeType === 21 /* ImportAs */) {
|
329
|
+
this._nodesRemoved.set(nodeToDelete.module, parseResults);
|
330
|
+
nodeToDelete.module.nameParts.forEach((n) => this._nodesRemoved.set(n, parseResults));
|
331
|
+
if (nodeToDelete.alias) {
|
332
|
+
this._nodesRemoved.set(nodeToDelete.alias, parseResults);
|
333
|
+
}
|
334
|
+
}
|
335
|
+
else if (nodeToDelete.nodeType === 23 /* ImportFromAs */) {
|
336
|
+
this._nodesRemoved.set(nodeToDelete.name, parseResults);
|
337
|
+
if (nodeToDelete.alias) {
|
338
|
+
this._nodesRemoved.set(nodeToDelete.alias, parseResults);
|
339
|
+
}
|
340
|
+
}
|
164
341
|
}
|
165
342
|
}
|
166
343
|
exports.TextEditTracker = TextEditTracker;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"textEditUtils.js","sourceRoot":"","sources":["../../../src/common/textEditUtils.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"textEditUtils.js","sourceRoot":"","sources":["../../../src/common/textEditUtils.ts"],"names":[],"mappings":"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"}
|
@@ -13,6 +13,7 @@ import { CancellationProvider } from './common/cancellationUtils';
|
|
13
13
|
import { DiagnosticSeverityOverrides, DiagnosticSeverityOverridesMap } from './common/commandLineOptions';
|
14
14
|
import { ConfigOptions, SignatureDisplayType } from './common/configOptions';
|
15
15
|
import { ConsoleInterface, LogLevel } from './common/console';
|
16
|
+
import { TaskListToken } from './common/diagnostic';
|
16
17
|
import { DiagnosticRule } from './common/diagnosticRules';
|
17
18
|
import { FileDiagnostics } from './common/diagnosticSink';
|
18
19
|
import { FileSystem, FileWatcherHandler } from './common/fileSystem';
|
@@ -48,6 +49,7 @@ export interface ServerSettings {
|
|
48
49
|
fileSpecs?: string[];
|
49
50
|
excludeFileSpecs?: string[];
|
50
51
|
ignoreFileSpecs?: string[];
|
52
|
+
taskListTokens?: TaskListToken[];
|
51
53
|
functionSignatureDisplay?: SignatureDisplayType | undefined;
|
52
54
|
}
|
53
55
|
export declare enum WellKnownWorkspaceKinds {
|
@@ -139,6 +141,7 @@ interface ClientCapabilities {
|
|
139
141
|
signatureDocFormat: MarkupKind;
|
140
142
|
supportsDeprecatedDiagnosticTag: boolean;
|
141
143
|
supportsUnnecessaryDiagnosticTag: boolean;
|
144
|
+
supportsTaskItemDiagnosticTag: boolean;
|
142
145
|
completionItemResolveSupportsAdditionalTextEdits: boolean;
|
143
146
|
}
|
144
147
|
export declare abstract class LanguageServerBase implements LanguageServerInterface {
|
@@ -25,6 +25,8 @@ const commandLineOptions_1 = require("./common/commandLineOptions");
|
|
25
25
|
const configOptions_1 = require("./common/configOptions");
|
26
26
|
const console_1 = require("./common/console");
|
27
27
|
const deferred_1 = require("./common/deferred");
|
28
|
+
const diagnostic_1 = require("./common/diagnostic");
|
29
|
+
const extensibility_1 = require("./common/extensibility");
|
28
30
|
const lspUtils_1 = require("./common/lspUtils");
|
29
31
|
const pathUtils_1 = require("./common/pathUtils");
|
30
32
|
const progressReporter_1 = require("./common/progressReporter");
|
@@ -77,6 +79,64 @@ function createInitStatus() {
|
|
77
79
|
}
|
78
80
|
exports.createInitStatus = createInitStatus;
|
79
81
|
const nullProgressReporter = (0, progress_1.attachWorkDone)(undefined, /* params */ undefined);
|
82
|
+
/*
|
83
|
+
* Additional DiagnosticTag values that are specific to Visual Studio.
|
84
|
+
* These must match the values in https://dev.azure.com/devdiv/DevDiv/_git/vslanguageserverclient?path=%2Fsrc%2Fproduct%2FProtocol%2FLanguageServer.Protocol.Extensions%2FVSDiagnosticTags.cs&version=GBdevelop&_a=contents
|
85
|
+
*/
|
86
|
+
var VSDiagnosticTag;
|
87
|
+
(function (VSDiagnosticTag) {
|
88
|
+
/**
|
89
|
+
* A diagnostic entry generated by the build.
|
90
|
+
*/
|
91
|
+
VSDiagnosticTag.BuildError = -1;
|
92
|
+
/**
|
93
|
+
* A diagnostic entry generated by Intellisense.
|
94
|
+
*/
|
95
|
+
VSDiagnosticTag.IntellisenseError = -2;
|
96
|
+
/**
|
97
|
+
* A diagnostic entry that could be generated from both builds and Intellisense.
|
98
|
+
*
|
99
|
+
* Diagnostic entries tagged with PotentialDuplicate will be hidden
|
100
|
+
* in the error list if the error list is displaying build and intellisense errors.
|
101
|
+
*/
|
102
|
+
VSDiagnosticTag.PotentialDuplicate = -3;
|
103
|
+
/**
|
104
|
+
* A diagnostic entry that is never displayed in the error list.
|
105
|
+
*/
|
106
|
+
VSDiagnosticTag.HiddenInErrorList = -4;
|
107
|
+
/**
|
108
|
+
* A diagnostic entry that is always displayed in the error list.
|
109
|
+
*/
|
110
|
+
VSDiagnosticTag.VisibleInErrorList = -5;
|
111
|
+
/**
|
112
|
+
* A diagnostic entry that is never displayed in the editor.
|
113
|
+
*/
|
114
|
+
VSDiagnosticTag.HiddenInEditor = -6;
|
115
|
+
/**
|
116
|
+
* No tooltip is shown for the Diagnostic entry in the editor.
|
117
|
+
*/
|
118
|
+
VSDiagnosticTag.SuppressEditorToolTip = -7;
|
119
|
+
/**
|
120
|
+
* A diagnostic entry that is represented in the editor as an Edit and Continue error.
|
121
|
+
*/
|
122
|
+
VSDiagnosticTag.EditAndContinueError = -8;
|
123
|
+
/**
|
124
|
+
* A diagnostic entry that is represented in the editor as a Task List item (View -> Task List)
|
125
|
+
*/
|
126
|
+
VSDiagnosticTag.TaskItem = -9;
|
127
|
+
})(VSDiagnosticTag || (VSDiagnosticTag = {}));
|
128
|
+
/*
|
129
|
+
* DiagnosticRank values that are specific to Visual Studio.
|
130
|
+
* These must match the values in https://dev.azure.com/devdiv/DevDiv/_git/vslanguageserverclient?path=/src/product/Protocol/LanguageServer.Protocol.Extensions/VSDiagnosticRank.cs&version=GBdevelop&_a=contents
|
131
|
+
*/
|
132
|
+
var VSDiagnosticRank;
|
133
|
+
(function (VSDiagnosticRank) {
|
134
|
+
VSDiagnosticRank.Highest = 100;
|
135
|
+
VSDiagnosticRank.High = 200;
|
136
|
+
VSDiagnosticRank.Default = 300;
|
137
|
+
VSDiagnosticRank.Low = 400;
|
138
|
+
VSDiagnosticRank.Lowest = 500;
|
139
|
+
})(VSDiagnosticRank || (VSDiagnosticRank = {}));
|
80
140
|
class LanguageServerBase {
|
81
141
|
constructor(_serverOptions, _connection, console, uriParserFactory = (fs) => new uriParser_1.UriParser(fs)) {
|
82
142
|
var _a, _b;
|
@@ -106,6 +166,7 @@ class LanguageServerBase {
|
|
106
166
|
signatureDocFormat: vscode_languageserver_1.MarkupKind.PlainText,
|
107
167
|
supportsDeprecatedDiagnosticTag: false,
|
108
168
|
supportsUnnecessaryDiagnosticTag: false,
|
169
|
+
supportsTaskItemDiagnosticTag: false,
|
109
170
|
completionItemResolveSupportsAdditionalTextEdits: false,
|
110
171
|
};
|
111
172
|
// Stash the base directory into a global variable.
|
@@ -129,6 +190,8 @@ class LanguageServerBase {
|
|
129
190
|
this._progressReporter = new progressReporter_1.ProgressReportTracker(this.createProgressReporter());
|
130
191
|
// Listen on the connection.
|
131
192
|
this._connection.listen();
|
193
|
+
// Setup extensions
|
194
|
+
extensibility_1.Extensions.createLanguageServiceExtensions(this);
|
132
195
|
}
|
133
196
|
// Convert uri to path
|
134
197
|
decodeTextDocumentUri(uriString) {
|
@@ -265,7 +328,7 @@ class LanguageServerBase {
|
|
265
328
|
this.client.hasWatchFileRelativePathCapability =
|
266
329
|
!!((_e = (_d = capabilities.workspace) === null || _d === void 0 ? void 0 : _d.didChangeWatchedFiles) === null || _e === void 0 ? void 0 : _e.relativePatternSupport);
|
267
330
|
this.client.hasWorkspaceFoldersCapability = !!((_f = capabilities.workspace) === null || _f === void 0 ? void 0 : _f.workspaceFolders);
|
268
|
-
this.client.hasVisualStudioExtensionsCapability = !!capabilities.
|
331
|
+
this.client.hasVisualStudioExtensionsCapability = !!capabilities._vs_supportsVisualStudioExtensions;
|
269
332
|
this.client.hasActiveParameterCapability =
|
270
333
|
!!((_j = (_h = (_g = capabilities.textDocument) === null || _g === void 0 ? void 0 : _g.signatureHelp) === null || _h === void 0 ? void 0 : _h.signatureInformation) === null || _j === void 0 ? void 0 : _j.activeParameterSupport);
|
271
334
|
this.client.hasSignatureLabelOffsetCapability =
|
@@ -286,6 +349,8 @@ class LanguageServerBase {
|
|
286
349
|
const supportedDiagnosticTags = ((_13 = (_12 = (_11 = capabilities.textDocument) === null || _11 === void 0 ? void 0 : _11.publishDiagnostics) === null || _12 === void 0 ? void 0 : _12.tagSupport) === null || _13 === void 0 ? void 0 : _13.valueSet) || [];
|
287
350
|
this.client.supportsUnnecessaryDiagnosticTag = supportedDiagnosticTags.some((tag) => tag === vscode_languageserver_1.DiagnosticTag.Unnecessary);
|
288
351
|
this.client.supportsDeprecatedDiagnosticTag = supportedDiagnosticTags.some((tag) => tag === vscode_languageserver_1.DiagnosticTag.Deprecated);
|
352
|
+
// if the client is running in VS, it always supports task item diagnostics
|
353
|
+
this.client.supportsTaskItemDiagnosticTag = this.client.hasVisualStudioExtensionsCapability;
|
289
354
|
this.client.hasWindowProgressCapability = !!((_14 = capabilities.window) === null || _14 === void 0 ? void 0 : _14.workDoneProgress);
|
290
355
|
this.client.hasGoToDeclarationCapability = !!((_15 = capabilities.textDocument) === null || _15 === void 0 ? void 0 : _15.declaration);
|
291
356
|
this.client.completionItemResolveSupportsAdditionalTextEdits =
|
@@ -955,6 +1020,29 @@ class LanguageServerBase {
|
|
955
1020
|
return;
|
956
1021
|
}
|
957
1022
|
}
|
1023
|
+
else if (diag.category === 6 /* TaskItem */) {
|
1024
|
+
vsDiag.tags = [VSDiagnosticTag.TaskItem];
|
1025
|
+
// Map the task item priority to a value VS will understand
|
1026
|
+
// and store it in the diagnostic.
|
1027
|
+
// The Diagnostic type is defined in a protocol that we can't change,
|
1028
|
+
// so we just dynamically create the vsDiag._vs_diagnosticRank property at runtime,
|
1029
|
+
// which is what VS is looking for.
|
1030
|
+
switch (diag.priority) {
|
1031
|
+
case diagnostic_1.TaskListPriority.High:
|
1032
|
+
vsDiag._vs_diagnosticRank = VSDiagnosticRank.High;
|
1033
|
+
break;
|
1034
|
+
case diagnostic_1.TaskListPriority.Normal:
|
1035
|
+
vsDiag._vs_diagnosticRank = VSDiagnosticRank.Default;
|
1036
|
+
break;
|
1037
|
+
case diagnostic_1.TaskListPriority.Low:
|
1038
|
+
vsDiag._vs_diagnosticRank = VSDiagnosticRank.Low;
|
1039
|
+
break;
|
1040
|
+
}
|
1041
|
+
// if the client doesn't support "taskitem" tags, don't report.
|
1042
|
+
if (!this.client.supportsTaskItemDiagnosticTag) {
|
1043
|
+
return;
|
1044
|
+
}
|
1045
|
+
}
|
958
1046
|
if (rule) {
|
959
1047
|
const ruleDocUrl = this.getDocumentationUrlForDiagnosticRule(rule);
|
960
1048
|
if (ruleDocUrl) {
|
@@ -978,6 +1066,7 @@ class LanguageServerBase {
|
|
978
1066
|
case 1 /* Warning */:
|
979
1067
|
return vscode_languageserver_1.DiagnosticSeverity.Warning;
|
980
1068
|
case 2 /* Information */:
|
1069
|
+
case 6 /* TaskItem */: // task items only show up in the task list if they are information or above.
|
981
1070
|
return vscode_languageserver_1.DiagnosticSeverity.Information;
|
982
1071
|
case 3 /* UnusedCode */:
|
983
1072
|
case 4 /* UnreachableCode */:
|