@zzzen/pyright-internal 1.2.0-dev.20230212 → 1.2.0-dev.20230226

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.
Files changed (170) hide show
  1. package/dist/analyzer/backgroundAnalysisProgram.d.ts +1 -0
  2. package/dist/analyzer/backgroundAnalysisProgram.js +5 -0
  3. package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
  4. package/dist/analyzer/binder.js +9 -1
  5. package/dist/analyzer/binder.js.map +1 -1
  6. package/dist/analyzer/checker.js +12 -6
  7. package/dist/analyzer/checker.js.map +1 -1
  8. package/dist/analyzer/codeFlowEngine.js +1 -1
  9. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  10. package/dist/analyzer/commentUtils.d.ts +6 -1
  11. package/dist/analyzer/commentUtils.js +100 -25
  12. package/dist/analyzer/commentUtils.js.map +1 -1
  13. package/dist/analyzer/constraintSolver.js +0 -10
  14. package/dist/analyzer/constraintSolver.js.map +1 -1
  15. package/dist/analyzer/declaration.d.ts +2 -0
  16. package/dist/analyzer/declaration.js.map +1 -1
  17. package/dist/analyzer/importResolver.d.ts +3 -2
  18. package/dist/analyzer/importResolver.js +28 -19
  19. package/dist/analyzer/importResolver.js.map +1 -1
  20. package/dist/analyzer/importStatementUtils.d.ts +1 -0
  21. package/dist/analyzer/importStatementUtils.js +14 -1
  22. package/dist/analyzer/importStatementUtils.js.map +1 -1
  23. package/dist/analyzer/parseTreeUtils.d.ts +5 -2
  24. package/dist/analyzer/parseTreeUtils.js +21 -3
  25. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  26. package/dist/analyzer/patternMatching.d.ts +1 -0
  27. package/dist/analyzer/patternMatching.js +54 -6
  28. package/dist/analyzer/patternMatching.js.map +1 -1
  29. package/dist/analyzer/program.d.ts +11 -4
  30. package/dist/analyzer/program.js +122 -25
  31. package/dist/analyzer/program.js.map +1 -1
  32. package/dist/analyzer/properties.js +5 -1
  33. package/dist/analyzer/properties.js.map +1 -1
  34. package/dist/analyzer/protocols.js +4 -3
  35. package/dist/analyzer/protocols.js.map +1 -1
  36. package/dist/analyzer/service.d.ts +7 -6
  37. package/dist/analyzer/service.js +31 -39
  38. package/dist/analyzer/service.js.map +1 -1
  39. package/dist/analyzer/sourceFile.d.ts +4 -0
  40. package/dist/analyzer/sourceFile.js +85 -16
  41. package/dist/analyzer/sourceFile.js.map +1 -1
  42. package/dist/analyzer/typeEvaluator.js +127 -76
  43. package/dist/analyzer/typeEvaluator.js.map +1 -1
  44. package/dist/backgroundAnalysisBase.d.ts +2 -2
  45. package/dist/backgroundAnalysisBase.js +21 -8
  46. package/dist/backgroundAnalysisBase.js.map +1 -1
  47. package/dist/backgroundThreadBase.js +1 -0
  48. package/dist/backgroundThreadBase.js.map +1 -1
  49. package/dist/commands/commandController.js +1 -0
  50. package/dist/commands/commandController.js.map +1 -1
  51. package/dist/commands/quickActionCommand.js +2 -2
  52. package/dist/commands/quickActionCommand.js.map +1 -1
  53. package/dist/common/cancellationUtils.d.ts +18 -2
  54. package/dist/common/cancellationUtils.js +80 -3
  55. package/dist/common/cancellationUtils.js.map +1 -1
  56. package/dist/common/commandLineOptions.d.ts +2 -0
  57. package/dist/common/commandLineOptions.js.map +1 -1
  58. package/dist/common/configOptions.d.ts +3 -0
  59. package/dist/common/configOptions.js +10 -1
  60. package/dist/common/configOptions.js.map +1 -1
  61. package/dist/common/core.d.ts +2 -0
  62. package/dist/common/core.js +9 -1
  63. package/dist/common/core.js.map +1 -1
  64. package/dist/common/diagnostic.d.ts +15 -3
  65. package/dist/common/diagnostic.js +13 -4
  66. package/dist/common/diagnostic.js.map +1 -1
  67. package/dist/common/editAction.d.ts +1 -0
  68. package/dist/common/editAction.js +8 -0
  69. package/dist/common/editAction.js.map +1 -1
  70. package/dist/common/extensibility.d.ts +36 -12
  71. package/dist/common/extensibility.js +63 -18
  72. package/dist/common/extensibility.js.map +1 -1
  73. package/dist/common/fileBasedCancellationUtils.d.ts +0 -1
  74. package/dist/common/fileBasedCancellationUtils.js +7 -81
  75. package/dist/common/fileBasedCancellationUtils.js.map +1 -1
  76. package/dist/common/pathUtils.d.ts +3 -0
  77. package/dist/common/pathUtils.js +18 -0
  78. package/dist/common/pathUtils.js.map +1 -1
  79. package/dist/common/textEditTracker.d.ts +37 -0
  80. package/dist/common/textEditTracker.js +301 -0
  81. package/dist/common/textEditTracker.js.map +1 -0
  82. package/dist/common/workspaceEditUtils.d.ts +14 -8
  83. package/dist/common/workspaceEditUtils.js +115 -59
  84. package/dist/common/workspaceEditUtils.js.map +1 -1
  85. package/dist/languageServerBase.d.ts +3 -0
  86. package/dist/languageServerBase.js +93 -4
  87. package/dist/languageServerBase.js.map +1 -1
  88. package/dist/languageService/analyzerServiceExecutor.js +1 -0
  89. package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
  90. package/dist/languageService/codeActionProvider.js +1 -1
  91. package/dist/languageService/codeActionProvider.js.map +1 -1
  92. package/dist/languageService/completionProvider.js +3 -3
  93. package/dist/languageService/completionProvider.js.map +1 -1
  94. package/dist/languageService/definitionProvider.js +1 -1
  95. package/dist/languageService/definitionProvider.js.map +1 -1
  96. package/dist/languageService/documentSymbolCollector.js +1 -1
  97. package/dist/languageService/documentSymbolCollector.js.map +1 -1
  98. package/dist/languageService/hoverProvider.js +13 -6
  99. package/dist/languageService/hoverProvider.js.map +1 -1
  100. package/dist/languageService/importAdder.d.ts +5 -1
  101. package/dist/languageService/importAdder.js +50 -14
  102. package/dist/languageService/importAdder.js.map +1 -1
  103. package/dist/languageService/indentationUtils.d.ts +5 -1
  104. package/dist/languageService/indentationUtils.js +12 -2
  105. package/dist/languageService/indentationUtils.js.map +1 -1
  106. package/dist/languageService/insertionPointUtils.js +28 -7
  107. package/dist/languageService/insertionPointUtils.js.map +1 -1
  108. package/dist/languageService/renameModuleProvider.d.ts +20 -10
  109. package/dist/languageService/renameModuleProvider.js +300 -229
  110. package/dist/languageService/renameModuleProvider.js.map +1 -1
  111. package/dist/localization/localize.d.ts +12 -0
  112. package/dist/localization/localize.js +6 -0
  113. package/dist/localization/localize.js.map +1 -1
  114. package/dist/localization/package.nls.en-us.json +8 -1
  115. package/dist/tests/checker.test.js +5 -0
  116. package/dist/tests/checker.test.js.map +1 -1
  117. package/dist/tests/fourslash/hover.docstring.parameter.fourslash.d.ts +1 -0
  118. package/dist/tests/fourslash/hover.docstring.parameter.fourslash.js +57 -0
  119. package/dist/tests/fourslash/hover.docstring.parameter.fourslash.js.map +1 -0
  120. package/dist/tests/fourslash/hover.inferred.fourslash.d.ts +1 -0
  121. package/dist/tests/fourslash/hover.inferred.fourslash.js +24 -0
  122. package/dist/tests/fourslash/hover.inferred.fourslash.js.map +1 -0
  123. package/dist/tests/harness/fourslash/testState.js +9 -2
  124. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  125. package/dist/tests/importAdder.test.js +40 -3
  126. package/dist/tests/importAdder.test.js.map +1 -1
  127. package/dist/tests/indentationUtils.reindent.test.js +1 -1
  128. package/dist/tests/indentationUtils.reindent.test.js.map +1 -1
  129. package/dist/tests/insertionPointUtils.test.js +70 -3
  130. package/dist/tests/insertionPointUtils.test.js.map +1 -1
  131. package/dist/tests/moveSymbol.importAdder.test.js +192 -0
  132. package/dist/tests/moveSymbol.importAdder.test.js.map +1 -0
  133. package/dist/tests/moveSymbol.insertion.test.d.ts +1 -0
  134. package/dist/tests/moveSymbol.insertion.test.js +397 -0
  135. package/dist/tests/moveSymbol.insertion.test.js.map +1 -0
  136. package/dist/tests/moveSymbol.misc.test.d.ts +1 -0
  137. package/dist/tests/moveSymbol.misc.test.js +142 -0
  138. package/dist/tests/moveSymbol.misc.test.js.map +1 -0
  139. package/dist/tests/moveSymbol.updateReference.test.d.ts +1 -0
  140. package/dist/tests/{updateSymbolReference.test.js → moveSymbol.updateReference.test.js} +235 -158
  141. package/dist/tests/moveSymbol.updateReference.test.js.map +1 -0
  142. package/dist/tests/parseTreeUtils.test.js +36 -13
  143. package/dist/tests/parseTreeUtils.test.js.map +1 -1
  144. package/dist/tests/renameModuleTestUtils.js +9 -3
  145. package/dist/tests/renameModuleTestUtils.js.map +1 -1
  146. package/dist/tests/testStateUtils.d.ts +2 -0
  147. package/dist/tests/testStateUtils.js +25 -22
  148. package/dist/tests/testStateUtils.js.map +1 -1
  149. package/dist/tests/textEditUtil.test.d.ts +1 -0
  150. package/dist/tests/textEditUtil.test.js +107 -0
  151. package/dist/tests/textEditUtil.test.js.map +1 -0
  152. package/dist/tests/typeEvaluator1.test.js +4 -0
  153. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  154. package/dist/tests/typeEvaluator2.test.js +12 -0
  155. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  156. package/dist/tests/typeEvaluator3.test.js +9 -0
  157. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  158. package/dist/tests/typeEvaluator4.test.js +5 -1
  159. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  160. package/dist/tests/workspaceEditUtils.test.js +7 -7
  161. package/dist/tests/workspaceEditUtils.test.js.map +1 -1
  162. package/dist/workspaceMap.d.ts +0 -1
  163. package/dist/workspaceMap.js +0 -11
  164. package/dist/workspaceMap.js.map +1 -1
  165. package/package.json +3 -3
  166. package/dist/common/textEditUtils.d.ts +0 -24
  167. package/dist/common/textEditUtils.js +0 -167
  168. package/dist/common/textEditUtils.js.map +0 -1
  169. package/dist/tests/updateSymbolReference.test.js.map +0 -1
  170. /package/dist/tests/{updateSymbolReference.test.d.ts → moveSymbol.importAdder.test.d.ts} +0 -0
@@ -7,74 +7,74 @@
7
7
  * Convert Pyright's FileEditActions to LanguageServer's WorkspaceEdits.
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.generateWorkspaceEdits = exports.applyDocumentChanges = exports.applyWorkspaceEdits = exports.convertWorkspaceDocumentEdits = exports.AddToWorkspaceEdit = exports.convertWorkspaceEdits = void 0;
10
+ exports.generateWorkspaceEdit = exports.applyDocumentChanges = exports.applyWorkspaceEdit = exports.applyTextEditsToString = exports.appendToWorkspaceEdit = exports.convertToWorkspaceEdit = exports.convertToFileTextEdits = exports.convertToTextEdits = void 0;
11
11
  const vscode_languageserver_1 = require("vscode-languageserver");
12
12
  const pathUtils_1 = require("../common/pathUtils");
13
13
  const collectionUtils_1 = require("./collectionUtils");
14
+ const core_1 = require("./core");
14
15
  const debug_1 = require("./debug");
15
16
  const positionUtils_1 = require("./positionUtils");
16
- function convertWorkspaceEdits(fs, edits) {
17
- const workspaceEdit = {
18
- changes: {},
19
- };
20
- AddToWorkspaceEdit(fs, workspaceEdit, edits);
21
- return workspaceEdit;
17
+ const textRange_1 = require("./textRange");
18
+ function convertToTextEdits(editActions) {
19
+ return editActions.map((editAction) => ({
20
+ range: editAction.range,
21
+ newText: editAction.replacementText,
22
+ }));
23
+ }
24
+ exports.convertToTextEdits = convertToTextEdits;
25
+ function convertToFileTextEdits(filePath, editActions) {
26
+ return editActions.map((a) => ({ filePath, ...a }));
27
+ }
28
+ exports.convertToFileTextEdits = convertToFileTextEdits;
29
+ function convertToWorkspaceEdit(fs, edits, changeAnnotations, defaultAnnotationId = 'default') {
30
+ if ((0, core_1.isArray)(edits)) {
31
+ return _convertToWorkspaceEditWithChanges(fs, edits);
32
+ }
33
+ return _convertToWorkspaceEditWithDocumentChanges(fs, edits, changeAnnotations, defaultAnnotationId);
22
34
  }
23
- exports.convertWorkspaceEdits = convertWorkspaceEdits;
24
- function AddToWorkspaceEdit(fs, workspaceEdit, edits) {
35
+ exports.convertToWorkspaceEdit = convertToWorkspaceEdit;
36
+ function appendToWorkspaceEdit(fs, edits, workspaceEdit) {
25
37
  edits.forEach((edit) => {
26
38
  const uri = (0, pathUtils_1.convertPathToUri)(fs, edit.filePath);
27
39
  workspaceEdit.changes[uri] = workspaceEdit.changes[uri] || [];
28
40
  workspaceEdit.changes[uri].push({ range: edit.range, newText: edit.replacementText });
29
41
  });
30
42
  }
31
- exports.AddToWorkspaceEdit = AddToWorkspaceEdit;
32
- function convertWorkspaceDocumentEdits(fs, editActions, changeAnnotations, defaultAnnotationId = 'default') {
33
- const workspaceEdit = {
34
- documentChanges: [],
35
- changeAnnotations: changeAnnotations,
36
- };
37
- const mapPerFile = (0, collectionUtils_1.createMapFromItems)(editActions.edits, (e) => e.filePath);
38
- for (const [key, value] of mapPerFile) {
39
- workspaceEdit.documentChanges.push(vscode_languageserver_1.TextDocumentEdit.create({ uri: (0, pathUtils_1.convertPathToUri)(fs, key), version: null }, [
40
- ...value.map((v) => ({
41
- range: v.range,
42
- newText: v.replacementText,
43
- annotationId: defaultAnnotationId,
44
- })),
45
- ]));
46
- }
47
- for (const operation of editActions.fileOperations) {
48
- switch (operation.kind) {
49
- case 'create':
50
- workspaceEdit.documentChanges.push(vscode_languageserver_1.CreateFile.create((0, pathUtils_1.convertPathToUri)(fs, operation.filePath),
51
- /* options */ undefined, defaultAnnotationId));
52
- break;
53
- case 'rename':
54
- workspaceEdit.documentChanges.push(vscode_languageserver_1.RenameFile.create((0, pathUtils_1.convertPathToUri)(fs, operation.oldFilePath), (0, pathUtils_1.convertPathToUri)(fs, operation.newFilePath),
55
- /* options */ undefined, defaultAnnotationId));
56
- break;
57
- case 'delete':
58
- workspaceEdit.documentChanges.push(vscode_languageserver_1.DeleteFile.create((0, pathUtils_1.convertPathToUri)(fs, operation.filePath),
59
- /* options */ undefined, defaultAnnotationId));
60
- break;
61
- default:
62
- (0, debug_1.assertNever)(operation);
43
+ exports.appendToWorkspaceEdit = appendToWorkspaceEdit;
44
+ function applyTextEditsToString(edits, lines, originalText) {
45
+ const editsWithOffset = edits
46
+ .map((e) => {
47
+ var _a;
48
+ return ({
49
+ range: (_a = (0, positionUtils_1.convertRangeToTextRange)(e.range, lines)) !== null && _a !== void 0 ? _a : { start: originalText.length, length: 0 },
50
+ text: e.replacementText,
51
+ });
52
+ })
53
+ .sort((e1, e2) => {
54
+ const result = e2.range.start - e1.range.start;
55
+ if (result !== 0) {
56
+ return result;
63
57
  }
58
+ return textRange_1.TextRange.getEnd(e2.range) - textRange_1.TextRange.getEnd(e1.range);
59
+ });
60
+ // Apply change in reverse order.
61
+ let current = originalText;
62
+ for (const change of editsWithOffset) {
63
+ current = current.substr(0, change.range.start) + change.text + current.substr(textRange_1.TextRange.getEnd(change.range));
64
64
  }
65
- return workspaceEdit;
65
+ return current;
66
66
  }
67
- exports.convertWorkspaceDocumentEdits = convertWorkspaceDocumentEdits;
68
- function applyWorkspaceEdits(service, edits, filesChanged) {
67
+ exports.applyTextEditsToString = applyTextEditsToString;
68
+ function applyWorkspaceEdit(clonedService, edits, filesChanged) {
69
69
  if (edits.changes) {
70
70
  for (const kv of Object.entries(edits.changes)) {
71
- const filePath = (0, pathUtils_1.convertUriToPath)(service.fs, kv[0]);
72
- const fileInfo = service.backgroundAnalysisProgram.program.getSourceFileInfo(filePath);
71
+ const filePath = (0, pathUtils_1.convertUriToPath)(clonedService.fs, kv[0]);
72
+ const fileInfo = clonedService.backgroundAnalysisProgram.program.getSourceFileInfo(filePath);
73
73
  if (!fileInfo || !fileInfo.isTracked) {
74
74
  // We don't allow non user file being modified.
75
75
  continue;
76
76
  }
77
- applyDocumentChanges(service, fileInfo, kv[1]);
77
+ applyDocumentChanges(clonedService, fileInfo, kv[1]);
78
78
  filesChanged.add(filePath);
79
79
  }
80
80
  }
@@ -82,13 +82,13 @@ function applyWorkspaceEdits(service, edits, filesChanged) {
82
82
  if (edits.documentChanges) {
83
83
  for (const change of edits.documentChanges) {
84
84
  if (vscode_languageserver_1.TextDocumentEdit.is(change)) {
85
- const filePath = (0, pathUtils_1.convertUriToPath)(service.fs, change.textDocument.uri);
86
- const fileInfo = service.backgroundAnalysisProgram.program.getSourceFileInfo(filePath);
85
+ const filePath = (0, pathUtils_1.convertUriToPath)(clonedService.fs, change.textDocument.uri);
86
+ const fileInfo = clonedService.backgroundAnalysisProgram.program.getSourceFileInfo(filePath);
87
87
  if (!fileInfo || !fileInfo.isTracked) {
88
88
  // We don't allow non user file being modified.
89
89
  continue;
90
90
  }
91
- applyDocumentChanges(service, fileInfo, change.edits);
91
+ applyDocumentChanges(clonedService, fileInfo, change.edits);
92
92
  filesChanged.add(filePath);
93
93
  }
94
94
  // For now, we don't support other kinds of text changes.
@@ -96,18 +96,18 @@ function applyWorkspaceEdits(service, edits, filesChanged) {
96
96
  }
97
97
  }
98
98
  }
99
- exports.applyWorkspaceEdits = applyWorkspaceEdits;
100
- function applyDocumentChanges(service, fileInfo, edits) {
99
+ exports.applyWorkspaceEdit = applyWorkspaceEdit;
100
+ function applyDocumentChanges(clonedService, fileInfo, edits) {
101
101
  var _a;
102
102
  if (!fileInfo.isOpenByClient) {
103
103
  const fileContent = fileInfo.sourceFile.getFileContent();
104
- service.setFileOpened(fileInfo.sourceFile.getFilePath(), 0, fileContent !== null && fileContent !== void 0 ? fileContent : '', fileInfo.sourceFile.getIPythonMode(), fileInfo.sourceFile.getRealFilePath());
104
+ clonedService.setFileOpened(fileInfo.sourceFile.getFilePath(), 0, fileContent !== null && fileContent !== void 0 ? fileContent : '', fileInfo.sourceFile.getIPythonMode(), fileInfo.sourceFile.getRealFilePath());
105
105
  }
106
106
  const version = ((_a = fileInfo.sourceFile.getClientVersion()) !== null && _a !== void 0 ? _a : 0) + 1;
107
- service.updateOpenFileContents(fileInfo.sourceFile.getFilePath(), version, edits.map((t) => ({ range: t.range, text: t.newText })), fileInfo.sourceFile.getIPythonMode(), fileInfo.sourceFile.getRealFilePath());
107
+ clonedService.updateOpenFileContents(fileInfo.sourceFile.getFilePath(), version, edits.map((t) => ({ range: t.range, text: t.newText })), fileInfo.sourceFile.getIPythonMode(), fileInfo.sourceFile.getRealFilePath());
108
108
  }
109
109
  exports.applyDocumentChanges = applyDocumentChanges;
110
- function generateWorkspaceEdits(base, target, filesChanged) {
110
+ function generateWorkspaceEdit(originalService, clonedService, filesChanged) {
111
111
  var _a;
112
112
  // For now, we won't do text diff to find out minimal text changes. instead, we will
113
113
  // consider whole text of the files are changed. In future, we could consider
@@ -115,8 +115,8 @@ function generateWorkspaceEdits(base, target, filesChanged) {
115
115
  // to support annotation.
116
116
  const edits = { changes: {} };
117
117
  for (const filePath of filesChanged) {
118
- const original = base.backgroundAnalysisProgram.program.getBoundSourceFile(filePath);
119
- const final = target.backgroundAnalysisProgram.program.getBoundSourceFile(filePath);
118
+ const original = originalService.backgroundAnalysisProgram.program.getBoundSourceFile(filePath);
119
+ const final = clonedService.backgroundAnalysisProgram.program.getBoundSourceFile(filePath);
120
120
  if (!original || !final) {
121
121
  // Both must exist.
122
122
  continue;
@@ -125,7 +125,7 @@ function generateWorkspaceEdits(base, target, filesChanged) {
125
125
  if (!parseResults) {
126
126
  continue;
127
127
  }
128
- edits.changes[(0, pathUtils_1.convertPathToUri)(base.fs, filePath)] = [
128
+ edits.changes[(0, pathUtils_1.convertPathToUri)(originalService.fs, filePath)] = [
129
129
  {
130
130
  range: (0, positionUtils_1.convertTextRangeToRange)(parseResults.parseTree, parseResults.tokenizerOutput.lines),
131
131
  newText: (_a = final.getFileContent()) !== null && _a !== void 0 ? _a : '',
@@ -134,5 +134,61 @@ function generateWorkspaceEdits(base, target, filesChanged) {
134
134
  }
135
135
  return edits;
136
136
  }
137
- exports.generateWorkspaceEdits = generateWorkspaceEdits;
137
+ exports.generateWorkspaceEdit = generateWorkspaceEdit;
138
+ function _convertToWorkspaceEditWithChanges(fs, edits) {
139
+ const workspaceEdit = {
140
+ changes: {},
141
+ };
142
+ appendToWorkspaceEdit(fs, edits, workspaceEdit);
143
+ return workspaceEdit;
144
+ }
145
+ function _convertToWorkspaceEditWithDocumentChanges(fs, editActions, changeAnnotations, defaultAnnotationId = 'default') {
146
+ const workspaceEdit = {
147
+ documentChanges: [],
148
+ changeAnnotations: changeAnnotations,
149
+ };
150
+ // Ordering of documentChanges are important.
151
+ // Make sure create operaiton happens before edits
152
+ for (const operation of editActions.fileOperations) {
153
+ switch (operation.kind) {
154
+ case 'create':
155
+ workspaceEdit.documentChanges.push(vscode_languageserver_1.CreateFile.create((0, pathUtils_1.convertPathToUri)(fs, operation.filePath),
156
+ /* options */ undefined, defaultAnnotationId));
157
+ break;
158
+ case 'rename':
159
+ case 'delete':
160
+ break;
161
+ default:
162
+ (0, debug_1.assertNever)(operation);
163
+ }
164
+ }
165
+ // Text edit's file path must refer to original file paths unless it is a new file just created.
166
+ const mapPerFile = (0, collectionUtils_1.createMapFromItems)(editActions.edits, (e) => e.filePath);
167
+ for (const [key, value] of mapPerFile) {
168
+ workspaceEdit.documentChanges.push(vscode_languageserver_1.TextDocumentEdit.create({ uri: (0, pathUtils_1.convertPathToUri)(fs, key), version: null }, [
169
+ ...value.map((v) => ({
170
+ range: v.range,
171
+ newText: v.replacementText,
172
+ annotationId: defaultAnnotationId,
173
+ })),
174
+ ]));
175
+ }
176
+ for (const operation of editActions.fileOperations) {
177
+ switch (operation.kind) {
178
+ case 'create':
179
+ break;
180
+ case 'rename':
181
+ workspaceEdit.documentChanges.push(vscode_languageserver_1.RenameFile.create((0, pathUtils_1.convertPathToUri)(fs, operation.oldFilePath), (0, pathUtils_1.convertPathToUri)(fs, operation.newFilePath),
182
+ /* options */ undefined, defaultAnnotationId));
183
+ break;
184
+ case 'delete':
185
+ workspaceEdit.documentChanges.push(vscode_languageserver_1.DeleteFile.create((0, pathUtils_1.convertPathToUri)(fs, operation.filePath),
186
+ /* options */ undefined, defaultAnnotationId));
187
+ break;
188
+ default:
189
+ (0, debug_1.assertNever)(operation);
190
+ }
191
+ }
192
+ return workspaceEdit;
193
+ }
138
194
  //# sourceMappingURL=workspaceEditUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspaceEditUtils.js","sourceRoot":"","sources":["../../../src/common/workspaceEditUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspaceEditUtils.js","sourceRoot":"","sources":["../../../src/common/workspaceEditUtils.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.supportsVisualStudioExtensions;
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 =
@@ -632,7 +697,7 @@ class LanguageServerBase {
632
697
  if (!editActions) {
633
698
  return undefined;
634
699
  }
635
- return (0, workspaceEditUtils_1.convertWorkspaceDocumentEdits)(workspace.serviceInstance.fs, editActions);
700
+ return (0, workspaceEditUtils_1.convertToWorkspaceEdit)(workspace.serviceInstance.fs, editActions);
636
701
  }
637
702
  async onPrepare(params, token) {
638
703
  const { filePath, position } = this._uriParser.decodeTextDocumentPosition(params.textDocument, params.position);
@@ -920,7 +985,7 @@ class LanguageServerBase {
920
985
  // created by the LSP library. If it's the latter, we'll create a server-initiated
921
986
  // progress reporter.
922
987
  if (reporter.constructor !== nullProgressReporter.constructor) {
923
- return { reporter: reporter, source: (0, cancellationUtils_1.CancelAfter)(token) };
988
+ return { reporter: reporter, source: (0, cancellationUtils_1.CancelAfter)(this._serverOptions.cancellationProvider, token) };
924
989
  }
925
990
  const serverInitiatedReporter = await this._connection.window.createWorkDoneProgress();
926
991
  serverInitiatedReporter.begin(title,
@@ -929,7 +994,7 @@ class LanguageServerBase {
929
994
  /* cancellable */ true);
930
995
  return {
931
996
  reporter: serverInitiatedReporter,
932
- source: (0, cancellationUtils_1.CancelAfter)(token, serverInitiatedReporter.token),
997
+ source: (0, cancellationUtils_1.CancelAfter)(this._serverOptions.cancellationProvider, token, serverInitiatedReporter.token),
933
998
  };
934
999
  }
935
1000
  _convertDiagnostics(fs, diags) {
@@ -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 */: