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