mirror of
https://github.com/github/codeql.git
synced 2025-12-24 12:46:34 +01:00
Merge pull request #12707 from michaelnebel/csharp/dataflowstaticoperators
C#: Data flow tests for virtual and abstract operators.
This commit is contained in:
@@ -4,12 +4,22 @@ public class Operators
|
||||
static void Sink(object o) { }
|
||||
static T Source<T>(object source) => throw null;
|
||||
|
||||
public class C
|
||||
public interface I<T> where T : I<T>
|
||||
{
|
||||
static virtual T operator *(T x, T y) => x;
|
||||
static abstract T operator /(T x, T y);
|
||||
static abstract T operator checked /(T x, T y);
|
||||
}
|
||||
|
||||
public class C : I<C>
|
||||
{
|
||||
public static C operator +(C x, C y) => x;
|
||||
|
||||
public static C operator checked -(C x, C y) => y;
|
||||
public static C operator -(C x, C y) => x;
|
||||
|
||||
public static C operator /(C x, C y) => y;
|
||||
public static C operator checked /(C x, C y) => y;
|
||||
}
|
||||
|
||||
public void M1()
|
||||
@@ -35,4 +45,43 @@ public class Operators
|
||||
var z = checked(x - y);
|
||||
Sink(z); // $ hasValueFlow=6
|
||||
}
|
||||
|
||||
public void M4Aux<T>(T x, T y) where T : I<T>
|
||||
{
|
||||
var z = x * y;
|
||||
Sink(z); // $ hasValueFlow=7
|
||||
}
|
||||
|
||||
public void M4()
|
||||
{
|
||||
var x = Source<C>(7);
|
||||
var y = Source<C>(8);
|
||||
M4Aux(x, y);
|
||||
}
|
||||
|
||||
public void M5Aux<T>(T x, T y) where T : I<T>
|
||||
{
|
||||
var z = x / y;
|
||||
Sink(z); // $ hasValueFlow=10
|
||||
}
|
||||
|
||||
public void M5()
|
||||
{
|
||||
var x = Source<C>(9);
|
||||
var y = Source<C>(10);
|
||||
M5Aux(x, y);
|
||||
}
|
||||
|
||||
public void M6Aux<T>(T x, T y) where T : I<T>
|
||||
{
|
||||
var z = checked(x / y);
|
||||
Sink(z); // $ hasValueFlow=12
|
||||
}
|
||||
|
||||
public void M6()
|
||||
{
|
||||
var x = Source<C>(11);
|
||||
var y = Source<C>(12);
|
||||
M6Aux(x, y);
|
||||
}
|
||||
}
|
||||
@@ -1,80 +1,179 @@
|
||||
failures
|
||||
edges
|
||||
| Operator.cs:9:38:9:38 | x : C | Operator.cs:9:49:9:49 | access to parameter x : C |
|
||||
| Operator.cs:9:38:9:38 | x : C | Operator.cs:9:49:9:49 | access to parameter x : C |
|
||||
| Operator.cs:11:51:11:51 | y : C | Operator.cs:11:57:11:57 | access to parameter y : C |
|
||||
| Operator.cs:11:51:11:51 | y : C | Operator.cs:11:57:11:57 | access to parameter y : C |
|
||||
| Operator.cs:12:38:12:38 | x : C | Operator.cs:12:49:12:49 | access to parameter x : C |
|
||||
| Operator.cs:12:38:12:38 | x : C | Operator.cs:12:49:12:49 | access to parameter x : C |
|
||||
| Operator.cs:17:17:17:28 | call to method Source<C> : C | Operator.cs:19:17:19:17 | access to local variable x : C |
|
||||
| Operator.cs:17:17:17:28 | call to method Source<C> : C | Operator.cs:19:17:19:17 | access to local variable x : C |
|
||||
| Operator.cs:19:17:19:17 | access to local variable x : C | Operator.cs:9:38:9:38 | x : C |
|
||||
| Operator.cs:19:17:19:17 | access to local variable x : C | Operator.cs:9:38:9:38 | x : C |
|
||||
| Operator.cs:19:17:19:17 | access to local variable x : C | Operator.cs:19:17:19:21 | call to operator + : C |
|
||||
| Operator.cs:19:17:19:17 | access to local variable x : C | Operator.cs:19:17:19:21 | call to operator + : C |
|
||||
| Operator.cs:19:17:19:21 | call to operator + : C | Operator.cs:20:14:20:14 | access to local variable z |
|
||||
| Operator.cs:19:17:19:21 | call to operator + : C | Operator.cs:20:14:20:14 | access to local variable z |
|
||||
| Operator.cs:25:17:25:28 | call to method Source<C> : C | Operator.cs:27:27:27:27 | access to local variable x : C |
|
||||
| Operator.cs:25:17:25:28 | call to method Source<C> : C | Operator.cs:27:27:27:27 | access to local variable x : C |
|
||||
| Operator.cs:27:27:27:27 | access to local variable x : C | Operator.cs:12:38:12:38 | x : C |
|
||||
| Operator.cs:27:27:27:27 | access to local variable x : C | Operator.cs:12:38:12:38 | x : C |
|
||||
| Operator.cs:27:27:27:27 | access to local variable x : C | Operator.cs:27:27:27:31 | call to operator - : C |
|
||||
| Operator.cs:27:27:27:27 | access to local variable x : C | Operator.cs:27:27:27:31 | call to operator - : C |
|
||||
| Operator.cs:27:27:27:31 | call to operator - : C | Operator.cs:28:14:28:14 | access to local variable z |
|
||||
| Operator.cs:27:27:27:31 | call to operator - : C | Operator.cs:28:14:28:14 | access to local variable z |
|
||||
| Operator.cs:34:17:34:28 | call to method Source<C> : C | Operator.cs:35:29:35:29 | access to local variable y : C |
|
||||
| Operator.cs:34:17:34:28 | call to method Source<C> : C | Operator.cs:35:29:35:29 | access to local variable y : C |
|
||||
| Operator.cs:35:25:35:29 | call to operator checked - : C | Operator.cs:36:14:36:14 | access to local variable z |
|
||||
| Operator.cs:35:25:35:29 | call to operator checked - : C | Operator.cs:36:14:36:14 | access to local variable z |
|
||||
| Operator.cs:35:29:35:29 | access to local variable y : C | Operator.cs:11:51:11:51 | y : C |
|
||||
| Operator.cs:35:29:35:29 | access to local variable y : C | Operator.cs:11:51:11:51 | y : C |
|
||||
| Operator.cs:35:29:35:29 | access to local variable y : C | Operator.cs:35:25:35:29 | call to operator checked - : C |
|
||||
| Operator.cs:35:29:35:29 | access to local variable y : C | Operator.cs:35:25:35:29 | call to operator checked - : C |
|
||||
| Operator.cs:9:39:9:39 | x : C | Operator.cs:9:50:9:50 | access to parameter x : C |
|
||||
| Operator.cs:9:39:9:39 | x : C | Operator.cs:9:50:9:50 | access to parameter x : C |
|
||||
| Operator.cs:16:38:16:38 | x : C | Operator.cs:16:49:16:49 | access to parameter x : C |
|
||||
| Operator.cs:16:38:16:38 | x : C | Operator.cs:16:49:16:49 | access to parameter x : C |
|
||||
| Operator.cs:18:51:18:51 | y : C | Operator.cs:18:57:18:57 | access to parameter y : C |
|
||||
| Operator.cs:18:51:18:51 | y : C | Operator.cs:18:57:18:57 | access to parameter y : C |
|
||||
| Operator.cs:19:38:19:38 | x : C | Operator.cs:19:49:19:49 | access to parameter x : C |
|
||||
| Operator.cs:19:38:19:38 | x : C | Operator.cs:19:49:19:49 | access to parameter x : C |
|
||||
| Operator.cs:21:43:21:43 | y : C | Operator.cs:21:49:21:49 | access to parameter y : C |
|
||||
| Operator.cs:21:43:21:43 | y : C | Operator.cs:21:49:21:49 | access to parameter y : C |
|
||||
| Operator.cs:22:51:22:51 | y : C | Operator.cs:22:57:22:57 | access to parameter y : C |
|
||||
| Operator.cs:22:51:22:51 | y : C | Operator.cs:22:57:22:57 | access to parameter y : C |
|
||||
| Operator.cs:27:17:27:28 | call to method Source<C> : C | Operator.cs:29:17:29:17 | access to local variable x : C |
|
||||
| Operator.cs:27:17:27:28 | call to method Source<C> : C | Operator.cs:29:17:29:17 | access to local variable x : C |
|
||||
| Operator.cs:29:17:29:17 | access to local variable x : C | Operator.cs:16:38:16:38 | x : C |
|
||||
| Operator.cs:29:17:29:17 | access to local variable x : C | Operator.cs:16:38:16:38 | x : C |
|
||||
| Operator.cs:29:17:29:17 | access to local variable x : C | Operator.cs:29:17:29:21 | call to operator + : C |
|
||||
| Operator.cs:29:17:29:17 | access to local variable x : C | Operator.cs:29:17:29:21 | call to operator + : C |
|
||||
| Operator.cs:29:17:29:21 | call to operator + : C | Operator.cs:30:14:30:14 | access to local variable z |
|
||||
| Operator.cs:29:17:29:21 | call to operator + : C | Operator.cs:30:14:30:14 | access to local variable z |
|
||||
| Operator.cs:35:17:35:28 | call to method Source<C> : C | Operator.cs:37:27:37:27 | access to local variable x : C |
|
||||
| Operator.cs:35:17:35:28 | call to method Source<C> : C | Operator.cs:37:27:37:27 | access to local variable x : C |
|
||||
| Operator.cs:37:27:37:27 | access to local variable x : C | Operator.cs:19:38:19:38 | x : C |
|
||||
| Operator.cs:37:27:37:27 | access to local variable x : C | Operator.cs:19:38:19:38 | x : C |
|
||||
| Operator.cs:37:27:37:27 | access to local variable x : C | Operator.cs:37:27:37:31 | call to operator - : C |
|
||||
| Operator.cs:37:27:37:27 | access to local variable x : C | Operator.cs:37:27:37:31 | call to operator - : C |
|
||||
| Operator.cs:37:27:37:31 | call to operator - : C | Operator.cs:38:14:38:14 | access to local variable z |
|
||||
| Operator.cs:37:27:37:31 | call to operator - : C | Operator.cs:38:14:38:14 | access to local variable z |
|
||||
| Operator.cs:44:17:44:28 | call to method Source<C> : C | Operator.cs:45:29:45:29 | access to local variable y : C |
|
||||
| Operator.cs:44:17:44:28 | call to method Source<C> : C | Operator.cs:45:29:45:29 | access to local variable y : C |
|
||||
| Operator.cs:45:25:45:29 | call to operator checked - : C | Operator.cs:46:14:46:14 | access to local variable z |
|
||||
| Operator.cs:45:25:45:29 | call to operator checked - : C | Operator.cs:46:14:46:14 | access to local variable z |
|
||||
| Operator.cs:45:29:45:29 | access to local variable y : C | Operator.cs:18:51:18:51 | y : C |
|
||||
| Operator.cs:45:29:45:29 | access to local variable y : C | Operator.cs:18:51:18:51 | y : C |
|
||||
| Operator.cs:45:29:45:29 | access to local variable y : C | Operator.cs:45:25:45:29 | call to operator checked - : C |
|
||||
| Operator.cs:45:29:45:29 | access to local variable y : C | Operator.cs:45:25:45:29 | call to operator checked - : C |
|
||||
| Operator.cs:49:28:49:28 | x : C | Operator.cs:51:17:51:17 | access to parameter x : C |
|
||||
| Operator.cs:49:28:49:28 | x : C | Operator.cs:51:17:51:17 | access to parameter x : C |
|
||||
| Operator.cs:51:17:51:17 | access to parameter x : C | Operator.cs:9:39:9:39 | x : C |
|
||||
| Operator.cs:51:17:51:17 | access to parameter x : C | Operator.cs:9:39:9:39 | x : C |
|
||||
| Operator.cs:51:17:51:17 | access to parameter x : C | Operator.cs:51:17:51:21 | call to operator * : C |
|
||||
| Operator.cs:51:17:51:17 | access to parameter x : C | Operator.cs:51:17:51:21 | call to operator * : C |
|
||||
| Operator.cs:51:17:51:21 | call to operator * : C | Operator.cs:52:14:52:14 | (...) ... |
|
||||
| Operator.cs:51:17:51:21 | call to operator * : C | Operator.cs:52:14:52:14 | (...) ... |
|
||||
| Operator.cs:57:17:57:28 | call to method Source<C> : C | Operator.cs:59:15:59:15 | access to local variable x : C |
|
||||
| Operator.cs:57:17:57:28 | call to method Source<C> : C | Operator.cs:59:15:59:15 | access to local variable x : C |
|
||||
| Operator.cs:59:15:59:15 | access to local variable x : C | Operator.cs:49:28:49:28 | x : C |
|
||||
| Operator.cs:59:15:59:15 | access to local variable x : C | Operator.cs:49:28:49:28 | x : C |
|
||||
| Operator.cs:62:33:62:33 | y : C | Operator.cs:64:21:64:21 | access to parameter y : C |
|
||||
| Operator.cs:62:33:62:33 | y : C | Operator.cs:64:21:64:21 | access to parameter y : C |
|
||||
| Operator.cs:64:17:64:21 | call to operator / : C | Operator.cs:65:14:65:14 | (...) ... |
|
||||
| Operator.cs:64:17:64:21 | call to operator / : C | Operator.cs:65:14:65:14 | (...) ... |
|
||||
| Operator.cs:64:21:64:21 | access to parameter y : C | Operator.cs:21:43:21:43 | y : C |
|
||||
| Operator.cs:64:21:64:21 | access to parameter y : C | Operator.cs:21:43:21:43 | y : C |
|
||||
| Operator.cs:64:21:64:21 | access to parameter y : C | Operator.cs:64:17:64:21 | call to operator / : C |
|
||||
| Operator.cs:64:21:64:21 | access to parameter y : C | Operator.cs:64:17:64:21 | call to operator / : C |
|
||||
| Operator.cs:71:17:71:29 | call to method Source<C> : C | Operator.cs:72:18:72:18 | access to local variable y : C |
|
||||
| Operator.cs:71:17:71:29 | call to method Source<C> : C | Operator.cs:72:18:72:18 | access to local variable y : C |
|
||||
| Operator.cs:72:18:72:18 | access to local variable y : C | Operator.cs:62:33:62:33 | y : C |
|
||||
| Operator.cs:72:18:72:18 | access to local variable y : C | Operator.cs:62:33:62:33 | y : C |
|
||||
| Operator.cs:75:33:75:33 | y : C | Operator.cs:77:29:77:29 | access to parameter y : C |
|
||||
| Operator.cs:75:33:75:33 | y : C | Operator.cs:77:29:77:29 | access to parameter y : C |
|
||||
| Operator.cs:77:25:77:29 | call to operator checked / : C | Operator.cs:78:14:78:14 | (...) ... |
|
||||
| Operator.cs:77:25:77:29 | call to operator checked / : C | Operator.cs:78:14:78:14 | (...) ... |
|
||||
| Operator.cs:77:29:77:29 | access to parameter y : C | Operator.cs:22:51:22:51 | y : C |
|
||||
| Operator.cs:77:29:77:29 | access to parameter y : C | Operator.cs:22:51:22:51 | y : C |
|
||||
| Operator.cs:77:29:77:29 | access to parameter y : C | Operator.cs:77:25:77:29 | call to operator checked / : C |
|
||||
| Operator.cs:77:29:77:29 | access to parameter y : C | Operator.cs:77:25:77:29 | call to operator checked / : C |
|
||||
| Operator.cs:84:17:84:29 | call to method Source<C> : C | Operator.cs:85:18:85:18 | access to local variable y : C |
|
||||
| Operator.cs:84:17:84:29 | call to method Source<C> : C | Operator.cs:85:18:85:18 | access to local variable y : C |
|
||||
| Operator.cs:85:18:85:18 | access to local variable y : C | Operator.cs:75:33:75:33 | y : C |
|
||||
| Operator.cs:85:18:85:18 | access to local variable y : C | Operator.cs:75:33:75:33 | y : C |
|
||||
nodes
|
||||
| Operator.cs:9:38:9:38 | x : C | semmle.label | x : C |
|
||||
| Operator.cs:9:38:9:38 | x : C | semmle.label | x : C |
|
||||
| Operator.cs:9:49:9:49 | access to parameter x : C | semmle.label | access to parameter x : C |
|
||||
| Operator.cs:9:49:9:49 | access to parameter x : C | semmle.label | access to parameter x : C |
|
||||
| Operator.cs:11:51:11:51 | y : C | semmle.label | y : C |
|
||||
| Operator.cs:11:51:11:51 | y : C | semmle.label | y : C |
|
||||
| Operator.cs:11:57:11:57 | access to parameter y : C | semmle.label | access to parameter y : C |
|
||||
| Operator.cs:11:57:11:57 | access to parameter y : C | semmle.label | access to parameter y : C |
|
||||
| Operator.cs:12:38:12:38 | x : C | semmle.label | x : C |
|
||||
| Operator.cs:12:38:12:38 | x : C | semmle.label | x : C |
|
||||
| Operator.cs:12:49:12:49 | access to parameter x : C | semmle.label | access to parameter x : C |
|
||||
| Operator.cs:12:49:12:49 | access to parameter x : C | semmle.label | access to parameter x : C |
|
||||
| Operator.cs:17:17:17:28 | call to method Source<C> : C | semmle.label | call to method Source<C> : C |
|
||||
| Operator.cs:17:17:17:28 | call to method Source<C> : C | semmle.label | call to method Source<C> : C |
|
||||
| Operator.cs:19:17:19:17 | access to local variable x : C | semmle.label | access to local variable x : C |
|
||||
| Operator.cs:19:17:19:17 | access to local variable x : C | semmle.label | access to local variable x : C |
|
||||
| Operator.cs:19:17:19:21 | call to operator + : C | semmle.label | call to operator + : C |
|
||||
| Operator.cs:19:17:19:21 | call to operator + : C | semmle.label | call to operator + : C |
|
||||
| Operator.cs:20:14:20:14 | access to local variable z | semmle.label | access to local variable z |
|
||||
| Operator.cs:20:14:20:14 | access to local variable z | semmle.label | access to local variable z |
|
||||
| Operator.cs:25:17:25:28 | call to method Source<C> : C | semmle.label | call to method Source<C> : C |
|
||||
| Operator.cs:25:17:25:28 | call to method Source<C> : C | semmle.label | call to method Source<C> : C |
|
||||
| Operator.cs:27:27:27:27 | access to local variable x : C | semmle.label | access to local variable x : C |
|
||||
| Operator.cs:27:27:27:27 | access to local variable x : C | semmle.label | access to local variable x : C |
|
||||
| Operator.cs:27:27:27:31 | call to operator - : C | semmle.label | call to operator - : C |
|
||||
| Operator.cs:27:27:27:31 | call to operator - : C | semmle.label | call to operator - : C |
|
||||
| Operator.cs:28:14:28:14 | access to local variable z | semmle.label | access to local variable z |
|
||||
| Operator.cs:28:14:28:14 | access to local variable z | semmle.label | access to local variable z |
|
||||
| Operator.cs:34:17:34:28 | call to method Source<C> : C | semmle.label | call to method Source<C> : C |
|
||||
| Operator.cs:34:17:34:28 | call to method Source<C> : C | semmle.label | call to method Source<C> : C |
|
||||
| Operator.cs:35:25:35:29 | call to operator checked - : C | semmle.label | call to operator checked - : C |
|
||||
| Operator.cs:35:25:35:29 | call to operator checked - : C | semmle.label | call to operator checked - : C |
|
||||
| Operator.cs:35:29:35:29 | access to local variable y : C | semmle.label | access to local variable y : C |
|
||||
| Operator.cs:35:29:35:29 | access to local variable y : C | semmle.label | access to local variable y : C |
|
||||
| Operator.cs:36:14:36:14 | access to local variable z | semmle.label | access to local variable z |
|
||||
| Operator.cs:36:14:36:14 | access to local variable z | semmle.label | access to local variable z |
|
||||
| Operator.cs:9:39:9:39 | x : C | semmle.label | x : C |
|
||||
| Operator.cs:9:39:9:39 | x : C | semmle.label | x : C |
|
||||
| Operator.cs:9:50:9:50 | access to parameter x : C | semmle.label | access to parameter x : C |
|
||||
| Operator.cs:9:50:9:50 | access to parameter x : C | semmle.label | access to parameter x : C |
|
||||
| Operator.cs:16:38:16:38 | x : C | semmle.label | x : C |
|
||||
| Operator.cs:16:38:16:38 | x : C | semmle.label | x : C |
|
||||
| Operator.cs:16:49:16:49 | access to parameter x : C | semmle.label | access to parameter x : C |
|
||||
| Operator.cs:16:49:16:49 | access to parameter x : C | semmle.label | access to parameter x : C |
|
||||
| Operator.cs:18:51:18:51 | y : C | semmle.label | y : C |
|
||||
| Operator.cs:18:51:18:51 | y : C | semmle.label | y : C |
|
||||
| Operator.cs:18:57:18:57 | access to parameter y : C | semmle.label | access to parameter y : C |
|
||||
| Operator.cs:18:57:18:57 | access to parameter y : C | semmle.label | access to parameter y : C |
|
||||
| Operator.cs:19:38:19:38 | x : C | semmle.label | x : C |
|
||||
| Operator.cs:19:38:19:38 | x : C | semmle.label | x : C |
|
||||
| Operator.cs:19:49:19:49 | access to parameter x : C | semmle.label | access to parameter x : C |
|
||||
| Operator.cs:19:49:19:49 | access to parameter x : C | semmle.label | access to parameter x : C |
|
||||
| Operator.cs:21:43:21:43 | y : C | semmle.label | y : C |
|
||||
| Operator.cs:21:43:21:43 | y : C | semmle.label | y : C |
|
||||
| Operator.cs:21:49:21:49 | access to parameter y : C | semmle.label | access to parameter y : C |
|
||||
| Operator.cs:21:49:21:49 | access to parameter y : C | semmle.label | access to parameter y : C |
|
||||
| Operator.cs:22:51:22:51 | y : C | semmle.label | y : C |
|
||||
| Operator.cs:22:51:22:51 | y : C | semmle.label | y : C |
|
||||
| Operator.cs:22:57:22:57 | access to parameter y : C | semmle.label | access to parameter y : C |
|
||||
| Operator.cs:22:57:22:57 | access to parameter y : C | semmle.label | access to parameter y : C |
|
||||
| Operator.cs:27:17:27:28 | call to method Source<C> : C | semmle.label | call to method Source<C> : C |
|
||||
| Operator.cs:27:17:27:28 | call to method Source<C> : C | semmle.label | call to method Source<C> : C |
|
||||
| Operator.cs:29:17:29:17 | access to local variable x : C | semmle.label | access to local variable x : C |
|
||||
| Operator.cs:29:17:29:17 | access to local variable x : C | semmle.label | access to local variable x : C |
|
||||
| Operator.cs:29:17:29:21 | call to operator + : C | semmle.label | call to operator + : C |
|
||||
| Operator.cs:29:17:29:21 | call to operator + : C | semmle.label | call to operator + : C |
|
||||
| Operator.cs:30:14:30:14 | access to local variable z | semmle.label | access to local variable z |
|
||||
| Operator.cs:30:14:30:14 | access to local variable z | semmle.label | access to local variable z |
|
||||
| Operator.cs:35:17:35:28 | call to method Source<C> : C | semmle.label | call to method Source<C> : C |
|
||||
| Operator.cs:35:17:35:28 | call to method Source<C> : C | semmle.label | call to method Source<C> : C |
|
||||
| Operator.cs:37:27:37:27 | access to local variable x : C | semmle.label | access to local variable x : C |
|
||||
| Operator.cs:37:27:37:27 | access to local variable x : C | semmle.label | access to local variable x : C |
|
||||
| Operator.cs:37:27:37:31 | call to operator - : C | semmle.label | call to operator - : C |
|
||||
| Operator.cs:37:27:37:31 | call to operator - : C | semmle.label | call to operator - : C |
|
||||
| Operator.cs:38:14:38:14 | access to local variable z | semmle.label | access to local variable z |
|
||||
| Operator.cs:38:14:38:14 | access to local variable z | semmle.label | access to local variable z |
|
||||
| Operator.cs:44:17:44:28 | call to method Source<C> : C | semmle.label | call to method Source<C> : C |
|
||||
| Operator.cs:44:17:44:28 | call to method Source<C> : C | semmle.label | call to method Source<C> : C |
|
||||
| Operator.cs:45:25:45:29 | call to operator checked - : C | semmle.label | call to operator checked - : C |
|
||||
| Operator.cs:45:25:45:29 | call to operator checked - : C | semmle.label | call to operator checked - : C |
|
||||
| Operator.cs:45:29:45:29 | access to local variable y : C | semmle.label | access to local variable y : C |
|
||||
| Operator.cs:45:29:45:29 | access to local variable y : C | semmle.label | access to local variable y : C |
|
||||
| Operator.cs:46:14:46:14 | access to local variable z | semmle.label | access to local variable z |
|
||||
| Operator.cs:46:14:46:14 | access to local variable z | semmle.label | access to local variable z |
|
||||
| Operator.cs:49:28:49:28 | x : C | semmle.label | x : C |
|
||||
| Operator.cs:49:28:49:28 | x : C | semmle.label | x : C |
|
||||
| Operator.cs:51:17:51:17 | access to parameter x : C | semmle.label | access to parameter x : C |
|
||||
| Operator.cs:51:17:51:17 | access to parameter x : C | semmle.label | access to parameter x : C |
|
||||
| Operator.cs:51:17:51:21 | call to operator * : C | semmle.label | call to operator * : C |
|
||||
| Operator.cs:51:17:51:21 | call to operator * : C | semmle.label | call to operator * : C |
|
||||
| Operator.cs:52:14:52:14 | (...) ... | semmle.label | (...) ... |
|
||||
| Operator.cs:52:14:52:14 | (...) ... | semmle.label | (...) ... |
|
||||
| Operator.cs:57:17:57:28 | call to method Source<C> : C | semmle.label | call to method Source<C> : C |
|
||||
| Operator.cs:57:17:57:28 | call to method Source<C> : C | semmle.label | call to method Source<C> : C |
|
||||
| Operator.cs:59:15:59:15 | access to local variable x : C | semmle.label | access to local variable x : C |
|
||||
| Operator.cs:59:15:59:15 | access to local variable x : C | semmle.label | access to local variable x : C |
|
||||
| Operator.cs:62:33:62:33 | y : C | semmle.label | y : C |
|
||||
| Operator.cs:62:33:62:33 | y : C | semmle.label | y : C |
|
||||
| Operator.cs:64:17:64:21 | call to operator / : C | semmle.label | call to operator / : C |
|
||||
| Operator.cs:64:17:64:21 | call to operator / : C | semmle.label | call to operator / : C |
|
||||
| Operator.cs:64:21:64:21 | access to parameter y : C | semmle.label | access to parameter y : C |
|
||||
| Operator.cs:64:21:64:21 | access to parameter y : C | semmle.label | access to parameter y : C |
|
||||
| Operator.cs:65:14:65:14 | (...) ... | semmle.label | (...) ... |
|
||||
| Operator.cs:65:14:65:14 | (...) ... | semmle.label | (...) ... |
|
||||
| Operator.cs:71:17:71:29 | call to method Source<C> : C | semmle.label | call to method Source<C> : C |
|
||||
| Operator.cs:71:17:71:29 | call to method Source<C> : C | semmle.label | call to method Source<C> : C |
|
||||
| Operator.cs:72:18:72:18 | access to local variable y : C | semmle.label | access to local variable y : C |
|
||||
| Operator.cs:72:18:72:18 | access to local variable y : C | semmle.label | access to local variable y : C |
|
||||
| Operator.cs:75:33:75:33 | y : C | semmle.label | y : C |
|
||||
| Operator.cs:75:33:75:33 | y : C | semmle.label | y : C |
|
||||
| Operator.cs:77:25:77:29 | call to operator checked / : C | semmle.label | call to operator checked / : C |
|
||||
| Operator.cs:77:25:77:29 | call to operator checked / : C | semmle.label | call to operator checked / : C |
|
||||
| Operator.cs:77:29:77:29 | access to parameter y : C | semmle.label | access to parameter y : C |
|
||||
| Operator.cs:77:29:77:29 | access to parameter y : C | semmle.label | access to parameter y : C |
|
||||
| Operator.cs:78:14:78:14 | (...) ... | semmle.label | (...) ... |
|
||||
| Operator.cs:78:14:78:14 | (...) ... | semmle.label | (...) ... |
|
||||
| Operator.cs:84:17:84:29 | call to method Source<C> : C | semmle.label | call to method Source<C> : C |
|
||||
| Operator.cs:84:17:84:29 | call to method Source<C> : C | semmle.label | call to method Source<C> : C |
|
||||
| Operator.cs:85:18:85:18 | access to local variable y : C | semmle.label | access to local variable y : C |
|
||||
| Operator.cs:85:18:85:18 | access to local variable y : C | semmle.label | access to local variable y : C |
|
||||
subpaths
|
||||
| Operator.cs:19:17:19:17 | access to local variable x : C | Operator.cs:9:38:9:38 | x : C | Operator.cs:9:49:9:49 | access to parameter x : C | Operator.cs:19:17:19:21 | call to operator + : C |
|
||||
| Operator.cs:19:17:19:17 | access to local variable x : C | Operator.cs:9:38:9:38 | x : C | Operator.cs:9:49:9:49 | access to parameter x : C | Operator.cs:19:17:19:21 | call to operator + : C |
|
||||
| Operator.cs:27:27:27:27 | access to local variable x : C | Operator.cs:12:38:12:38 | x : C | Operator.cs:12:49:12:49 | access to parameter x : C | Operator.cs:27:27:27:31 | call to operator - : C |
|
||||
| Operator.cs:27:27:27:27 | access to local variable x : C | Operator.cs:12:38:12:38 | x : C | Operator.cs:12:49:12:49 | access to parameter x : C | Operator.cs:27:27:27:31 | call to operator - : C |
|
||||
| Operator.cs:35:29:35:29 | access to local variable y : C | Operator.cs:11:51:11:51 | y : C | Operator.cs:11:57:11:57 | access to parameter y : C | Operator.cs:35:25:35:29 | call to operator checked - : C |
|
||||
| Operator.cs:35:29:35:29 | access to local variable y : C | Operator.cs:11:51:11:51 | y : C | Operator.cs:11:57:11:57 | access to parameter y : C | Operator.cs:35:25:35:29 | call to operator checked - : C |
|
||||
| Operator.cs:29:17:29:17 | access to local variable x : C | Operator.cs:16:38:16:38 | x : C | Operator.cs:16:49:16:49 | access to parameter x : C | Operator.cs:29:17:29:21 | call to operator + : C |
|
||||
| Operator.cs:29:17:29:17 | access to local variable x : C | Operator.cs:16:38:16:38 | x : C | Operator.cs:16:49:16:49 | access to parameter x : C | Operator.cs:29:17:29:21 | call to operator + : C |
|
||||
| Operator.cs:37:27:37:27 | access to local variable x : C | Operator.cs:19:38:19:38 | x : C | Operator.cs:19:49:19:49 | access to parameter x : C | Operator.cs:37:27:37:31 | call to operator - : C |
|
||||
| Operator.cs:37:27:37:27 | access to local variable x : C | Operator.cs:19:38:19:38 | x : C | Operator.cs:19:49:19:49 | access to parameter x : C | Operator.cs:37:27:37:31 | call to operator - : C |
|
||||
| Operator.cs:45:29:45:29 | access to local variable y : C | Operator.cs:18:51:18:51 | y : C | Operator.cs:18:57:18:57 | access to parameter y : C | Operator.cs:45:25:45:29 | call to operator checked - : C |
|
||||
| Operator.cs:45:29:45:29 | access to local variable y : C | Operator.cs:18:51:18:51 | y : C | Operator.cs:18:57:18:57 | access to parameter y : C | Operator.cs:45:25:45:29 | call to operator checked - : C |
|
||||
| Operator.cs:51:17:51:17 | access to parameter x : C | Operator.cs:9:39:9:39 | x : C | Operator.cs:9:50:9:50 | access to parameter x : C | Operator.cs:51:17:51:21 | call to operator * : C |
|
||||
| Operator.cs:51:17:51:17 | access to parameter x : C | Operator.cs:9:39:9:39 | x : C | Operator.cs:9:50:9:50 | access to parameter x : C | Operator.cs:51:17:51:21 | call to operator * : C |
|
||||
| Operator.cs:64:21:64:21 | access to parameter y : C | Operator.cs:21:43:21:43 | y : C | Operator.cs:21:49:21:49 | access to parameter y : C | Operator.cs:64:17:64:21 | call to operator / : C |
|
||||
| Operator.cs:64:21:64:21 | access to parameter y : C | Operator.cs:21:43:21:43 | y : C | Operator.cs:21:49:21:49 | access to parameter y : C | Operator.cs:64:17:64:21 | call to operator / : C |
|
||||
| Operator.cs:77:29:77:29 | access to parameter y : C | Operator.cs:22:51:22:51 | y : C | Operator.cs:22:57:22:57 | access to parameter y : C | Operator.cs:77:25:77:29 | call to operator checked / : C |
|
||||
| Operator.cs:77:29:77:29 | access to parameter y : C | Operator.cs:22:51:22:51 | y : C | Operator.cs:22:57:22:57 | access to parameter y : C | Operator.cs:77:25:77:29 | call to operator checked / : C |
|
||||
#select
|
||||
| Operator.cs:20:14:20:14 | access to local variable z | Operator.cs:17:17:17:28 | call to method Source<C> : C | Operator.cs:20:14:20:14 | access to local variable z | $@ | Operator.cs:17:17:17:28 | call to method Source<C> : C | call to method Source<C> : C |
|
||||
| Operator.cs:28:14:28:14 | access to local variable z | Operator.cs:25:17:25:28 | call to method Source<C> : C | Operator.cs:28:14:28:14 | access to local variable z | $@ | Operator.cs:25:17:25:28 | call to method Source<C> : C | call to method Source<C> : C |
|
||||
| Operator.cs:36:14:36:14 | access to local variable z | Operator.cs:34:17:34:28 | call to method Source<C> : C | Operator.cs:36:14:36:14 | access to local variable z | $@ | Operator.cs:34:17:34:28 | call to method Source<C> : C | call to method Source<C> : C |
|
||||
| Operator.cs:30:14:30:14 | access to local variable z | Operator.cs:27:17:27:28 | call to method Source<C> : C | Operator.cs:30:14:30:14 | access to local variable z | $@ | Operator.cs:27:17:27:28 | call to method Source<C> : C | call to method Source<C> : C |
|
||||
| Operator.cs:38:14:38:14 | access to local variable z | Operator.cs:35:17:35:28 | call to method Source<C> : C | Operator.cs:38:14:38:14 | access to local variable z | $@ | Operator.cs:35:17:35:28 | call to method Source<C> : C | call to method Source<C> : C |
|
||||
| Operator.cs:46:14:46:14 | access to local variable z | Operator.cs:44:17:44:28 | call to method Source<C> : C | Operator.cs:46:14:46:14 | access to local variable z | $@ | Operator.cs:44:17:44:28 | call to method Source<C> : C | call to method Source<C> : C |
|
||||
| Operator.cs:52:14:52:14 | (...) ... | Operator.cs:57:17:57:28 | call to method Source<C> : C | Operator.cs:52:14:52:14 | (...) ... | $@ | Operator.cs:57:17:57:28 | call to method Source<C> : C | call to method Source<C> : C |
|
||||
| Operator.cs:65:14:65:14 | (...) ... | Operator.cs:71:17:71:29 | call to method Source<C> : C | Operator.cs:65:14:65:14 | (...) ... | $@ | Operator.cs:71:17:71:29 | call to method Source<C> : C | call to method Source<C> : C |
|
||||
| Operator.cs:78:14:78:14 | (...) ... | Operator.cs:84:17:84:29 | call to method Source<C> : C | Operator.cs:78:14:78:14 | (...) ... | $@ | Operator.cs:84:17:84:29 | call to method Source<C> : C | call to method Source<C> : C |
|
||||
|
||||
Reference in New Issue
Block a user