@@ -17,26 +17,31 @@ public static bool IsNotification(TypeDeclarationSyntax symbol) =>
17
17
symbol . BaseList ? . Types
18
18
. Any (
19
19
z =>
20
- z . Type is SimpleNameSyntax and (
21
- { Identifier : { Text : "IJsonRpcNotificationHandler" } , Arity : 0 or 1 }
22
- or { Identifier : { Text : "IRequest" } , Arity : 0 }
20
+ z . Type is SimpleNameSyntax simpleNameSyntax && (
21
+ ( simpleNameSyntax . Identifier . Text == "IJsonRpcNotificationHandler" && ( simpleNameSyntax . Arity == 0 || simpleNameSyntax . Arity == 1 ) )
22
+ || ( simpleNameSyntax . Identifier . Text == "IRequest" && simpleNameSyntax . Arity == 0 )
23
+ || ( simpleNameSyntax . Identifier . Text == "IRequest" && simpleNameSyntax . Arity == 1 && IsUnitRequest ( z . Type ) )
23
24
)
24
25
) == true ;
25
26
26
27
public static bool IsRequest ( TypeDeclarationSyntax symbol ) =>
27
28
symbol . BaseList ? . Types
28
29
. Any (
29
30
z =>
30
- z . Type is SimpleNameSyntax and (
31
- { Identifier : { Text : "IJsonRpcRequestHandler" } , Arity : 1 or 2 }
32
- or { Identifier : { Text : "ICanBeResolvedHandler" } , Arity : 1 }
33
- or { Identifier : { Text : "IPartialItemRequest" or "IPartialItemWithInitialValueRequest" } , Arity : 2 }
34
- or { Identifier : { Text : "IPartialItemsRequest" or "IPartialItemsWithInitialValueRequest" } , Arity : 2 }
35
- or { Identifier : { Text : "IRequest" } , Arity : 1 }
36
- or { Identifier : { Text : "IJsonRpcRequest" } , Arity : 0 }
31
+ z . Type is SimpleNameSyntax simpleNameSyntax && (
32
+ ( simpleNameSyntax . Identifier . Text == "IJsonRpcRequestHandler" && ( simpleNameSyntax . Arity is 1 or 2 ) )
33
+ || ( simpleNameSyntax . Identifier . Text == "ICanBeResolvedHandler" && simpleNameSyntax . Arity == 1 )
34
+ || ( simpleNameSyntax . Identifier . Text is "IPartialItemRequest" or "IPartialItemWithInitialValueRequest" && simpleNameSyntax . Arity == 2 )
35
+ || ( simpleNameSyntax . Identifier . Text is "IPartialItemsRequest" or "IPartialItemsWithInitialValueRequest" && simpleNameSyntax . Arity == 2 )
36
+ || ( simpleNameSyntax . Identifier . Text == "IRequest" && simpleNameSyntax . Arity == 1 && ! IsUnitRequest ( simpleNameSyntax ) )
37
+ || ( simpleNameSyntax . Identifier . Text == "IJsonRpcRequest" && simpleNameSyntax . Arity == 0 )
37
38
)
38
39
) == true ;
39
40
41
+ private static bool IsUnitRequest ( TypeSyntax type ) =>
42
+ type is GenericNameSyntax gns && gns . Identifier . Text == "IRequest" && gns . TypeArgumentList . Arguments . Count == 1 &&
43
+ gns . TypeArgumentList . Arguments [ 0 ] is SimpleNameSyntax sns && sns . Identifier . Text == "Unit" ;
44
+
40
45
public static ExpressionSyntax GetJsonRpcMethodName ( TypeDeclarationSyntax interfaceSyntax )
41
46
{
42
47
var methodAttribute = interfaceSyntax . AttributeLists
0 commit comments