Skip to content

Commit 4fbe2b5

Browse files
notifications should not cancel (#328)
* notifications should not cancel, instead they should complete in order as expected (as they are typically fire and forget anyway) * some requests should not be parallel that are * fixed failing tests
1 parent 22389f3 commit 4fbe2b5

12 files changed

+18
-20
lines changed

src/JsonRpc/InputHandler.cs

-2
Original file line numberDiff line numberDiff line change
@@ -562,8 +562,6 @@ private SchedulerDelegate RouteNotification(IRequestDescriptor<IHandlerDescripto
562562
(contentModifiedToken, scheduler) =>
563563
// ITS A RACE!
564564
Observable.Amb(
565-
contentModifiedToken
566-
.Do(_ => { _logger.LogTrace("Notification was abandoned due to content be modified"); }),
567565
Observable.Timer(_requestTimeout, scheduler)
568566
.Select(z => Unit.Default)
569567
.Do(

src/Protocol/Document/IDocumentFormattingHandler.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
namespace OmniSharp.Extensions.LanguageServer.Protocol.Document
1010
{
11-
[Serial]
11+
[Parallel]
1212
[Method(TextDocumentNames.DocumentFormatting, Direction.ClientToServer)]
1313
[GenerateHandlerMethods]
1414
[GenerateRequestMethods(typeof(ITextDocumentLanguageClient), typeof(ILanguageClient))]

src/Protocol/Document/IDocumentOnTypeFormattingHandler.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
namespace OmniSharp.Extensions.LanguageServer.Protocol.Document
1010
{
11-
[Serial]
11+
[Parallel]
1212
[Method(TextDocumentNames.OnTypeFormatting, Direction.ClientToServer)]
1313
[GenerateHandlerMethods]
1414
[GenerateRequestMethods(typeof(ITextDocumentLanguageClient), typeof(ILanguageClient))]

src/Protocol/Document/IDocumentRangeFormattingHandler.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
namespace OmniSharp.Extensions.LanguageServer.Protocol.Document
1010
{
11-
[Serial]
11+
[Parallel]
1212
[Method(TextDocumentNames.RangeFormatting, Direction.ClientToServer)]
1313
[GenerateHandlerMethods]
1414
[GenerateRequestMethods(typeof(ITextDocumentLanguageClient), typeof(ILanguageClient))]

src/Protocol/Document/IPrepareRenameHandler.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
namespace OmniSharp.Extensions.LanguageServer.Protocol.Document
1010
{
11-
[Serial]
11+
[Parallel]
1212
[Method(TextDocumentNames.PrepareRename, Direction.ClientToServer)]
1313
[GenerateHandlerMethods]
1414
[GenerateRequestMethods(typeof(ITextDocumentLanguageClient), typeof(ILanguageClient))]

src/Protocol/Document/IRenameHandler.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
namespace OmniSharp.Extensions.LanguageServer.Protocol.Document
1010
{
11-
[Serial]
11+
[Parallel]
1212
[Method(TextDocumentNames.Rename, Direction.ClientToServer)]
1313
[GenerateHandlerMethods]
1414
[GenerateRequestMethods(typeof(ITextDocumentLanguageClient), typeof(ILanguageClient))]

src/Protocol/Document/IWillSaveWaitUntilTextDocumentHandler.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
namespace OmniSharp.Extensions.LanguageServer.Protocol.Document
1010
{
11-
[Serial]
11+
[Parallel]
1212
[Method(TextDocumentNames.WillSaveWaitUntil, Direction.ClientToServer)]
1313
[GenerateHandlerMethods]
1414
[GenerateRequestMethods(typeof(ITextDocumentLanguageClient), typeof(ILanguageClient))]

src/Protocol/Models/WorkspaceFolder.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -20,22 +20,22 @@ public bool Equals(WorkspaceFolder other)
2020
{
2121
if (ReferenceEquals(null, other)) return false;
2222
if (ReferenceEquals(this, other)) return true;
23-
return Uri.Equals(other.Uri) && Name == other.Name;
23+
return Equals(Uri, other.Uri) && Name == other.Name;
2424
}
2525

2626
public override bool Equals(object obj)
2727
{
2828
if (ReferenceEquals(null, obj)) return false;
2929
if (ReferenceEquals(this, obj)) return true;
30-
if (obj.GetType() != GetType()) return false;
30+
if (obj.GetType() != this.GetType()) return false;
3131
return Equals((WorkspaceFolder) obj);
3232
}
3333

3434
public override int GetHashCode()
3535
{
3636
unchecked
3737
{
38-
return ( Uri.GetHashCode() * 397 ) ^ Name.GetHashCode();
38+
return ( ( Uri != null ? Uri.GetHashCode() : 0 ) * 397 ) ^ ( Name != null ? Name.GetHashCode() : 0 );
3939
}
4040
}
4141

src/Protocol/Window/IShowMessageRequestHandler.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
namespace OmniSharp.Extensions.LanguageServer.Protocol.Window
99
{
10-
[Serial]
10+
[Parallel]
1111
[Method(WindowNames.ShowMessageRequest, Direction.ServerToClient)]
1212
[GenerateHandlerMethods]
1313
[GenerateRequestMethods(typeof(IWindowLanguageServer), typeof(ILanguageServer))]

src/Protocol/Workspace/IDidChangeConfigurationHandler.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
namespace OmniSharp.Extensions.LanguageServer.Protocol.Workspace
1111
{
12-
[Serial]
12+
[Parallel]
1313
[Method(WorkspaceNames.DidChangeConfiguration, Direction.ClientToServer)]
1414
[GenerateHandlerMethods]
1515
[GenerateRequestMethods(typeof(IWorkspaceLanguageClient), typeof(ILanguageClient))]

src/Protocol/Workspace/IDidChangeWatchedFilesHandler.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
namespace OmniSharp.Extensions.LanguageServer.Protocol.Workspace
1111
{
12-
[Serial]
12+
[Parallel]
1313
[Method(WorkspaceNames.DidChangeWatchedFiles, Direction.ClientToServer)]
1414
[GenerateHandlerMethods]
1515
[GenerateRequestMethods(typeof(IWorkspaceLanguageClient), typeof(ILanguageClient))]

test/Lsp.Tests/RequestProcessIdentifierTests.cs

+6-6
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,12 @@ public void ShouldIdentifyAs_Default()
4646
[InlineData(typeof(IHoverHandler))]
4747
[InlineData(typeof(IReferencesHandler))]
4848
[InlineData(typeof(ISignatureHelpHandler))]
49+
[InlineData(typeof(IDocumentFormattingHandler))]
50+
[InlineData(typeof(IDocumentOnTypeFormattingHandler))]
51+
[InlineData(typeof(IDocumentRangeFormattingHandler))]
52+
[InlineData(typeof(IWillSaveWaitUntilTextDocumentHandler))]
53+
[InlineData(typeof(IDidChangeConfigurationHandler))]
54+
[InlineData(typeof(IDidChangeWatchedFilesHandler))]
4955
public void ShouldIdentifyAs_Parallel(Type type)
5056
{
5157
var identifier = new RequestProcessIdentifier();
@@ -61,16 +67,10 @@ public void ShouldIdentifyAs_Parallel(Type type)
6167
[InlineData(typeof(IDidChangeTextDocumentHandler))]
6268
[InlineData(typeof(IDidOpenTextDocumentHandler))]
6369
[InlineData(typeof(IDidSaveTextDocumentHandler))]
64-
[InlineData(typeof(IDocumentFormattingHandler))]
65-
[InlineData(typeof(IDocumentOnTypeFormattingHandler))]
66-
[InlineData(typeof(IDocumentRangeFormattingHandler))]
67-
[InlineData(typeof(IWillSaveWaitUntilTextDocumentHandler))]
6870
[InlineData(typeof(IExitHandler))]
6971
[InlineData(typeof(IShutdownHandler))]
7072
[InlineData(typeof(ILanguageProtocolInitializeHandler))]
7173
[InlineData(typeof(ILanguageProtocolInitializedHandler))]
72-
[InlineData(typeof(IDidChangeConfigurationHandler))]
73-
[InlineData(typeof(IDidChangeWatchedFilesHandler))]
7474
[InlineData(typeof(IExecuteCommandHandler))]
7575
public void ShouldIdentifyAs_Serial(Type type)
7676
{

0 commit comments

Comments
 (0)