File tree Expand file tree Collapse file tree 3 files changed +70
-0
lines changed
csharp/ql/test/library-tests/typeparameterconstraints Expand file tree Collapse file tree 3 files changed +70
-0
lines changed Original file line number Diff line number Diff line change 1+ using System ;
2+ using System . Collections . Generic ;
3+
4+ public class TestClass
5+ {
6+ public void M1 < T1 > ( T1 x ) where T1 : class { }
7+
8+ public void M2 < T2 > ( T2 x ) where T2 : struct { }
9+
10+ public void M3 < T3 > ( T3 x ) where T3 : unmanaged { }
11+
12+ public void M4 < T4 > ( T4 x ) where T4 : new ( ) { }
13+
14+ public void M5 < T5 > ( T5 x ) where T5 : notnull { }
15+
16+ public void M6 < T6 > ( T6 x ) where T6 : IList < object > { }
17+
18+ public void M7 < T7 > ( T7 x ) where T7 : allows ref struct { }
19+ }
Original file line number Diff line number Diff line change 1+ typeParameterContraints
2+ | TypeParameterConstraints.cs:6:20:6:21 | T1 | file://:0:0:0:0 | where T1: ... |
3+ | TypeParameterConstraints.cs:8:20:8:21 | T2 | file://:0:0:0:0 | where T2: ... |
4+ | TypeParameterConstraints.cs:10:20:10:21 | T3 | file://:0:0:0:0 | where T3: ... |
5+ | TypeParameterConstraints.cs:12:20:12:21 | T4 | file://:0:0:0:0 | where T4: ... |
6+ | TypeParameterConstraints.cs:14:20:14:21 | T5 | file://:0:0:0:0 | where T5: ... |
7+ | TypeParameterConstraints.cs:16:20:16:21 | T6 | file://:0:0:0:0 | where T6: ... |
8+ | TypeParameterConstraints.cs:18:20:18:21 | T7 | file://:0:0:0:0 | where T7: ... |
9+ specificParameterConstraints
10+ | TypeParameterConstraints.cs:16:20:16:21 | T6 | IList<object> |
11+ hasConstructorConstraint
12+ | TypeParameterConstraints.cs:12:20:12:21 | T4 | file://:0:0:0:0 | where T4: ... |
13+ hasRefTypeConstraint
14+ | TypeParameterConstraints.cs:6:20:6:21 | T1 | file://:0:0:0:0 | where T1: ... |
15+ hasValueTypeConstraint
16+ | TypeParameterConstraints.cs:8:20:8:21 | T2 | file://:0:0:0:0 | where T2: ... |
17+ | TypeParameterConstraints.cs:10:20:10:21 | T3 | file://:0:0:0:0 | where T3: ... |
18+ hasUnmanagedTypeConstraint
19+ | TypeParameterConstraints.cs:10:20:10:21 | T3 | file://:0:0:0:0 | where T3: ... |
20+ hasNullableRefTypeConstraint
Original file line number Diff line number Diff line change 1+ import csharp
2+
3+ query predicate typeParameterContraints ( TypeParameter tp , TypeParameterConstraints tpc ) {
4+ tp .fromSource ( ) and tp .getConstraints ( ) = tpc
5+ }
6+
7+ query predicate specificParameterConstraints ( TypeParameter tp , string type ) {
8+ exists ( TypeParameterConstraints tpc |
9+ typeParameterContraints ( tp , tpc ) and type = tpc .getATypeConstraint ( ) .toStringWithTypes ( )
10+ )
11+ }
12+
13+ query predicate hasConstructorConstraint ( TypeParameter tp , TypeParameterConstraints tpc ) {
14+ typeParameterContraints ( tp , tpc ) and tpc .hasConstructorConstraint ( )
15+ }
16+
17+ query predicate hasRefTypeConstraint ( TypeParameter tp , TypeParameterConstraints tpc ) {
18+ typeParameterContraints ( tp , tpc ) and tpc .hasRefTypeConstraint ( )
19+ }
20+
21+ query predicate hasValueTypeConstraint ( TypeParameter tp , TypeParameterConstraints tpc ) {
22+ typeParameterContraints ( tp , tpc ) and tpc .hasValueTypeConstraint ( )
23+ }
24+
25+ query predicate hasUnmanagedTypeConstraint ( TypeParameter tp , TypeParameterConstraints tpc ) {
26+ typeParameterContraints ( tp , tpc ) and tpc .hasUnmanagedTypeConstraint ( )
27+ }
28+
29+ query predicate hasNullableRefTypeConstraint ( TypeParameter tp , TypeParameterConstraints tpc ) {
30+ typeParameterContraints ( tp , tpc ) and tpc .hasNullableRefTypeConstraint ( )
31+ }
You can’t perform that action at this time.
0 commit comments