File tree Expand file tree Collapse file tree 3 files changed +72
-0
lines changed
csharp/ql/test/library-tests/csharp11 Expand file tree Collapse file tree 3 files changed +72
-0
lines changed Original file line number Diff line number Diff line change
1
+ public interface INumber < T > where T : INumber < T >
2
+ {
3
+ static abstract T operator ++ ( T other ) ;
4
+
5
+ static virtual T operator -- ( T other ) => other ;
6
+
7
+ static abstract T Add ( T left , T right ) ;
8
+
9
+ static virtual T Subtract ( T left , T right ) => left ;
10
+
11
+ static T Zero ( ) => default ( T ) ;
12
+ }
13
+
14
+ public class Complex : INumber < Complex >
15
+ {
16
+ public double Real { get ; private set ; } = 0.0 ;
17
+ public double Imaginary { get ; private set ; } = 0.0 ;
18
+
19
+ public Complex ( ) { }
20
+
21
+ public static Complex Zero ( ) => new Complex ( ) ;
22
+
23
+ public static Complex operator ++ ( Complex other ) =>
24
+ new Complex { Real = other . Real + 1.0 , Imaginary = other . Imaginary } ;
25
+
26
+ public static Complex operator -- ( Complex other ) =>
27
+ new Complex { Real = other . Real - 1.0 , Imaginary = other . Imaginary } ;
28
+
29
+ public static Complex Add ( Complex left , Complex right ) =>
30
+ new Complex { Real = left . Real + right . Real , Imaginary = left . Imaginary + right . Imaginary } ;
31
+
32
+ public static Complex Subtract ( Complex left , Complex right ) =>
33
+ new Complex { Real = left . Real - right . Real , Imaginary = left . Imaginary - right . Imaginary } ;
34
+ }
Original file line number Diff line number Diff line change
1
+ interfacemembers
2
+ | INumber<> | StaticInterfaceMembers.cs:3:32:3:33 | ++ | abstract |
3
+ | INumber<> | StaticInterfaceMembers.cs:3:32:3:33 | ++ | public |
4
+ | INumber<> | StaticInterfaceMembers.cs:3:32:3:33 | ++ | static |
5
+ | INumber<> | StaticInterfaceMembers.cs:5:31:5:32 | -- | public |
6
+ | INumber<> | StaticInterfaceMembers.cs:5:31:5:32 | -- | static |
7
+ | INumber<> | StaticInterfaceMembers.cs:5:31:5:32 | -- | virtual |
8
+ | INumber<> | StaticInterfaceMembers.cs:7:23:7:25 | Add | abstract |
9
+ | INumber<> | StaticInterfaceMembers.cs:7:23:7:25 | Add | public |
10
+ | INumber<> | StaticInterfaceMembers.cs:7:23:7:25 | Add | static |
11
+ | INumber<> | StaticInterfaceMembers.cs:9:22:9:29 | Subtract | public |
12
+ | INumber<> | StaticInterfaceMembers.cs:9:22:9:29 | Subtract | static |
13
+ | INumber<> | StaticInterfaceMembers.cs:9:22:9:29 | Subtract | virtual |
14
+ | INumber<> | StaticInterfaceMembers.cs:11:14:11:17 | Zero | public |
15
+ | INumber<> | StaticInterfaceMembers.cs:11:14:11:17 | Zero | static |
16
+ implements
17
+ | StaticInterfaceMembers.cs:23:36:23:37 | ++ | StaticInterfaceMembers.cs:3:32:3:33 | ++ |
18
+ | StaticInterfaceMembers.cs:26:36:26:37 | -- | StaticInterfaceMembers.cs:5:31:5:32 | -- |
19
+ | StaticInterfaceMembers.cs:29:27:29:29 | Add | StaticInterfaceMembers.cs:7:23:7:25 | Add |
20
+ | StaticInterfaceMembers.cs:32:27:32:34 | Subtract | StaticInterfaceMembers.cs:9:22:9:29 | Subtract |
Original file line number Diff line number Diff line change
1
+ import csharp
2
+
3
+ query predicate interfacemembers ( string interface , Member m , string modifier ) {
4
+ exists ( Interface i |
5
+ i .isUnboundDeclaration ( ) and
6
+ i .getFile ( ) .getStem ( ) = "StaticInterfaceMembers" and
7
+ i .getName ( ) = interface and
8
+ m = i .getAMember ( ) and
9
+ modifier = m .getAModifier ( ) .getName ( )
10
+ )
11
+ }
12
+
13
+ query predicate implements ( Overridable o , Virtualizable v ) {
14
+ v .getFile ( ) .getStem ( ) = "StaticInterfaceMembers" and
15
+ ( v .isVirtual ( ) or v .isAbstract ( ) ) and
16
+ v .isStatic ( ) and
17
+ v .getAnImplementor ( ) = o
18
+ }
You can’t perform that action at this time.
0 commit comments