mirror of
https://github.com/github/codeql.git
synced 2026-04-28 10:15:14 +02:00
Merge pull request #7185 from hvitved/csharp/ssa/consistency-queries
C#: Enable SSA consistency queries
This commit is contained in:
10
csharp/ql/consistency-queries/SsaConsistency.ql
Normal file
10
csharp/ql/consistency-queries/SsaConsistency.ql
Normal file
@@ -0,0 +1,10 @@
|
||||
import csharp
|
||||
import semmle.code.csharp.dataflow.internal.SsaImplCommon::Consistency
|
||||
|
||||
class MyRelevantDefinition extends RelevantDefinition, Ssa::Definition {
|
||||
override predicate hasLocationInfo(
|
||||
string filepath, int startline, int startcolumn, int endline, int endcolumn
|
||||
) {
|
||||
this.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn)
|
||||
}
|
||||
}
|
||||
@@ -140,7 +140,9 @@ private module Cached {
|
||||
}
|
||||
|
||||
private Expr getAChildExpr(ExprOrStmtParent parent) {
|
||||
result = parent.getAChildExpr() or
|
||||
result = parent.getAChildExpr() and
|
||||
not result = parent.(DeclarationWithGetSetAccessors).getExpressionBody()
|
||||
or
|
||||
result = parent.(AssignOperation).getExpandedAssignment()
|
||||
}
|
||||
|
||||
@@ -159,7 +161,7 @@ private module Cached {
|
||||
|
||||
private predicate parent(ControlFlowElement child, ExprOrStmtParent parent) {
|
||||
child = getAChild(parent) and
|
||||
not child instanceof Callable
|
||||
not child = any(Callable c).getBody()
|
||||
}
|
||||
|
||||
/** Holds if the enclosing body of `cfe` is `body`. */
|
||||
|
||||
@@ -171,7 +171,8 @@ private module SourceVariableImpl {
|
||||
def.getTarget() = lv and
|
||||
lv.isRef() and
|
||||
lv = v.getAssignable() and
|
||||
bb.getNode(i) = def.getAControlFlowNode()
|
||||
bb.getNode(i) = def.getAControlFlowNode() and
|
||||
not def.getAssignment() instanceof LocalVariableDeclAndInitExpr
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -1303,12 +1303,12 @@
|
||||
| cflow.cs:234:13:236:13 | {...} | cflow.cs:235:17:235:22 | break; | 2 |
|
||||
| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:241:5:259:5 | {...} | 2 |
|
||||
| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:240:10:240:13 | exit Goto | 2 |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:242:23:242:39 | ... == ... | 7 |
|
||||
| cflow.cs:242:20:242:40 | [false] !... | cflow.cs:242:20:242:40 | [false] !... | 1 |
|
||||
| cflow.cs:242:20:242:40 | [true] !... | cflow.cs:242:20:242:40 | [true] !... | 1 |
|
||||
| cflow.cs:242:21:242:40 | [false] !... | cflow.cs:242:21:242:40 | [false] !... | 1 |
|
||||
| cflow.cs:242:21:242:40 | [true] !... | cflow.cs:242:21:242:40 | [true] !... | 1 |
|
||||
| cflow.cs:242:43:242:45 | {...} | cflow.cs:242:43:242:45 | {...} | 1 |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:19:242:35 | ... == ... | 7 |
|
||||
| cflow.cs:242:16:242:36 | [false] !... | cflow.cs:242:16:242:36 | [false] !... | 1 |
|
||||
| cflow.cs:242:16:242:36 | [true] !... | cflow.cs:242:16:242:36 | [true] !... | 1 |
|
||||
| cflow.cs:242:17:242:36 | [false] !... | cflow.cs:242:17:242:36 | [false] !... | 1 |
|
||||
| cflow.cs:242:17:242:36 | [true] !... | cflow.cs:242:17:242:36 | [true] !... | 1 |
|
||||
| cflow.cs:242:39:242:41 | {...} | cflow.cs:242:39:242:41 | {...} | 1 |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:244:13:244:28 | ... > ... | 6 |
|
||||
| cflow.cs:244:31:244:41 | goto ...; | cflow.cs:244:31:244:41 | goto ...; | 1 |
|
||||
| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:248:18:248:18 | 0 | 8 |
|
||||
@@ -1332,3 +1332,5 @@
|
||||
| cflow.cs:300:44:300:51 | [true] !... | cflow.cs:300:44:300:51 | [true] !... | 1 |
|
||||
| cflow.cs:300:44:300:64 | ... && ... | cflow.cs:298:10:298:10 | exit M | 5 |
|
||||
| cflow.cs:300:56:300:56 | access to parameter s | cflow.cs:300:56:300:64 | ... != ... | 3 |
|
||||
| cflow.cs:306:60:310:5 | enter (...) => ... | cflow.cs:306:60:310:5 | exit (...) => ... | 9 |
|
||||
| cflow.cs:306:60:310:5 | enter get__getter | cflow.cs:306:60:310:5 | exit get__getter | 4 |
|
||||
|
||||
@@ -2410,15 +2410,15 @@ conditionBlock
|
||||
| cflow.cs:226:22:226:22 | String x | cflow.cs:233:13:236:13 | if (...) ... | false |
|
||||
| cflow.cs:226:22:226:22 | String x | cflow.cs:234:13:236:13 | {...} | false |
|
||||
| cflow.cs:233:13:236:13 | if (...) ... | cflow.cs:234:13:236:13 | {...} | true |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:242:20:242:40 | [false] !... | false |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:242:20:242:40 | [true] !... | true |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:242:21:242:40 | [false] !... | true |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:242:21:242:40 | [true] !... | false |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:242:43:242:45 | {...} | true |
|
||||
| cflow.cs:242:20:242:40 | [true] !... | cflow.cs:242:43:242:45 | {...} | true |
|
||||
| cflow.cs:242:21:242:40 | [false] !... | cflow.cs:242:20:242:40 | [true] !... | false |
|
||||
| cflow.cs:242:21:242:40 | [false] !... | cflow.cs:242:43:242:45 | {...} | false |
|
||||
| cflow.cs:242:21:242:40 | [true] !... | cflow.cs:242:20:242:40 | [false] !... | true |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:16:242:36 | [false] !... | false |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:16:242:36 | [true] !... | true |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:17:242:36 | [false] !... | true |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:17:242:36 | [true] !... | false |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:39:242:41 | {...} | true |
|
||||
| cflow.cs:242:16:242:36 | [true] !... | cflow.cs:242:39:242:41 | {...} | true |
|
||||
| cflow.cs:242:17:242:36 | [false] !... | cflow.cs:242:16:242:36 | [true] !... | false |
|
||||
| cflow.cs:242:17:242:36 | [false] !... | cflow.cs:242:39:242:41 | {...} | false |
|
||||
| cflow.cs:242:17:242:36 | [true] !... | cflow.cs:242:16:242:36 | [false] !... | true |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:240:10:240:13 | exit Goto (normal) | false |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:244:31:244:41 | goto ...; | true |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:246:9:258:9 | switch (...) {...} | false |
|
||||
@@ -3007,12 +3007,12 @@ conditionFlow
|
||||
| cflow.cs:229:17:229:32 | ... > ... | cflow.cs:233:13:236:13 | if (...) ... | false |
|
||||
| cflow.cs:233:17:233:32 | ... < ... | cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | false |
|
||||
| cflow.cs:233:17:233:32 | ... < ... | cflow.cs:234:13:236:13 | {...} | true |
|
||||
| cflow.cs:242:20:242:40 | [false] !... | cflow.cs:244:9:244:41 | if (...) ... | false |
|
||||
| cflow.cs:242:20:242:40 | [true] !... | cflow.cs:242:43:242:45 | {...} | true |
|
||||
| cflow.cs:242:21:242:40 | [false] !... | cflow.cs:242:20:242:40 | [true] !... | false |
|
||||
| cflow.cs:242:21:242:40 | [true] !... | cflow.cs:242:20:242:40 | [false] !... | true |
|
||||
| cflow.cs:242:23:242:39 | ... == ... | cflow.cs:242:21:242:40 | [false] !... | true |
|
||||
| cflow.cs:242:23:242:39 | ... == ... | cflow.cs:242:21:242:40 | [true] !... | false |
|
||||
| cflow.cs:242:16:242:36 | [false] !... | cflow.cs:244:9:244:41 | if (...) ... | false |
|
||||
| cflow.cs:242:16:242:36 | [true] !... | cflow.cs:242:39:242:41 | {...} | true |
|
||||
| cflow.cs:242:17:242:36 | [false] !... | cflow.cs:242:16:242:36 | [true] !... | false |
|
||||
| cflow.cs:242:17:242:36 | [true] !... | cflow.cs:242:16:242:36 | [false] !... | true |
|
||||
| cflow.cs:242:19:242:35 | ... == ... | cflow.cs:242:17:242:36 | [false] !... | true |
|
||||
| cflow.cs:242:19:242:35 | ... == ... | cflow.cs:242:17:242:36 | [true] !... | false |
|
||||
| cflow.cs:244:13:244:28 | ... > ... | cflow.cs:244:31:244:41 | goto ...; | true |
|
||||
| cflow.cs:244:13:244:28 | ... > ... | cflow.cs:246:9:258:9 | switch (...) {...} | false |
|
||||
| cflow.cs:264:25:264:30 | ... < ... | cflow.cs:265:9:267:9 | {...} | true |
|
||||
|
||||
@@ -4227,18 +4227,18 @@ dominance
|
||||
| cflow.cs:234:13:236:13 | {...} | cflow.cs:235:17:235:22 | break; |
|
||||
| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:241:5:259:5 | {...} |
|
||||
| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:240:10:240:13 | exit Goto |
|
||||
| cflow.cs:241:5:259:5 | {...} | cflow.cs:242:9:242:13 | Label: |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:242:16:242:45 | if (...) ... |
|
||||
| cflow.cs:242:16:242:45 | if (...) ... | cflow.cs:242:23:242:27 | this access |
|
||||
| cflow.cs:242:20:242:40 | [true] !... | cflow.cs:242:43:242:45 | {...} |
|
||||
| cflow.cs:242:21:242:40 | [false] !... | cflow.cs:242:20:242:40 | [true] !... |
|
||||
| cflow.cs:242:21:242:40 | [true] !... | cflow.cs:242:20:242:40 | [false] !... |
|
||||
| cflow.cs:242:23:242:27 | access to field Field | cflow.cs:242:23:242:34 | access to property Length |
|
||||
| cflow.cs:242:23:242:27 | this access | cflow.cs:242:23:242:27 | access to field Field |
|
||||
| cflow.cs:242:23:242:34 | access to property Length | cflow.cs:242:39:242:39 | 0 |
|
||||
| cflow.cs:242:23:242:39 | ... == ... | cflow.cs:242:21:242:40 | [false] !... |
|
||||
| cflow.cs:242:23:242:39 | ... == ... | cflow.cs:242:21:242:40 | [true] !... |
|
||||
| cflow.cs:242:39:242:39 | 0 | cflow.cs:242:23:242:39 | ... == ... |
|
||||
| cflow.cs:241:5:259:5 | {...} | cflow.cs:242:5:242:9 | Label: |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:12:242:41 | if (...) ... |
|
||||
| cflow.cs:242:12:242:41 | if (...) ... | cflow.cs:242:19:242:23 | this access |
|
||||
| cflow.cs:242:16:242:36 | [true] !... | cflow.cs:242:39:242:41 | {...} |
|
||||
| cflow.cs:242:17:242:36 | [false] !... | cflow.cs:242:16:242:36 | [true] !... |
|
||||
| cflow.cs:242:17:242:36 | [true] !... | cflow.cs:242:16:242:36 | [false] !... |
|
||||
| cflow.cs:242:19:242:23 | access to field Field | cflow.cs:242:19:242:30 | access to property Length |
|
||||
| cflow.cs:242:19:242:23 | this access | cflow.cs:242:19:242:23 | access to field Field |
|
||||
| cflow.cs:242:19:242:30 | access to property Length | cflow.cs:242:35:242:35 | 0 |
|
||||
| cflow.cs:242:19:242:35 | ... == ... | cflow.cs:242:17:242:36 | [false] !... |
|
||||
| cflow.cs:242:19:242:35 | ... == ... | cflow.cs:242:17:242:36 | [true] !... |
|
||||
| cflow.cs:242:35:242:35 | 0 | cflow.cs:242:19:242:35 | ... == ... |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:244:13:244:17 | this access |
|
||||
| cflow.cs:244:13:244:17 | access to field Field | cflow.cs:244:13:244:24 | access to property Length |
|
||||
| cflow.cs:244:13:244:17 | this access | cflow.cs:244:13:244:17 | access to field Field |
|
||||
@@ -4328,6 +4328,17 @@ dominance
|
||||
| cflow.cs:300:56:300:56 | access to parameter s | cflow.cs:300:61:300:64 | null |
|
||||
| cflow.cs:300:61:300:64 | null | cflow.cs:300:56:300:64 | ... != ... |
|
||||
| cflow.cs:300:70:300:71 | "" | cflow.cs:300:9:300:72 | object creation of type NegationInConstructor |
|
||||
| cflow.cs:306:60:310:5 | (...) => ... | cflow.cs:306:60:310:5 | exit get__getter (normal) |
|
||||
| cflow.cs:306:60:310:5 | enter (...) => ... | cflow.cs:307:5:310:5 | {...} |
|
||||
| cflow.cs:306:60:310:5 | enter get__getter | cflow.cs:306:60:310:5 | (...) => ... |
|
||||
| cflow.cs:306:60:310:5 | exit (...) => ... (normal) | cflow.cs:306:60:310:5 | exit (...) => ... |
|
||||
| cflow.cs:306:60:310:5 | exit get__getter (normal) | cflow.cs:306:60:310:5 | exit get__getter |
|
||||
| cflow.cs:307:5:310:5 | {...} | cflow.cs:308:9:308:21 | ... ...; |
|
||||
| cflow.cs:308:9:308:21 | ... ...; | cflow.cs:308:20:308:20 | access to parameter o |
|
||||
| cflow.cs:308:16:308:20 | Object x = ... | cflow.cs:309:16:309:16 | access to local variable x |
|
||||
| cflow.cs:308:20:308:20 | access to parameter o | cflow.cs:308:16:308:20 | Object x = ... |
|
||||
| cflow.cs:309:9:309:17 | return ...; | cflow.cs:306:60:310:5 | exit (...) => ... (normal) |
|
||||
| cflow.cs:309:16:309:16 | access to local variable x | cflow.cs:309:9:309:17 | return ...; |
|
||||
postDominance
|
||||
| AccessorCalls.cs:5:23:5:25 | exit get_Item | AccessorCalls.cs:5:23:5:25 | exit get_Item (normal) |
|
||||
| AccessorCalls.cs:5:23:5:25 | exit get_Item (normal) | AccessorCalls.cs:5:30:5:30 | access to parameter i |
|
||||
@@ -8285,20 +8296,20 @@ postDominance
|
||||
| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:252:17:252:22 | break; |
|
||||
| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:257:17:257:22 | break; |
|
||||
| cflow.cs:241:5:259:5 | {...} | cflow.cs:240:10:240:13 | enter Goto |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:241:5:259:5 | {...} |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:244:31:244:41 | goto ...; |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:254:17:254:27 | goto ...; |
|
||||
| cflow.cs:242:16:242:45 | if (...) ... | cflow.cs:242:9:242:13 | Label: |
|
||||
| cflow.cs:242:20:242:40 | [false] !... | cflow.cs:242:21:242:40 | [true] !... |
|
||||
| cflow.cs:242:20:242:40 | [true] !... | cflow.cs:242:21:242:40 | [false] !... |
|
||||
| cflow.cs:242:23:242:27 | access to field Field | cflow.cs:242:23:242:27 | this access |
|
||||
| cflow.cs:242:23:242:27 | this access | cflow.cs:242:16:242:45 | if (...) ... |
|
||||
| cflow.cs:242:23:242:34 | access to property Length | cflow.cs:242:23:242:27 | access to field Field |
|
||||
| cflow.cs:242:23:242:39 | ... == ... | cflow.cs:242:39:242:39 | 0 |
|
||||
| cflow.cs:242:39:242:39 | 0 | cflow.cs:242:23:242:34 | access to property Length |
|
||||
| cflow.cs:242:43:242:45 | {...} | cflow.cs:242:20:242:40 | [true] !... |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:242:20:242:40 | [false] !... |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:242:43:242:45 | {...} |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:241:5:259:5 | {...} |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:244:31:244:41 | goto ...; |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:254:17:254:27 | goto ...; |
|
||||
| cflow.cs:242:12:242:41 | if (...) ... | cflow.cs:242:5:242:9 | Label: |
|
||||
| cflow.cs:242:16:242:36 | [false] !... | cflow.cs:242:17:242:36 | [true] !... |
|
||||
| cflow.cs:242:16:242:36 | [true] !... | cflow.cs:242:17:242:36 | [false] !... |
|
||||
| cflow.cs:242:19:242:23 | access to field Field | cflow.cs:242:19:242:23 | this access |
|
||||
| cflow.cs:242:19:242:23 | this access | cflow.cs:242:12:242:41 | if (...) ... |
|
||||
| cflow.cs:242:19:242:30 | access to property Length | cflow.cs:242:19:242:23 | access to field Field |
|
||||
| cflow.cs:242:19:242:35 | ... == ... | cflow.cs:242:35:242:35 | 0 |
|
||||
| cflow.cs:242:35:242:35 | 0 | cflow.cs:242:19:242:30 | access to property Length |
|
||||
| cflow.cs:242:39:242:41 | {...} | cflow.cs:242:16:242:36 | [true] !... |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:242:16:242:36 | [false] !... |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:242:39:242:41 | {...} |
|
||||
| cflow.cs:244:13:244:17 | access to field Field | cflow.cs:244:13:244:17 | this access |
|
||||
| cflow.cs:244:13:244:17 | this access | cflow.cs:244:9:244:41 | if (...) ... |
|
||||
| cflow.cs:244:13:244:24 | access to property Length | cflow.cs:244:13:244:17 | access to field Field |
|
||||
@@ -8383,6 +8394,17 @@ postDominance
|
||||
| cflow.cs:300:56:300:64 | ... != ... | cflow.cs:300:61:300:64 | null |
|
||||
| cflow.cs:300:61:300:64 | null | cflow.cs:300:56:300:56 | access to parameter s |
|
||||
| cflow.cs:300:70:300:71 | "" | cflow.cs:300:44:300:64 | ... && ... |
|
||||
| cflow.cs:306:60:310:5 | (...) => ... | cflow.cs:306:60:310:5 | enter get__getter |
|
||||
| cflow.cs:306:60:310:5 | exit (...) => ... | cflow.cs:306:60:310:5 | exit (...) => ... (normal) |
|
||||
| cflow.cs:306:60:310:5 | exit (...) => ... (normal) | cflow.cs:309:9:309:17 | return ...; |
|
||||
| cflow.cs:306:60:310:5 | exit get__getter | cflow.cs:306:60:310:5 | exit get__getter (normal) |
|
||||
| cflow.cs:306:60:310:5 | exit get__getter (normal) | cflow.cs:306:60:310:5 | (...) => ... |
|
||||
| cflow.cs:307:5:310:5 | {...} | cflow.cs:306:60:310:5 | enter (...) => ... |
|
||||
| cflow.cs:308:9:308:21 | ... ...; | cflow.cs:307:5:310:5 | {...} |
|
||||
| cflow.cs:308:16:308:20 | Object x = ... | cflow.cs:308:20:308:20 | access to parameter o |
|
||||
| cflow.cs:308:20:308:20 | access to parameter o | cflow.cs:308:9:308:21 | ... ...; |
|
||||
| cflow.cs:309:9:309:17 | return ...; | cflow.cs:309:16:309:16 | access to local variable x |
|
||||
| cflow.cs:309:16:309:16 | access to local variable x | cflow.cs:308:16:308:20 | Object x = ... |
|
||||
blockDominance
|
||||
| AccessorCalls.cs:5:23:5:25 | enter get_Item | AccessorCalls.cs:5:23:5:25 | enter get_Item |
|
||||
| AccessorCalls.cs:5:33:5:35 | enter set_Item | AccessorCalls.cs:5:33:5:35 | enter set_Item |
|
||||
@@ -13056,12 +13078,12 @@ blockDominance
|
||||
| cflow.cs:234:13:236:13 | {...} | cflow.cs:234:13:236:13 | {...} |
|
||||
| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:240:10:240:13 | enter Goto |
|
||||
| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:240:10:240:13 | exit Goto (normal) |
|
||||
| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:242:9:242:13 | Label: |
|
||||
| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:242:20:242:40 | [false] !... |
|
||||
| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:242:20:242:40 | [true] !... |
|
||||
| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:242:21:242:40 | [false] !... |
|
||||
| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:242:21:242:40 | [true] !... |
|
||||
| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:242:43:242:45 | {...} |
|
||||
| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:242:5:242:9 | Label: |
|
||||
| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:242:16:242:36 | [false] !... |
|
||||
| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:242:16:242:36 | [true] !... |
|
||||
| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:242:17:242:36 | [false] !... |
|
||||
| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:242:17:242:36 | [true] !... |
|
||||
| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:242:39:242:41 | {...} |
|
||||
| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:244:9:244:41 | if (...) ... |
|
||||
| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:244:31:244:41 | goto ...; |
|
||||
| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:246:9:258:9 | switch (...) {...} |
|
||||
@@ -13072,31 +13094,31 @@ blockDominance
|
||||
| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:254:17:254:27 | goto ...; |
|
||||
| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:255:13:255:20 | default: |
|
||||
| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:240:10:240:13 | exit Goto (normal) |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:240:10:240:13 | exit Goto (normal) |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:242:9:242:13 | Label: |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:242:20:242:40 | [false] !... |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:242:20:242:40 | [true] !... |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:242:21:242:40 | [false] !... |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:242:21:242:40 | [true] !... |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:242:43:242:45 | {...} |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:244:9:244:41 | if (...) ... |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:244:31:244:41 | goto ...; |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:246:9:258:9 | switch (...) {...} |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:249:17:249:29 | goto default; |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:250:13:250:19 | case ...: |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:251:17:251:37 | ...; |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:253:13:253:19 | case ...: |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:254:17:254:27 | goto ...; |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:255:13:255:20 | default: |
|
||||
| cflow.cs:242:20:242:40 | [false] !... | cflow.cs:242:20:242:40 | [false] !... |
|
||||
| cflow.cs:242:20:242:40 | [true] !... | cflow.cs:242:20:242:40 | [true] !... |
|
||||
| cflow.cs:242:20:242:40 | [true] !... | cflow.cs:242:43:242:45 | {...} |
|
||||
| cflow.cs:242:21:242:40 | [false] !... | cflow.cs:242:20:242:40 | [true] !... |
|
||||
| cflow.cs:242:21:242:40 | [false] !... | cflow.cs:242:21:242:40 | [false] !... |
|
||||
| cflow.cs:242:21:242:40 | [false] !... | cflow.cs:242:43:242:45 | {...} |
|
||||
| cflow.cs:242:21:242:40 | [true] !... | cflow.cs:242:20:242:40 | [false] !... |
|
||||
| cflow.cs:242:21:242:40 | [true] !... | cflow.cs:242:21:242:40 | [true] !... |
|
||||
| cflow.cs:242:43:242:45 | {...} | cflow.cs:242:43:242:45 | {...} |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:240:10:240:13 | exit Goto (normal) |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:5:242:9 | Label: |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:16:242:36 | [false] !... |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:16:242:36 | [true] !... |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:17:242:36 | [false] !... |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:17:242:36 | [true] !... |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:39:242:41 | {...} |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:244:9:244:41 | if (...) ... |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:244:31:244:41 | goto ...; |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:246:9:258:9 | switch (...) {...} |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:249:17:249:29 | goto default; |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:250:13:250:19 | case ...: |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:251:17:251:37 | ...; |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:253:13:253:19 | case ...: |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:254:17:254:27 | goto ...; |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:255:13:255:20 | default: |
|
||||
| cflow.cs:242:16:242:36 | [false] !... | cflow.cs:242:16:242:36 | [false] !... |
|
||||
| cflow.cs:242:16:242:36 | [true] !... | cflow.cs:242:16:242:36 | [true] !... |
|
||||
| cflow.cs:242:16:242:36 | [true] !... | cflow.cs:242:39:242:41 | {...} |
|
||||
| cflow.cs:242:17:242:36 | [false] !... | cflow.cs:242:16:242:36 | [true] !... |
|
||||
| cflow.cs:242:17:242:36 | [false] !... | cflow.cs:242:17:242:36 | [false] !... |
|
||||
| cflow.cs:242:17:242:36 | [false] !... | cflow.cs:242:39:242:41 | {...} |
|
||||
| cflow.cs:242:17:242:36 | [true] !... | cflow.cs:242:16:242:36 | [false] !... |
|
||||
| cflow.cs:242:17:242:36 | [true] !... | cflow.cs:242:17:242:36 | [true] !... |
|
||||
| cflow.cs:242:39:242:41 | {...} | cflow.cs:242:39:242:41 | {...} |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:240:10:240:13 | exit Goto (normal) |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:244:9:244:41 | if (...) ... |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:244:31:244:41 | goto ...; |
|
||||
@@ -13150,6 +13172,8 @@ blockDominance
|
||||
| cflow.cs:300:44:300:51 | [true] !... | cflow.cs:300:56:300:56 | access to parameter s |
|
||||
| cflow.cs:300:44:300:64 | ... && ... | cflow.cs:300:44:300:64 | ... && ... |
|
||||
| cflow.cs:300:56:300:56 | access to parameter s | cflow.cs:300:56:300:56 | access to parameter s |
|
||||
| cflow.cs:306:60:310:5 | enter (...) => ... | cflow.cs:306:60:310:5 | enter (...) => ... |
|
||||
| cflow.cs:306:60:310:5 | enter get__getter | cflow.cs:306:60:310:5 | enter get__getter |
|
||||
postBlockDominance
|
||||
| AccessorCalls.cs:5:23:5:25 | enter get_Item | AccessorCalls.cs:5:23:5:25 | enter get_Item |
|
||||
| AccessorCalls.cs:5:33:5:35 | enter set_Item | AccessorCalls.cs:5:33:5:35 | enter set_Item |
|
||||
@@ -16345,12 +16369,12 @@ postBlockDominance
|
||||
| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:240:10:240:13 | enter Goto |
|
||||
| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:240:10:240:13 | enter Goto |
|
||||
| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:240:10:240:13 | exit Goto (normal) |
|
||||
| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:242:9:242:13 | Label: |
|
||||
| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:242:20:242:40 | [false] !... |
|
||||
| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:242:20:242:40 | [true] !... |
|
||||
| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:242:21:242:40 | [false] !... |
|
||||
| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:242:21:242:40 | [true] !... |
|
||||
| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:242:43:242:45 | {...} |
|
||||
| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:242:5:242:9 | Label: |
|
||||
| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:242:16:242:36 | [false] !... |
|
||||
| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:242:16:242:36 | [true] !... |
|
||||
| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:242:17:242:36 | [false] !... |
|
||||
| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:242:17:242:36 | [true] !... |
|
||||
| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:242:39:242:41 | {...} |
|
||||
| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:244:9:244:41 | if (...) ... |
|
||||
| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:244:31:244:41 | goto ...; |
|
||||
| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:246:9:258:9 | switch (...) {...} |
|
||||
@@ -16360,37 +16384,37 @@ postBlockDominance
|
||||
| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:253:13:253:19 | case ...: |
|
||||
| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:254:17:254:27 | goto ...; |
|
||||
| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:255:13:255:20 | default: |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:240:10:240:13 | enter Goto |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:242:9:242:13 | Label: |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:244:31:244:41 | goto ...; |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:254:17:254:27 | goto ...; |
|
||||
| cflow.cs:242:20:242:40 | [false] !... | cflow.cs:242:20:242:40 | [false] !... |
|
||||
| cflow.cs:242:20:242:40 | [false] !... | cflow.cs:242:21:242:40 | [true] !... |
|
||||
| cflow.cs:242:20:242:40 | [true] !... | cflow.cs:242:20:242:40 | [true] !... |
|
||||
| cflow.cs:242:20:242:40 | [true] !... | cflow.cs:242:21:242:40 | [false] !... |
|
||||
| cflow.cs:242:21:242:40 | [false] !... | cflow.cs:242:21:242:40 | [false] !... |
|
||||
| cflow.cs:242:21:242:40 | [true] !... | cflow.cs:242:21:242:40 | [true] !... |
|
||||
| cflow.cs:242:43:242:45 | {...} | cflow.cs:242:20:242:40 | [true] !... |
|
||||
| cflow.cs:242:43:242:45 | {...} | cflow.cs:242:21:242:40 | [false] !... |
|
||||
| cflow.cs:242:43:242:45 | {...} | cflow.cs:242:43:242:45 | {...} |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:240:10:240:13 | enter Goto |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:5:242:9 | Label: |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:244:31:244:41 | goto ...; |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:254:17:254:27 | goto ...; |
|
||||
| cflow.cs:242:16:242:36 | [false] !... | cflow.cs:242:16:242:36 | [false] !... |
|
||||
| cflow.cs:242:16:242:36 | [false] !... | cflow.cs:242:17:242:36 | [true] !... |
|
||||
| cflow.cs:242:16:242:36 | [true] !... | cflow.cs:242:16:242:36 | [true] !... |
|
||||
| cflow.cs:242:16:242:36 | [true] !... | cflow.cs:242:17:242:36 | [false] !... |
|
||||
| cflow.cs:242:17:242:36 | [false] !... | cflow.cs:242:17:242:36 | [false] !... |
|
||||
| cflow.cs:242:17:242:36 | [true] !... | cflow.cs:242:17:242:36 | [true] !... |
|
||||
| cflow.cs:242:39:242:41 | {...} | cflow.cs:242:16:242:36 | [true] !... |
|
||||
| cflow.cs:242:39:242:41 | {...} | cflow.cs:242:17:242:36 | [false] !... |
|
||||
| cflow.cs:242:39:242:41 | {...} | cflow.cs:242:39:242:41 | {...} |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:240:10:240:13 | enter Goto |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:242:9:242:13 | Label: |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:242:20:242:40 | [false] !... |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:242:20:242:40 | [true] !... |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:242:21:242:40 | [false] !... |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:242:21:242:40 | [true] !... |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:242:43:242:45 | {...} |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:242:5:242:9 | Label: |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:242:16:242:36 | [false] !... |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:242:16:242:36 | [true] !... |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:242:17:242:36 | [false] !... |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:242:17:242:36 | [true] !... |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:242:39:242:41 | {...} |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:244:9:244:41 | if (...) ... |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:244:31:244:41 | goto ...; |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:254:17:254:27 | goto ...; |
|
||||
| cflow.cs:244:31:244:41 | goto ...; | cflow.cs:244:31:244:41 | goto ...; |
|
||||
| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:240:10:240:13 | enter Goto |
|
||||
| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:242:9:242:13 | Label: |
|
||||
| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:242:20:242:40 | [false] !... |
|
||||
| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:242:20:242:40 | [true] !... |
|
||||
| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:242:21:242:40 | [false] !... |
|
||||
| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:242:21:242:40 | [true] !... |
|
||||
| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:242:43:242:45 | {...} |
|
||||
| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:242:5:242:9 | Label: |
|
||||
| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:242:16:242:36 | [false] !... |
|
||||
| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:242:16:242:36 | [true] !... |
|
||||
| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:242:17:242:36 | [false] !... |
|
||||
| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:242:17:242:36 | [true] !... |
|
||||
| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:242:39:242:41 | {...} |
|
||||
| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:244:9:244:41 | if (...) ... |
|
||||
| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:244:31:244:41 | goto ...; |
|
||||
| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:246:9:258:9 | switch (...) {...} |
|
||||
@@ -16426,3 +16450,5 @@ postBlockDominance
|
||||
| cflow.cs:300:44:300:64 | ... && ... | cflow.cs:300:56:300:56 | access to parameter s |
|
||||
| cflow.cs:300:56:300:56 | access to parameter s | cflow.cs:300:44:300:51 | [true] !... |
|
||||
| cflow.cs:300:56:300:56 | access to parameter s | cflow.cs:300:56:300:56 | access to parameter s |
|
||||
| cflow.cs:306:60:310:5 | enter (...) => ... | cflow.cs:306:60:310:5 | enter (...) => ... |
|
||||
| cflow.cs:306:60:310:5 | enter get__getter | cflow.cs:306:60:310:5 | enter get__getter |
|
||||
|
||||
@@ -4763,18 +4763,18 @@ nodeEnclosing
|
||||
| cflow.cs:240:10:240:13 | exit Goto | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:241:5:259:5 | {...} | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:16:242:45 | if (...) ... | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:20:242:40 | [false] !... | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:20:242:40 | [true] !... | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:21:242:40 | [false] !... | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:21:242:40 | [true] !... | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:23:242:27 | access to field Field | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:23:242:27 | this access | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:23:242:34 | access to property Length | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:23:242:39 | ... == ... | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:39:242:39 | 0 | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:43:242:45 | {...} | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:12:242:41 | if (...) ... | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:16:242:36 | [false] !... | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:16:242:36 | [true] !... | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:17:242:36 | [false] !... | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:17:242:36 | [true] !... | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:19:242:23 | access to field Field | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:19:242:23 | this access | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:19:242:30 | access to property Length | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:19:242:35 | ... == ... | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:35:242:35 | 0 | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:39:242:41 | {...} | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:244:13:244:17 | access to field Field | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:244:13:244:17 | this access | cflow.cs:240:10:240:13 | Goto |
|
||||
@@ -4874,6 +4874,19 @@ nodeEnclosing
|
||||
| cflow.cs:300:56:300:64 | ... != ... | cflow.cs:298:10:298:10 | M |
|
||||
| cflow.cs:300:61:300:64 | null | cflow.cs:298:10:298:10 | M |
|
||||
| cflow.cs:300:70:300:71 | "" | cflow.cs:298:10:298:10 | M |
|
||||
| cflow.cs:306:60:310:5 | (...) => ... | cflow.cs:306:60:310:5 | get__getter |
|
||||
| cflow.cs:306:60:310:5 | enter (...) => ... | cflow.cs:306:60:310:5 | (...) => ... |
|
||||
| cflow.cs:306:60:310:5 | enter get__getter | cflow.cs:306:60:310:5 | get__getter |
|
||||
| cflow.cs:306:60:310:5 | exit (...) => ... | cflow.cs:306:60:310:5 | (...) => ... |
|
||||
| cflow.cs:306:60:310:5 | exit (...) => ... (normal) | cflow.cs:306:60:310:5 | (...) => ... |
|
||||
| cflow.cs:306:60:310:5 | exit get__getter | cflow.cs:306:60:310:5 | get__getter |
|
||||
| cflow.cs:306:60:310:5 | exit get__getter (normal) | cflow.cs:306:60:310:5 | get__getter |
|
||||
| cflow.cs:307:5:310:5 | {...} | cflow.cs:306:60:310:5 | (...) => ... |
|
||||
| cflow.cs:308:9:308:21 | ... ...; | cflow.cs:306:60:310:5 | (...) => ... |
|
||||
| cflow.cs:308:16:308:20 | Object x = ... | cflow.cs:306:60:310:5 | (...) => ... |
|
||||
| cflow.cs:308:20:308:20 | access to parameter o | cflow.cs:306:60:310:5 | (...) => ... |
|
||||
| cflow.cs:309:9:309:17 | return ...; | cflow.cs:306:60:310:5 | (...) => ... |
|
||||
| cflow.cs:309:16:309:16 | access to local variable x | cflow.cs:306:60:310:5 | (...) => ... |
|
||||
blockEnclosing
|
||||
| AccessorCalls.cs:5:23:5:25 | enter get_Item | AccessorCalls.cs:5:23:5:25 | get_Item |
|
||||
| AccessorCalls.cs:5:33:5:35 | enter set_Item | AccessorCalls.cs:5:33:5:35 | set_Item |
|
||||
@@ -6185,12 +6198,12 @@ blockEnclosing
|
||||
| cflow.cs:234:13:236:13 | {...} | cflow.cs:224:10:224:16 | Foreach |
|
||||
| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:20:242:40 | [false] !... | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:20:242:40 | [true] !... | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:21:242:40 | [false] !... | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:21:242:40 | [true] !... | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:43:242:45 | {...} | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:16:242:36 | [false] !... | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:16:242:36 | [true] !... | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:17:242:36 | [false] !... | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:17:242:36 | [true] !... | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:242:39:242:41 | {...} | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:244:31:244:41 | goto ...; | cflow.cs:240:10:240:13 | Goto |
|
||||
| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:240:10:240:13 | Goto |
|
||||
@@ -6214,3 +6227,5 @@ blockEnclosing
|
||||
| cflow.cs:300:44:300:51 | [true] !... | cflow.cs:298:10:298:10 | M |
|
||||
| cflow.cs:300:44:300:64 | ... && ... | cflow.cs:298:10:298:10 | M |
|
||||
| cflow.cs:300:56:300:56 | access to parameter s | cflow.cs:298:10:298:10 | M |
|
||||
| cflow.cs:306:60:310:5 | enter (...) => ... | cflow.cs:306:60:310:5 | (...) => ... |
|
||||
| cflow.cs:306:60:310:5 | enter get__getter | cflow.cs:306:60:310:5 | get__getter |
|
||||
|
||||
@@ -3210,16 +3210,16 @@
|
||||
| cflow.cs:234:13:236:13 | {...} | cflow.cs:234:13:236:13 | {...} |
|
||||
| cflow.cs:235:17:235:22 | break; | cflow.cs:235:17:235:22 | break; |
|
||||
| cflow.cs:241:5:259:5 | {...} | cflow.cs:241:5:259:5 | {...} |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:242:9:242:13 | Label: |
|
||||
| cflow.cs:242:16:242:45 | if (...) ... | cflow.cs:242:16:242:45 | if (...) ... |
|
||||
| cflow.cs:242:20:242:40 | !... | cflow.cs:242:23:242:27 | this access |
|
||||
| cflow.cs:242:21:242:40 | !... | cflow.cs:242:23:242:27 | this access |
|
||||
| cflow.cs:242:23:242:27 | access to field Field | cflow.cs:242:23:242:27 | this access |
|
||||
| cflow.cs:242:23:242:27 | this access | cflow.cs:242:23:242:27 | this access |
|
||||
| cflow.cs:242:23:242:34 | access to property Length | cflow.cs:242:23:242:27 | this access |
|
||||
| cflow.cs:242:23:242:39 | ... == ... | cflow.cs:242:23:242:27 | this access |
|
||||
| cflow.cs:242:39:242:39 | 0 | cflow.cs:242:39:242:39 | 0 |
|
||||
| cflow.cs:242:43:242:45 | {...} | cflow.cs:242:43:242:45 | {...} |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:5:242:9 | Label: |
|
||||
| cflow.cs:242:12:242:41 | if (...) ... | cflow.cs:242:12:242:41 | if (...) ... |
|
||||
| cflow.cs:242:16:242:36 | !... | cflow.cs:242:19:242:23 | this access |
|
||||
| cflow.cs:242:17:242:36 | !... | cflow.cs:242:19:242:23 | this access |
|
||||
| cflow.cs:242:19:242:23 | access to field Field | cflow.cs:242:19:242:23 | this access |
|
||||
| cflow.cs:242:19:242:23 | this access | cflow.cs:242:19:242:23 | this access |
|
||||
| cflow.cs:242:19:242:30 | access to property Length | cflow.cs:242:19:242:23 | this access |
|
||||
| cflow.cs:242:19:242:35 | ... == ... | cflow.cs:242:19:242:23 | this access |
|
||||
| cflow.cs:242:35:242:35 | 0 | cflow.cs:242:35:242:35 | 0 |
|
||||
| cflow.cs:242:39:242:41 | {...} | cflow.cs:242:39:242:41 | {...} |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:244:9:244:41 | if (...) ... |
|
||||
| cflow.cs:244:13:244:17 | access to field Field | cflow.cs:244:13:244:17 | this access |
|
||||
| cflow.cs:244:13:244:17 | this access | cflow.cs:244:13:244:17 | this access |
|
||||
@@ -3300,3 +3300,10 @@
|
||||
| cflow.cs:300:56:300:64 | ... != ... | cflow.cs:300:56:300:56 | access to parameter s |
|
||||
| cflow.cs:300:61:300:64 | null | cflow.cs:300:61:300:64 | null |
|
||||
| cflow.cs:300:70:300:71 | "" | cflow.cs:300:70:300:71 | "" |
|
||||
| cflow.cs:306:60:310:5 | (...) => ... | cflow.cs:306:60:310:5 | (...) => ... |
|
||||
| cflow.cs:307:5:310:5 | {...} | cflow.cs:307:5:310:5 | {...} |
|
||||
| cflow.cs:308:9:308:21 | ... ...; | cflow.cs:308:9:308:21 | ... ...; |
|
||||
| cflow.cs:308:16:308:20 | Object x = ... | cflow.cs:308:20:308:20 | access to parameter o |
|
||||
| cflow.cs:308:20:308:20 | access to parameter o | cflow.cs:308:20:308:20 | access to parameter o |
|
||||
| cflow.cs:309:9:309:17 | return ...; | cflow.cs:309:16:309:16 | access to local variable x |
|
||||
| cflow.cs:309:16:309:16 | access to local variable x | cflow.cs:309:16:309:16 | access to local variable x |
|
||||
|
||||
@@ -4192,20 +4192,20 @@
|
||||
| cflow.cs:241:5:259:5 | {...} | cflow.cs:252:17:252:22 | break; | normal [break] (0) |
|
||||
| cflow.cs:241:5:259:5 | {...} | cflow.cs:254:17:254:27 | goto ...; | goto(Label) |
|
||||
| cflow.cs:241:5:259:5 | {...} | cflow.cs:257:17:257:22 | break; | normal [break] (0) |
|
||||
| cflow.cs:242:9:242:13 | Label: | cflow.cs:242:9:242:13 | Label: | normal |
|
||||
| cflow.cs:242:16:242:45 | if (...) ... | cflow.cs:242:20:242:40 | !... | false |
|
||||
| cflow.cs:242:16:242:45 | if (...) ... | cflow.cs:242:43:242:45 | {...} | normal |
|
||||
| cflow.cs:242:20:242:40 | !... | cflow.cs:242:20:242:40 | !... | false |
|
||||
| cflow.cs:242:20:242:40 | !... | cflow.cs:242:20:242:40 | !... | true |
|
||||
| cflow.cs:242:21:242:40 | !... | cflow.cs:242:21:242:40 | !... | false |
|
||||
| cflow.cs:242:21:242:40 | !... | cflow.cs:242:21:242:40 | !... | true |
|
||||
| cflow.cs:242:23:242:27 | access to field Field | cflow.cs:242:23:242:27 | access to field Field | normal |
|
||||
| cflow.cs:242:23:242:27 | this access | cflow.cs:242:23:242:27 | this access | normal |
|
||||
| cflow.cs:242:23:242:34 | access to property Length | cflow.cs:242:23:242:34 | access to property Length | normal |
|
||||
| cflow.cs:242:23:242:39 | ... == ... | cflow.cs:242:23:242:39 | ... == ... | false |
|
||||
| cflow.cs:242:23:242:39 | ... == ... | cflow.cs:242:23:242:39 | ... == ... | true |
|
||||
| cflow.cs:242:39:242:39 | 0 | cflow.cs:242:39:242:39 | 0 | normal |
|
||||
| cflow.cs:242:43:242:45 | {...} | cflow.cs:242:43:242:45 | {...} | normal |
|
||||
| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:5:242:9 | Label: | normal |
|
||||
| cflow.cs:242:12:242:41 | if (...) ... | cflow.cs:242:16:242:36 | !... | false |
|
||||
| cflow.cs:242:12:242:41 | if (...) ... | cflow.cs:242:39:242:41 | {...} | normal |
|
||||
| cflow.cs:242:16:242:36 | !... | cflow.cs:242:16:242:36 | !... | false |
|
||||
| cflow.cs:242:16:242:36 | !... | cflow.cs:242:16:242:36 | !... | true |
|
||||
| cflow.cs:242:17:242:36 | !... | cflow.cs:242:17:242:36 | !... | false |
|
||||
| cflow.cs:242:17:242:36 | !... | cflow.cs:242:17:242:36 | !... | true |
|
||||
| cflow.cs:242:19:242:23 | access to field Field | cflow.cs:242:19:242:23 | access to field Field | normal |
|
||||
| cflow.cs:242:19:242:23 | this access | cflow.cs:242:19:242:23 | this access | normal |
|
||||
| cflow.cs:242:19:242:30 | access to property Length | cflow.cs:242:19:242:30 | access to property Length | normal |
|
||||
| cflow.cs:242:19:242:35 | ... == ... | cflow.cs:242:19:242:35 | ... == ... | false |
|
||||
| cflow.cs:242:19:242:35 | ... == ... | cflow.cs:242:19:242:35 | ... == ... | true |
|
||||
| cflow.cs:242:35:242:35 | 0 | cflow.cs:242:35:242:35 | 0 | normal |
|
||||
| cflow.cs:242:39:242:41 | {...} | cflow.cs:242:39:242:41 | {...} | normal |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:244:13:244:28 | ... > ... | false |
|
||||
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:244:31:244:41 | goto ...; | goto(Label) |
|
||||
| cflow.cs:244:13:244:17 | access to field Field | cflow.cs:244:13:244:17 | access to field Field | normal |
|
||||
@@ -4307,3 +4307,10 @@
|
||||
| cflow.cs:300:56:300:64 | ... != ... | cflow.cs:300:56:300:64 | ... != ... | normal |
|
||||
| cflow.cs:300:61:300:64 | null | cflow.cs:300:61:300:64 | null | normal |
|
||||
| cflow.cs:300:70:300:71 | "" | cflow.cs:300:70:300:71 | "" | normal |
|
||||
| cflow.cs:306:60:310:5 | (...) => ... | cflow.cs:306:60:310:5 | (...) => ... | normal |
|
||||
| cflow.cs:307:5:310:5 | {...} | cflow.cs:309:9:309:17 | return ...; | return |
|
||||
| cflow.cs:308:9:308:21 | ... ...; | cflow.cs:308:16:308:20 | Object x = ... | normal |
|
||||
| cflow.cs:308:16:308:20 | Object x = ... | cflow.cs:308:16:308:20 | Object x = ... | normal |
|
||||
| cflow.cs:308:20:308:20 | access to parameter o | cflow.cs:308:20:308:20 | access to parameter o | normal |
|
||||
| cflow.cs:309:9:309:17 | return ...; | cflow.cs:309:9:309:17 | return ...; | return |
|
||||
| cflow.cs:309:16:309:16 | access to local variable x | cflow.cs:309:16:309:16 | access to local variable x | normal |
|
||||
|
||||
@@ -14455,3 +14455,40 @@ cflow.cs:
|
||||
|
||||
# 300| ""
|
||||
#-----| -> object creation of type NegationInConstructor
|
||||
|
||||
# 306| enter get__getter
|
||||
#-----| -> (...) => ...
|
||||
|
||||
# 306| enter (...) => ...
|
||||
#-----| -> {...}
|
||||
|
||||
# 306| (...) => ...
|
||||
#-----| -> exit get__getter (normal)
|
||||
|
||||
# 306| exit get__getter
|
||||
|
||||
# 306| exit (...) => ...
|
||||
|
||||
# 306| exit get__getter (normal)
|
||||
#-----| -> exit get__getter
|
||||
|
||||
# 306| exit (...) => ... (normal)
|
||||
#-----| -> exit (...) => ...
|
||||
|
||||
# 307| {...}
|
||||
#-----| -> ... ...;
|
||||
|
||||
# 308| ... ...;
|
||||
#-----| -> access to parameter o
|
||||
|
||||
# 308| Object x = ...
|
||||
#-----| -> access to local variable x
|
||||
|
||||
# 308| access to parameter o
|
||||
#-----| -> Object x = ...
|
||||
|
||||
# 309| return ...;
|
||||
#-----| return -> exit (...) => ... (normal)
|
||||
|
||||
# 309| access to local variable x
|
||||
#-----| -> return ...;
|
||||
|
||||
@@ -1289,3 +1289,5 @@ entryPoint
|
||||
| cflow.cs:291:12:291:12 | M | cflow.cs:291:38:291:38 | access to parameter f |
|
||||
| cflow.cs:296:5:296:25 | NegationInConstructor | cflow.cs:296:5:296:25 | call to constructor Object |
|
||||
| cflow.cs:298:10:298:10 | M | cflow.cs:299:5:301:5 | {...} |
|
||||
| cflow.cs:306:60:310:5 | (...) => ... | cflow.cs:307:5:310:5 | {...} |
|
||||
| cflow.cs:306:60:310:5 | get__getter | cflow.cs:306:60:310:5 | (...) => ... |
|
||||
|
||||
@@ -239,7 +239,7 @@ public class ControlFlow
|
||||
|
||||
void Goto()
|
||||
{
|
||||
Label: if (!!(Field.Length == 0)) { }
|
||||
Label: if (!!(Field.Length == 0)) { }
|
||||
|
||||
if (Field.Length > 0) goto Label;
|
||||
|
||||
@@ -300,3 +300,12 @@ class NegationInConstructor
|
||||
new NegationInConstructor(i: 0, b: !(i > 0) && s != null, s: "");
|
||||
}
|
||||
}
|
||||
|
||||
class LambdaGetter
|
||||
{
|
||||
private static Func<object, string, object> _getter => (o, n) =>
|
||||
{
|
||||
object x = o;
|
||||
return x;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user