Skip to content

Commit f68bd90

Browse files
authored
Merge branch 'master' into akshita31-patch-2
2 parents 9f7fc49 + 86c46f8 commit f68bd90

18 files changed

+212
-126
lines changed

src/features/codeActionProvider.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,8 @@ export default class CodeActionProvider extends AbstractProvider implements vsco
7373
Selection: selection
7474
};
7575

76-
return serverUtils.getCodeActions(this._server, request, token).then(response => {
76+
try {
77+
let response = await serverUtils.getCodeActions(this._server, request, token);
7778
return response.CodeActions.map(codeAction => {
7879
let runRequest: protocol.V2.RunCodeActionRequest = {
7980
FileName: document.fileName,
@@ -91,9 +92,10 @@ export default class CodeActionProvider extends AbstractProvider implements vsco
9192
arguments: [runRequest]
9293
};
9394
});
94-
}, async (error) => {
95+
}
96+
catch (error) {
9597
return Promise.reject(`Problem invoking 'GetCodeActions' on OmniSharp server: ${error}`);
96-
});
98+
}
9799
}
98100

99101
private async _runCodeAction(req: protocol.V2.RunCodeActionRequest): Promise<boolean | string | {}> {

src/features/codeLensProvider.ts

Lines changed: 31 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,13 @@ export default class OmniSharpCodeLensProvider extends AbstractProvider implemen
8888
return [];
8989
}
9090

91-
const response = await serverUtils.codeStructure(this._server, { FileName: document.fileName }, token);
92-
93-
if (response && response.Elements) {
94-
return createCodeLenses(response.Elements, document.fileName, options);
91+
try {
92+
const response = await serverUtils.codeStructure(this._server, { FileName: document.fileName }, token);
93+
if (response && response.Elements) {
94+
return createCodeLenses(response.Elements, document.fileName, options);
95+
}
9596
}
97+
catch (error) { }
9698

9799
return [];
98100
}
@@ -118,22 +120,26 @@ export default class OmniSharpCodeLensProvider extends AbstractProvider implemen
118120
ExcludeDefinition: true
119121
};
120122

121-
const result = await serverUtils.findUsages(this._server, request, token);
122-
123-
if (!result || !result.QuickFixes) {
124-
return;
125-
}
123+
try {
124+
let result = await serverUtils.findUsages(this._server, request, token);
125+
if (!result || !result.QuickFixes) {
126+
return undefined;
127+
}
126128

127-
const quickFixes = result.QuickFixes;
128-
const count = quickFixes.length;
129+
const quickFixes = result.QuickFixes;
130+
const count = quickFixes.length;
129131

130-
codeLens.command = {
131-
title: count === 1 ? '1 reference' : `${count} references`,
132-
command: 'editor.action.showReferences',
133-
arguments: [vscode.Uri.file(request.FileName), codeLens.range.start, quickFixes.map(toLocation)]
134-
};
132+
codeLens.command = {
133+
title: count === 1 ? '1 reference' : `${count} references`,
134+
command: 'editor.action.showReferences',
135+
arguments: [vscode.Uri.file(request.FileName), codeLens.range.start, quickFixes.map(toLocation)]
136+
};
135137

136-
return codeLens;
138+
return codeLens;
139+
}
140+
catch (error) {
141+
return undefined;
142+
}
137143
}
138144

139145
private async resolveTestCodeLens(codeLens: TestCodeLens, singularTitle: string, singularCommandName: string, pluralTitle: string, pluralCommandName: string): Promise<vscode.CodeLens> {
@@ -147,9 +153,15 @@ export default class OmniSharpCodeLensProvider extends AbstractProvider implemen
147153

148154
return codeLens;
149155
}
150-
151-
const projectInfo = await serverUtils.requestProjectInformation(this._server, { FileName: codeLens.fileName });
152156

157+
let projectInfo: protocol.ProjectInformationResponse;
158+
try {
159+
projectInfo = await serverUtils.requestProjectInformation(this._server, { FileName: codeLens.fileName });
160+
}
161+
catch (error) {
162+
return undefined;
163+
}
164+
153165
// We do not support running all tests on legacy projects.
154166
if (projectInfo.MsBuildProject && !projectInfo.DotNetProject) {
155167
codeLens.command = {

src/features/completionItemProvider.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,15 @@ export default class OmniSharpCompletionItemProvider extends AbstractSupport imp
4040
req.TriggerCharacter = context.triggerCharacter;
4141
}
4242

43-
return serverUtils.autoComplete(this._server, req).then(responses => {
43+
try {
44+
let responses = await serverUtils.autoComplete(this._server, req);
4445

4546
if (!responses) {
4647
return;
4748
}
4849

4950
let result: CompletionItem[] = [];
50-
let completions: { [c: string]: { items: CompletionItem[], preselect : boolean } } = Object.create(null);
51+
let completions: { [c: string]: { items: CompletionItem[], preselect: boolean } } = Object.create(null);
5152

5253
// transform AutoCompleteResponse to CompletionItem and
5354
// group by code snippet
@@ -73,7 +74,7 @@ export default class OmniSharpCompletionItemProvider extends AbstractSupport imp
7374
completions[completion.label] = { items: [completion], preselect: completion.preselect };
7475
}
7576
else {
76-
completionSet.preselect = completionSet.preselect || completion.preselect;
77+
completionSet.preselect = completionSet.preselect || completion.preselect;
7778
completionSet.items.push(completion);
7879
}
7980
}
@@ -101,7 +102,10 @@ export default class OmniSharpCompletionItemProvider extends AbstractSupport imp
101102
// for short completions (up to 1 character), treat the list as incomplete
102103
// because the server has likely witheld some matches due to performance constraints
103104
return new CompletionList(result, wordToComplete.length > 1 ? false : true);
104-
});
105+
}
106+
catch (error) {
107+
return;
108+
}
105109
}
106110
}
107111

src/features/definitionProvider.ts

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import * as serverUtils from '../omnisharp/utils';
7-
import {CancellationToken, DefinitionProvider, Location, Position, TextDocument, Uri} from 'vscode';
8-
import {GoToDefinitionRequest, MetadataRequest, MetadataSource} from '../omnisharp/protocol';
9-
import {createRequest, toLocation, toLocationFromUri} from '../omnisharp/typeConversion';
7+
import { CancellationToken, DefinitionProvider, Location, Position, TextDocument, Uri } from 'vscode';
8+
import { GoToDefinitionRequest, MetadataRequest, MetadataSource } from '../omnisharp/protocol';
9+
import { createRequest, toLocation, toLocationFromUri } from '../omnisharp/typeConversion';
1010
import AbstractSupport from './abstractProvider';
1111
import DefinitionMetadataDocumentProvider from './definitionMetadataDocumentProvider';
1212
import { OmniSharpServer } from '../omnisharp/server';
@@ -25,8 +25,8 @@ export default class CSharpDefinitionProvider extends AbstractSupport implements
2525
let req = <GoToDefinitionRequest>createRequest(document, position);
2626
req.WantMetadata = true;
2727

28-
return serverUtils.goToDefinition(this._server, req, token).then(gotoDefinitionResponse => {
29-
28+
try {
29+
let gotoDefinitionResponse = await serverUtils.goToDefinition(this._server, req, token);
3030
// the defintion is in source
3131
if (gotoDefinitionResponse && gotoDefinitionResponse.FileName) {
3232

@@ -38,13 +38,13 @@ export default class CSharpDefinitionProvider extends AbstractSupport implements
3838

3939
// if it is a normal source definition, convert the response to a location
4040
return toLocation(gotoDefinitionResponse);
41-
42-
// the definition is in metadata
41+
42+
// the definition is in metadata
4343
} else if (gotoDefinitionResponse.MetadataSource) {
4444
const metadataSource: MetadataSource = gotoDefinitionResponse.MetadataSource;
4545

4646
// go to metadata endpoint for more information
47-
return serverUtils.getMetadata(this._server, <MetadataRequest> {
47+
return serverUtils.getMetadata(this._server, <MetadataRequest>{
4848
Timeout: 5000,
4949
AssemblyName: metadataSource.AssemblyName,
5050
VersionNumber: metadataSource.VersionNumber,
@@ -60,6 +60,9 @@ export default class CSharpDefinitionProvider extends AbstractSupport implements
6060
return new Location(uri, new Position(gotoDefinitionResponse.Line - 1, gotoDefinitionResponse.Column - 1));
6161
});
6262
}
63-
});
63+
}
64+
catch (error) {
65+
return;
66+
}
6467
}
6568
}

src/features/diagnosticsProvider.ts

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -233,11 +233,10 @@ class DiagnosticsProvider extends AbstractSupport {
233233
}
234234

235235
let source = new vscode.CancellationTokenSource();
236-
let handle = setTimeout(() => {
237-
serverUtils.codeCheck(this._server, { FileName: document.fileName }, source.token).then(value => {
238-
236+
let handle = setTimeout(async () => {
237+
try {
238+
let value = await serverUtils.codeCheck(this._server, { FileName: document.fileName }, source.token);
239239
let quickFixes = value.QuickFixes.filter(DiagnosticsProvider._shouldInclude);
240-
241240
// Easy case: If there are no diagnostics in the file, we can clear it quickly.
242241
if (quickFixes.length === 0) {
243242
if (this._diagnostics.has(document.uri)) {
@@ -249,9 +248,11 @@ class DiagnosticsProvider extends AbstractSupport {
249248

250249
// (re)set new diagnostics for this document
251250
let diagnostics = quickFixes.map(DiagnosticsProvider._asDiagnostic);
252-
253251
this._diagnostics.set(document.uri, diagnostics);
254-
});
252+
}
253+
catch (error) {
254+
return;
255+
}
255256
}, 750);
256257

257258
source.token.onCancellationRequested(() => clearTimeout(handle));
@@ -269,9 +270,9 @@ class DiagnosticsProvider extends AbstractSupport {
269270
}
270271

271272
this._projectValidation = new vscode.CancellationTokenSource();
272-
let handle = setTimeout(() => {
273-
274-
serverUtils.codeCheck(this._server, { FileName: null }, this._projectValidation.token).then(value => {
273+
let handle = setTimeout(async () => {
274+
try {
275+
let value = await serverUtils.codeCheck(this._server, { FileName: null }, this._projectValidation.token);
275276

276277
let quickFixes = value.QuickFixes
277278
.filter(DiagnosticsProvider._shouldInclude)
@@ -306,7 +307,10 @@ class DiagnosticsProvider extends AbstractSupport {
306307

307308
// replace all entries
308309
this._diagnostics.set(entries);
309-
});
310+
}
311+
catch (error) {
312+
return;
313+
}
310314
}, 3000);
311315

312316
// clear timeout on cancellation

src/features/documentHighlightProvider.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
import AbstractSupport from './abstractProvider';
77
import * as protocol from '../omnisharp/protocol';
88
import * as serverUtils from '../omnisharp/utils';
9-
import {createRequest, toRange} from '../omnisharp/typeConversion';
10-
import {DocumentHighlightProvider, DocumentHighlight, DocumentHighlightKind, CancellationToken, TextDocument, Position} from 'vscode';
9+
import { createRequest, toRange } from '../omnisharp/typeConversion';
10+
import { DocumentHighlightProvider, DocumentHighlight, DocumentHighlightKind, CancellationToken, TextDocument, Position } from 'vscode';
1111

1212
export default class OmnisharpDocumentHighlightProvider extends AbstractSupport implements DocumentHighlightProvider {
1313

@@ -17,11 +17,16 @@ export default class OmnisharpDocumentHighlightProvider extends AbstractSupport
1717
req.OnlyThisFile = true;
1818
req.ExcludeDefinition = false;
1919

20-
return serverUtils.findUsages(this._server, req, token).then(res => {
20+
try {
21+
let res = await serverUtils.findUsages(this._server, req, token);
22+
2123
if (res && Array.isArray(res.QuickFixes)) {
2224
return res.QuickFixes.map(OmnisharpDocumentHighlightProvider._asDocumentHighlight);
2325
}
24-
});
26+
}
27+
catch (error) {
28+
return [];
29+
}
2530
}
2631

2732
private static _asDocumentHighlight(quickFix: protocol.QuickFix): DocumentHighlight {

src/features/documentSymbolProvider.ts

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,18 @@ import { toRange3 } from '../omnisharp/typeConversion';
1616
export default class OmnisharpDocumentSymbolProvider extends AbstractSupport implements vscode.DocumentSymbolProvider {
1717

1818
async provideDocumentSymbols(document: vscode.TextDocument, token: vscode.CancellationToken): Promise<vscode.DocumentSymbol[]> {
19-
const response = await serverUtils.codeStructure(this._server, { FileName: document.fileName }, token);
20-
21-
if (response && response.Elements) {
22-
return createSymbols(response.Elements);
23-
}
19+
try {
20+
const response = await serverUtils.codeStructure(this._server, { FileName: document.fileName }, token);
21+
22+
if (response && response.Elements) {
23+
return createSymbols(response.Elements);
24+
}
2425

25-
return [];
26+
return [];
27+
}
28+
catch (error) {
29+
return [];
30+
}
2631
}
2732
}
2833

@@ -48,7 +53,7 @@ function createSymbolForElement(element: Structure.CodeElement): vscode.Document
4853
return new vscode.DocumentSymbol(element.DisplayName, /*detail*/ "", toSymbolKind(element.Kind), toRange3(fullRange), toRange3(nameRange));
4954
}
5055

51-
const kinds: { [kind: string]: vscode.SymbolKind; } = { };
56+
const kinds: { [kind: string]: vscode.SymbolKind; } = {};
5257

5358
kinds[SymbolKinds.Class] = vscode.SymbolKind.Class;
5459
kinds[SymbolKinds.Delegate] = vscode.SymbolKind.Class;

src/features/dotnetTest.ts

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -117,15 +117,26 @@ export default class TestManager extends AbstractProvider {
117117
TargetFrameworkVersion: targetFrameworkVersion
118118
};
119119

120-
let response = await serverUtils.runTest(this._server, request);
121-
return response.Results;
120+
try {
121+
let response = await serverUtils.runTest(this._server, request);
122+
return response.Results;
123+
}
124+
catch (error) {
125+
return undefined;
126+
}
122127
}
123128

124-
private async _recordRunAndGetFrameworkVersion(fileName: string, testFrameworkName: string) {
129+
private async _recordRunAndGetFrameworkVersion(fileName: string, testFrameworkName: string): Promise<string>{
125130

126131
await this._saveDirtyFiles();
127132
this._recordRunRequest(testFrameworkName);
128-
let projectInfo = await serverUtils.requestProjectInformation(this._server, { FileName: fileName });
133+
let projectInfo: protocol.ProjectInformationResponse;
134+
try {
135+
projectInfo = await serverUtils.requestProjectInformation(this._server, { FileName: fileName });
136+
}
137+
catch (error) {
138+
return undefined;
139+
}
129140

130141
let targetFrameworkVersion: string;
131142

@@ -302,7 +313,13 @@ export default class TestManager extends AbstractProvider {
302313
private async _recordDebugAndGetDebugValues(fileName: string, testFrameworkName: string) {
303314
await this._saveDirtyFiles();
304315
this._recordDebugRequest(testFrameworkName);
305-
let projectInfo = await serverUtils.requestProjectInformation(this._server, { FileName: fileName });
316+
let projectInfo: protocol.ProjectInformationResponse;
317+
try {
318+
projectInfo = await serverUtils.requestProjectInformation(this._server, { FileName: fileName });
319+
}
320+
catch (error) {
321+
return undefined;
322+
}
306323

307324
let debugType: string;
308325
let debugEventListener: DebugEventListener = null;
@@ -532,10 +549,13 @@ class DebugEventListener {
532549
let request: protocol.V2.DebugTestStopRequest = {
533550
FileName: this._fileName
534551
};
535-
536-
serverUtils.debugTestStop(this._server, request);
537-
538-
this.close();
552+
try {
553+
serverUtils.debugTestStop(this._server, request);
554+
this.close();
555+
}
556+
catch (error) {
557+
return;
558+
}
539559
}
540560

541561
private async removeSocketFileIfExists(): Promise<void> {

0 commit comments

Comments
 (0)