File tree 3 files changed +18
-14
lines changed
3 files changed +18
-14
lines changed Original file line number Diff line number Diff line change @@ -23,14 +23,14 @@ IEnumerator IEnumerable.GetEnumerator()
23
23
return GetEnumerator ( ) ;
24
24
}
25
25
26
- public IDisposable Add ( params IJsonRpcHandler [ ] handlers )
26
+ public IDisposable Add ( IEnumerable < IJsonRpcHandler > handlers )
27
27
{
28
- return Add ( handlers . AsEnumerable ( ) ) ;
28
+ return Add ( handlers . ToArray ( ) ) ;
29
29
}
30
30
31
- public IDisposable Add ( IEnumerable < IJsonRpcHandler > handlers )
31
+ public IDisposable Add ( params IJsonRpcHandler [ ] handlers )
32
32
{
33
- var descriptors = new List < HandlerDescriptor > ( ) ;
33
+ var descriptors = new HashSet < HandlerDescriptor > ( ) ;
34
34
foreach ( var handler in handlers )
35
35
{
36
36
foreach ( var implementedInterface in handler . GetType ( ) . GetTypeInfo ( )
@@ -65,11 +65,15 @@ public IDisposable Add(IEnumerable<IJsonRpcHandler> handlers)
65
65
( ) => _handlers . RemoveWhere ( instance => instance . Handler == handler ) ) ;
66
66
67
67
descriptors . Add ( h ) ;
68
- _handlers . Add ( h ) ;
69
68
}
70
69
}
71
70
72
- return new ImutableDisposable ( descriptors ) ;
71
+ foreach ( var handler in descriptors )
72
+ {
73
+ _handlers . Add ( handler ) ;
74
+ }
75
+
76
+ return new ImmutableDisposable ( descriptors ) ;
73
77
}
74
78
75
79
private Type UnwrapGenericType ( Type genericType , Type type )
Original file line number Diff line number Diff line change 3
3
4
4
namespace OmniSharp . Extensions . LanguageServer
5
5
{
6
- class ImutableDisposable : IDisposable
6
+ class ImmutableDisposable : IDisposable
7
7
{
8
8
private readonly IEnumerable < IDisposable > _instances ;
9
9
10
- public ImutableDisposable ( IEnumerable < IDisposable > instances )
10
+ public ImmutableDisposable ( IEnumerable < IDisposable > instances )
11
11
{
12
12
_instances = instances ;
13
13
}
14
14
15
- public ImutableDisposable ( params IDisposable [ ] instances )
15
+ public ImmutableDisposable ( params IDisposable [ ] instances )
16
16
{
17
17
_instances = instances ;
18
18
}
@@ -25,4 +25,4 @@ public void Dispose()
25
25
}
26
26
}
27
27
}
28
- }
28
+ }
Original file line number Diff line number Diff line change @@ -60,16 +60,16 @@ public IDisposable AddHandler(IJsonRpcHandler handler)
60
60
return AddHandler ( handler ) ;
61
61
}
62
62
63
- public IDisposable AddHandlers ( params IJsonRpcHandler [ ] handlers )
63
+ public IDisposable AddHandlers ( IEnumerable < IJsonRpcHandler > handlers )
64
64
{
65
- return AddHandlers ( handlers . AsEnumerable ( ) ) ;
65
+ return AddHandlers ( handlers . ToArray ( ) ) ;
66
66
}
67
67
68
- public IDisposable AddHandlers ( IEnumerable < IJsonRpcHandler > handlers )
68
+ public IDisposable AddHandlers ( params IJsonRpcHandler [ ] handlers )
69
69
{
70
70
var handlerDisposable = _collection . Add ( handlers ) ;
71
71
72
- return new ImutableDisposable (
72
+ return new ImmutableDisposable (
73
73
handlerDisposable ,
74
74
new Disposable ( ( ) =>
75
75
{
You can’t perform that action at this time.
0 commit comments