Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit d7e4fb6

Browse files
Make ResolveCodeLens return a Task (again)
Ironically this was clearly how it used to work, and was for some reason changed, even though it does need to be a task and was previously relying on synchronous side effects.
1 parent fb7900e commit d7e4fb6

File tree

7 files changed

+40
-38
lines changed

7 files changed

+40
-38
lines changed

‎src/PowerShellEditorServices/Services/CodeLens/ICodeLensProvider.cs‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Copyright (c) Microsoft Corporation.
22
// Licensed under the MIT License.
33

4+
using System.Threading.Tasks;
45
using Microsoft.PowerShell.EditorServices.Services.TextDocument;
56
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
67

@@ -34,13 +35,12 @@ internal interface ICodeLensProvider
3435
/// The CodeLens to resolve.
3536
/// </param>
3637
/// <param name="scriptFile">
37-
/// A CancellationToken which can be used to cancel the
38-
/// request.
38+
/// The ScriptFile to resolve it in (sometimes unused).
3939
/// </param>
4040
/// <returns>
4141
/// A Task which returns the resolved CodeLens when completed.
4242
/// </returns>
43-
CodeLens ResolveCodeLens(
43+
Task<CodeLens> ResolveCodeLens(
4444
CodeLens codeLens,
4545
ScriptFile scriptFile);
4646
}

‎src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Licensed under the MIT License.
33
using System;
44
using System.Collections.Generic;
5+
using System.Threading.Tasks;
56
using Microsoft.PowerShell.EditorServices.Services;
67
using Microsoft.PowerShell.EditorServices.Services.Symbols;
78
using Microsoft.PowerShell.EditorServices.Services.TextDocument;
@@ -133,11 +134,11 @@ public CodeLens[] ProvideCodeLenses(ScriptFile scriptFile)
133134
/// <param name="codeLens">The code lens to resolve.</param>
134135
/// <param name="scriptFile">The script file.</param>
135136
/// <returns>The given CodeLens, wrapped in a task.</returns>
136-
public CodeLens ResolveCodeLens(CodeLens codeLens, ScriptFile scriptFile)
137+
public Task<CodeLens> ResolveCodeLens(CodeLens codeLens, ScriptFile scriptFile)
137138
{
138139
// This provider has no specific behavior for
139140
// resolving CodeLenses.
140-
return codeLens;
141+
return Task.FromResult(codeLens);
141142
}
142143
}
143144
}

‎src/PowerShellEditorServices/Services/CodeLens/ReferencesCodeLensProvider.cs‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System;
55
using System.Collections.Generic;
66
using System.Text;
7+
using System.Threading.Tasks;
78
using Microsoft.PowerShell.EditorServices.Services;
89
using Microsoft.PowerShell.EditorServices.Services.Symbols;
910
using Microsoft.PowerShell.EditorServices.Services.TextDocument;
@@ -79,10 +80,10 @@ public CodeLens[] ProvideCodeLenses(ScriptFile scriptFile)
7980
/// Take a codelens and create a new codelens object with updated references.
8081
/// </summary>
8182
/// <param name="codeLens">The old code lens to get updated references for.</param>
83+
/// <param name="scriptFile"></param>
8284
/// <returns>A new code lens object describing the same data as the old one but with updated references.</returns>
83-
public CodeLens ResolveCodeLens(CodeLens codeLens, ScriptFile scriptFile)
85+
public asyncTask<CodeLens> ResolveCodeLens(CodeLens codeLens, ScriptFile scriptFile)
8486
{
85-
8687
ScriptFile[] references = _workspaceService.ExpandScriptReferences(
8788
scriptFile);
8889

@@ -91,10 +92,10 @@ public CodeLens ResolveCodeLens(CodeLens codeLens, ScriptFile scriptFile)
9192
codeLens.Range.Start.Line + 1,
9293
codeLens.Range.Start.Character + 1);
9394

94-
List<SymbolReference> referencesResult = _symbolsService.FindReferencesOfSymbol(
95+
List<SymbolReference> referencesResult = await_symbolsService.FindReferencesOfSymbol(
9596
foundSymbol,
9697
references,
97-
_workspaceService);
98+
_workspaceService).ConfigureAwait(false);
9899

99100
Location[] referenceLocations;
100101
if (referencesResult == null)

‎src/PowerShellEditorServices/Services/Symbols/SymbolsService.cs‎

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ internal class SymbolsService
4848
/// the given Runspace to execute language service operations.
4949
/// </summary>
5050
/// <param name="factory">An ILoggerFactory implementation used for writing log messages.</param>
51+
/// <param name="runspaceContext"></param>
52+
/// <param name="executionService"></param>
53+
/// <param name="workspaceService"></param>
54+
/// <param name="configurationService"></param>
5155
public SymbolsService(
5256
ILoggerFactory factory,
5357
IRunspaceContext runspaceContext,
@@ -175,7 +179,7 @@ public static SymbolReference FindSymbolAtLocation(
175179
/// <param name="referencedFiles">An array of scriptFiles too search for references in</param>
176180
/// <param name="workspace">The workspace that will be searched for symbols</param>
177181
/// <returns>FindReferencesResult</returns>
178-
public List<SymbolReference> FindReferencesOfSymbol(
182+
public asyncTask<List<SymbolReference>> FindReferencesOfSymbol(
179183
SymbolReference foundSymbol,
180184
ScriptFile[] referencedFiles,
181185
WorkspaceService workspace)
@@ -303,7 +307,7 @@ public static SymbolReference FindFunctionDefinitionAtLocation(
303307
/// <param name="lineNumber">The line number at which the symbol can be located.</param>
304308
/// <param name="columnNumber">The column number at which the symbol can be located.</param>
305309
/// <returns></returns>
306-
public asyncTask<SymbolDetails> FindSymbolDetailsAtLocationAsync(
310+
public Task<SymbolDetails> FindSymbolDetailsAtLocationAsync(
307311
ScriptFile scriptFile,
308312
int lineNumber,
309313
int columnNumber)
@@ -316,16 +320,14 @@ public async Task<SymbolDetails> FindSymbolDetailsAtLocationAsync(
316320

317321
if (symbolReference == null)
318322
{
319-
return null;
323+
return Task.FromResult<SymbolDetails>(null);
320324
}
321325

322326
symbolReference.FilePath = scriptFile.FilePath;
323-
SymbolDetailssymbolDetails=await SymbolDetails.CreateAsync(
327+
return SymbolDetails.CreateAsync(
324328
symbolReference,
325329
_runspaceContext.CurrentRunspace,
326-
_executionService).ConfigureAwait(false);
327-
328-
return symbolDetails;
330+
_executionService);
329331
}
330332

331333
/// <summary>
@@ -443,8 +445,7 @@ public async Task<SymbolReference> GetDefinitionOfSymbolAsync(
443445
if (foundDefinition == null)
444446
{
445447
// Get a list of all powershell files in the workspace path
446-
IEnumerable<string> allFiles = _workspaceService.EnumeratePSFiles();
447-
foreach (string file in allFiles)
448+
foreach (string file in _workspaceService.EnumeratePSFiles())
448449
{
449450
if (filesSearched.Contains(file))
450451
{
@@ -540,7 +541,7 @@ private ScriptFile[] GetBuiltinCommandScriptFiles(
540541
}
541542

542543
string modPath = moduleInfo.Path;
543-
List<ScriptFile> scriptFiles = newList<ScriptFile>();
544+
List<ScriptFile> scriptFiles = new();
544545
ScriptFile newFile;
545546

546547
// find any files where the moduleInfo's path ends with ps1 or psm1
@@ -595,7 +596,7 @@ public static FunctionDefinitionAst GetFunctionDefinitionForHelpComment(
595596
IEnumerable<Ast> foundAsts = scriptFile.ScriptAst.FindAll(
596597
ast =>
597598
{
598-
if (!(ast is FunctionDefinitionAst fdAst))
599+
if (ast is not FunctionDefinitionAst fdAst)
599600
{
600601
return false;
601602
}
@@ -605,7 +606,7 @@ public static FunctionDefinitionAst GetFunctionDefinitionForHelpComment(
605606
},
606607
true);
607608

608-
if (foundAsts==null||!foundAsts.Any())
609+
if (foundAsts?.Any()!=true)
609610
{
610611
helpLocation = null;
611612
return null;

‎src/PowerShellEditorServices/Services/TextDocument/Handlers/CodeLensHandlers.cs‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,7 @@ public Task<CodeLens> Handle(CodeLens request, CancellationToken cancellationTok
7575
_workspaceService.GetFile(
7676
codeLensData.Uri);
7777

78-
var resolvedCodeLens = originalProvider.ResolveCodeLens(request, scriptFile);
79-
return Task.FromResult(resolvedCodeLens);
78+
return originalProvider.ResolveCodeLens(request, scriptFile);
8079
}
8180

8281
public void SetCapability(CodeLensCapability capability)

‎src/PowerShellEditorServices/Services/TextDocument/Handlers/ReferencesHandler.cs‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public PsesReferencesHandler(ILoggerFactory factory, SymbolsService symbolsServi
3434
DocumentSelector = LspUtils.PowerShellDocumentSelector
3535
};
3636

37-
public override Task<LocationContainer> Handle(ReferenceParams request, CancellationToken cancellationToken)
37+
public asyncoverride Task<LocationContainer> Handle(ReferenceParams request, CancellationToken cancellationToken)
3838
{
3939
ScriptFile scriptFile = _workspaceService.GetFile(request.TextDocument.Uri);
4040

@@ -45,10 +45,10 @@ public override Task<LocationContainer> Handle(ReferenceParams request, Cancella
4545
request.Position.Character + 1);
4646

4747
List<SymbolReference> referencesResult =
48-
_symbolsService.FindReferencesOfSymbol(
48+
await_symbolsService.FindReferencesOfSymbol(
4949
foundSymbol,
5050
_workspaceService.ExpandScriptReferences(scriptFile),
51-
_workspaceService);
51+
_workspaceService).ConfigureAwait(false);
5252

5353
var locations = new List<Location>();
5454

@@ -64,7 +64,7 @@ public override Task<LocationContainer> Handle(ReferenceParams request, Cancella
6464
}
6565
}
6666

67-
return Task.FromResult(new LocationContainer(locations));
67+
return new LocationContainer(locations);
6868
}
6969

7070
private static Range GetRangeFromScriptRegion(ScriptRegion scriptRegion)

‎test/PowerShellEditorServices.Test/Language/SymbolsServiceTests.cs‎

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ private Task<SymbolReference> GetDefinition(ScriptRegion scriptRegion)
7171
return symbolsService.GetDefinitionOfSymbolAsync(scriptFile, symbolReference);
7272
}
7373

74-
private List<SymbolReference> GetReferences(ScriptRegion scriptRegion)
74+
private Task<List<SymbolReference>> GetReferences(ScriptRegion scriptRegion)
7575
{
7676
ScriptFile scriptFile = GetScriptFile(scriptRegion);
7777

@@ -126,9 +126,9 @@ public async Task FindsFunctionDefinition()
126126
}
127127

128128
[Fact]
129-
public void FindsReferencesOnFunction()
129+
public asyncTask FindsReferencesOnFunction()
130130
{
131-
List<SymbolReference> referencesResult = GetReferences(FindsReferencesOnFunctionData.SourceDetails);
131+
List<SymbolReference> referencesResult = awaitGetReferences(FindsReferencesOnFunctionData.SourceDetails).ConfigureAwait(true);
132132
Assert.Equal(3, referencesResult.Count);
133133
Assert.Equal(1, referencesResult[0].ScriptRegion.StartLineNumber);
134134
Assert.Equal(10, referencesResult[0].ScriptRegion.StartColumnNumber);
@@ -177,9 +177,9 @@ public async Task FindsVariableDefinition()
177177
}
178178

179179
[Fact]
180-
public void FindsReferencesOnVariable()
180+
public asyncTask FindsReferencesOnVariable()
181181
{
182-
List<SymbolReference> referencesResult = GetReferences(FindsReferencesOnVariableData.SourceDetails);
182+
List<SymbolReference> referencesResult = awaitGetReferences(FindsReferencesOnVariableData.SourceDetails).ConfigureAwait(true);
183183
Assert.Equal(3, referencesResult.Count);
184184
Assert.Equal(10, referencesResult[referencesResult.Count - 1].ScriptRegion.StartLineNumber);
185185
Assert.Equal(13, referencesResult[referencesResult.Count - 1].ScriptRegion.StartColumnNumber);
@@ -204,26 +204,26 @@ public void FindsOccurrencesOnParameter()
204204
}
205205

206206
[Fact]
207-
public void FindsReferencesOnCommandWithAlias()
207+
public asyncTask FindsReferencesOnCommandWithAlias()
208208
{
209-
List<SymbolReference> referencesResult = GetReferences(FindsReferencesOnBuiltInCommandWithAliasData.SourceDetails);
209+
List<SymbolReference> referencesResult = awaitGetReferences(FindsReferencesOnBuiltInCommandWithAliasData.SourceDetails).ConfigureAwait(true);
210210
Assert.Equal(4, referencesResult.Count);
211211
Assert.Equal("gci", referencesResult[1].SymbolName);
212212
Assert.Equal("dir", referencesResult[2].SymbolName);
213213
Assert.Equal("Get-ChildItem", referencesResult[referencesResult.Count - 1].SymbolName);
214214
}
215215

216216
[Fact]
217-
public void FindsReferencesOnFileWithReferencesFileB()
217+
public asyncTask FindsReferencesOnFileWithReferencesFileB()
218218
{
219-
List<SymbolReference> referencesResult = GetReferences(FindsReferencesOnFunctionMultiFileDotSourceFileB.SourceDetails);
219+
List<SymbolReference> referencesResult = awaitGetReferences(FindsReferencesOnFunctionMultiFileDotSourceFileB.SourceDetails).ConfigureAwait(true);
220220
Assert.Equal(4, referencesResult.Count);
221221
}
222222

223223
[Fact]
224-
public void FindsReferencesOnFileWithReferencesFileC()
224+
public asyncTask FindsReferencesOnFileWithReferencesFileC()
225225
{
226-
List<SymbolReference> referencesResult = GetReferences(FindsReferencesOnFunctionMultiFileDotSourceFileC.SourceDetails);
226+
List<SymbolReference> referencesResult = awaitGetReferences(FindsReferencesOnFunctionMultiFileDotSourceFileC.SourceDetails).ConfigureAwait(true);
227227
Assert.Equal(4, referencesResult.Count);
228228
}
229229

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /