Skip to content

Commit 47f81b9

Browse files
Changed around how handlers are created
1 parent dadf6bc commit 47f81b9

File tree

3 files changed

+18
-14
lines changed

3 files changed

+18
-14
lines changed

src/Lsp/HandlerCollection.cs

+10-6
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@ IEnumerator IEnumerable.GetEnumerator()
2323
return GetEnumerator();
2424
}
2525

26-
public IDisposable Add(params IJsonRpcHandler[] handlers)
26+
public IDisposable Add(IEnumerable<IJsonRpcHandler> handlers)
2727
{
28-
return Add(handlers.AsEnumerable());
28+
return Add(handlers.ToArray());
2929
}
3030

31-
public IDisposable Add(IEnumerable<IJsonRpcHandler> handlers)
31+
public IDisposable Add(params IJsonRpcHandler[] handlers)
3232
{
33-
var descriptors = new List<HandlerDescriptor>();
33+
var descriptors = new HashSet<HandlerDescriptor>();
3434
foreach (var handler in handlers)
3535
{
3636
foreach (var implementedInterface in handler.GetType().GetTypeInfo()
@@ -65,11 +65,15 @@ public IDisposable Add(IEnumerable<IJsonRpcHandler> handlers)
6565
() => _handlers.RemoveWhere(instance => instance.Handler == handler));
6666

6767
descriptors.Add(h);
68-
_handlers.Add(h);
6968
}
7069
}
7170

72-
return new ImutableDisposable(descriptors);
71+
foreach (var handler in descriptors)
72+
{
73+
_handlers.Add(handler);
74+
}
75+
76+
return new ImmutableDisposable(descriptors);
7377
}
7478

7579
private Type UnwrapGenericType(Type genericType, Type type)

src/Lsp/ImutableDisposable.cs renamed to src/Lsp/ImmutableDisposable.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,16 @@
33

44
namespace OmniSharp.Extensions.LanguageServer
55
{
6-
class ImutableDisposable : IDisposable
6+
class ImmutableDisposable : IDisposable
77
{
88
private readonly IEnumerable<IDisposable> _instances;
99

10-
public ImutableDisposable(IEnumerable<IDisposable> instances)
10+
public ImmutableDisposable(IEnumerable<IDisposable> instances)
1111
{
1212
_instances = instances;
1313
}
1414

15-
public ImutableDisposable(params IDisposable[] instances)
15+
public ImmutableDisposable(params IDisposable[] instances)
1616
{
1717
_instances = instances;
1818
}
@@ -25,4 +25,4 @@ public void Dispose()
2525
}
2626
}
2727
}
28-
}
28+
}

src/Lsp/LanguageServer.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -60,16 +60,16 @@ public IDisposable AddHandler(IJsonRpcHandler handler)
6060
return AddHandler(handler);
6161
}
6262

63-
public IDisposable AddHandlers(params IJsonRpcHandler[] handlers)
63+
public IDisposable AddHandlers(IEnumerable<IJsonRpcHandler> handlers)
6464
{
65-
return AddHandlers(handlers.AsEnumerable());
65+
return AddHandlers(handlers.ToArray());
6666
}
6767

68-
public IDisposable AddHandlers(IEnumerable<IJsonRpcHandler> handlers)
68+
public IDisposable AddHandlers(params IJsonRpcHandler[] handlers)
6969
{
7070
var handlerDisposable = _collection.Add(handlers);
7171

72-
return new ImutableDisposable(
72+
return new ImmutableDisposable(
7373
handlerDisposable,
7474
new Disposable(() =>
7575
{

0 commit comments

Comments
 (0)