mirror of
https://github.com/github/codeql.git
synced 2026-05-26 17:11:24 +02:00
Compare commits
51 Commits
codeql-cli
...
tausbn/pyt
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a87a1a1efa | ||
|
|
f8f5094452 | ||
|
|
51b1ea84d3 | ||
|
|
49ced5fd9d | ||
|
|
d6d2855626 | ||
|
|
c37ab8f98e | ||
|
|
1fd60c7671 | ||
|
|
82e9ea2da0 | ||
|
|
a299174f4d | ||
|
|
fdefb4d23a | ||
|
|
d2da49220b | ||
|
|
4b9c9e7a5a | ||
|
|
df8029ff87 | ||
|
|
4140121e96 | ||
|
|
7d6a1f72d5 | ||
|
|
c6500e2759 | ||
|
|
470bc7d6da | ||
|
|
d1175276ca | ||
|
|
d125e224ac | ||
|
|
dc3b7aaab0 | ||
|
|
8d5eb407ad | ||
|
|
224e5dece4 | ||
|
|
dd73399238 | ||
|
|
8e6f920ae2 | ||
|
|
75cab960e2 | ||
|
|
6fe76b3b11 | ||
|
|
48475e66af | ||
|
|
93b3f65388 | ||
|
|
930b17a2e2 | ||
|
|
efe413cbd0 | ||
|
|
7ff1c12e8f | ||
|
|
7ae2b7698e | ||
|
|
4e478c3629 | ||
|
|
948623e767 | ||
|
|
33fc2bab33 | ||
|
|
beb7750c21 | ||
|
|
86198e3c43 | ||
|
|
bd1c6e6352 | ||
|
|
3d988e8e94 | ||
|
|
812fdbe412 | ||
|
|
ab432ec2e9 | ||
|
|
5942edf2d9 | ||
|
|
f0135e93c5 | ||
|
|
4ba89230db | ||
|
|
0bf0cbae8f | ||
|
|
b061c4d083 | ||
|
|
98949937dd | ||
|
|
78b88d3a44 | ||
|
|
9ab29f9be0 | ||
|
|
dabc5d54c9 | ||
|
|
196f6e1931 |
@@ -1,5 +1,5 @@
|
||||
name: codeql/actions-all
|
||||
version: 0.4.26
|
||||
version: 0.4.27-dev
|
||||
library: true
|
||||
warnOnImplicitThis: true
|
||||
dependencies:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/actions-queries
|
||||
version: 0.6.18
|
||||
version: 0.6.19-dev
|
||||
library: false
|
||||
warnOnImplicitThis: true
|
||||
groups: [actions, queries]
|
||||
|
||||
2483
cpp/downgrades/83100310bf73eefc37c1d8d0ac98b2ca3019c7b6/old.dbscheme
Normal file
2483
cpp/downgrades/83100310bf73eefc37c1d8d0ac98b2ca3019c7b6/old.dbscheme
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,2 @@
|
||||
description: Sections for databaseMetadata and overlayChangedFiles
|
||||
compatibility: full
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/cpp-all
|
||||
version: 7.0.0
|
||||
version: 7.0.1-dev
|
||||
groups: cpp
|
||||
dbscheme: semmlecode.cpp.dbscheme
|
||||
extractor: cpp
|
||||
|
||||
@@ -2389,6 +2389,8 @@ link_parent(
|
||||
int link_target : @link_target ref
|
||||
);
|
||||
|
||||
/*- Database metadata -*/
|
||||
|
||||
/**
|
||||
* The CLI will automatically emit applicable tuples for this table,
|
||||
* such as `databaseMetadata("isOverlay", "true")` when building an
|
||||
@@ -2399,6 +2401,8 @@ databaseMetadata(
|
||||
string value: string ref
|
||||
);
|
||||
|
||||
/*- Overlay support -*/
|
||||
|
||||
/**
|
||||
* The CLI will automatically emit tuples for each new/modified/deleted file
|
||||
* when building an overlay database.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,2 @@
|
||||
description: Sections for databaseMetadata and overlayChangedFiles
|
||||
compatibility: full
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/cpp-queries
|
||||
version: 1.5.9
|
||||
version: 1.5.10-dev
|
||||
groups:
|
||||
- cpp
|
||||
- queries
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/csharp-solorigate-all
|
||||
version: 1.7.57
|
||||
version: 1.7.58-dev
|
||||
groups:
|
||||
- csharp
|
||||
- solorigate
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/csharp-solorigate-queries
|
||||
version: 1.7.57
|
||||
version: 1.7.58-dev
|
||||
groups:
|
||||
- csharp
|
||||
- solorigate
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
---
|
||||
category: minorAnalysis
|
||||
---
|
||||
* C# 14: Support for null-conditional assignments (such as `c?.Prop = p`). Furthermore, the `MaybeNullExpr` class now takes null-conditional access (such as `?.`) into account when modeling potential null values.
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/csharp-all
|
||||
version: 5.4.5
|
||||
version: 5.4.6-dev
|
||||
groups: csharp
|
||||
dbscheme: semmlecode.csharp.dbscheme
|
||||
extractor: csharp
|
||||
|
||||
@@ -429,7 +429,7 @@ module Expressions {
|
||||
not this instanceof ObjectCreation and
|
||||
not this instanceof ArrayCreation and
|
||||
not this instanceof QualifiedWriteAccess and
|
||||
not this instanceof AccessorWrite and
|
||||
not this instanceof QualifiedAccessorWrite and
|
||||
not this instanceof NoNodeExpr and
|
||||
not this instanceof SwitchExpr and
|
||||
not this instanceof SwitchCaseExpr and
|
||||
@@ -446,21 +446,29 @@ module Expressions {
|
||||
}
|
||||
|
||||
/**
|
||||
* A qualified write access. In a qualified write access, the access itself is
|
||||
* not evaluated, only the qualifier and the indexer arguments (if any).
|
||||
* A qualified write access.
|
||||
*
|
||||
* The successor declaration in `QualifiedAccessorWrite` ensures that the access itself
|
||||
* is evaluated after the qualifier and the indexer arguments (if any)
|
||||
* and the right hand side of the assignment.
|
||||
*
|
||||
* When a qualified write access is used as an `out/ref` argument, the access itself is evaluated immediately.
|
||||
*/
|
||||
private class QualifiedWriteAccess extends ControlFlowTree instanceof WriteAccess, QualifiableExpr
|
||||
{
|
||||
QualifiedWriteAccess() {
|
||||
this.hasQualifier()
|
||||
or
|
||||
// Member initializers like
|
||||
// ```csharp
|
||||
// new Dictionary<int, string>() { [0] = "Zero", [1] = "One", [2] = "Two" }
|
||||
// ```
|
||||
// need special treatment, because the accesses `[0]`, `[1]`, and `[2]`
|
||||
// have no qualifier.
|
||||
this = any(MemberInitializer mi).getLValue()
|
||||
(
|
||||
this.hasQualifier()
|
||||
or
|
||||
// Member initializers like
|
||||
// ```csharp
|
||||
// new Dictionary<int, string>() { [0] = "Zero", [1] = "One", [2] = "Two" }
|
||||
// ```
|
||||
// need special treatment, because the accesses `[0]`, `[1]`, and `[2]`
|
||||
// have no qualifier.
|
||||
this = any(MemberInitializer mi).getLValue()
|
||||
) and
|
||||
not exists(AssignableDefinitions::OutRefDefinition def | def.getTargetAccess() = this)
|
||||
}
|
||||
|
||||
final override predicate propagatesAbnormal(AstNode child) { child = getExprChild(this, _) }
|
||||
@@ -470,25 +478,25 @@ module Expressions {
|
||||
final override predicate last(AstNode last, Completion c) {
|
||||
// Skip the access in a qualified write access
|
||||
last(getLastExprChild(this), last, c)
|
||||
or
|
||||
// Qualifier exits with a null completion
|
||||
super.isConditional() and
|
||||
last(super.getQualifier(), last, c) and
|
||||
c.(NullnessCompletion).isNull()
|
||||
}
|
||||
|
||||
final override predicate succ(AstNode pred, AstNode succ, Completion c) {
|
||||
exists(int i |
|
||||
last(getExprChild(this, i), pred, c) and
|
||||
c instanceof NormalCompletion and
|
||||
(if i = 0 then not c.(NullnessCompletion).isNull() else any()) and
|
||||
first(getExprChild(this, i + 1), succ)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private class StatOrDynAccessorCall_ =
|
||||
@dynamic_member_access_expr or @dynamic_element_access_expr or @call_access_expr;
|
||||
|
||||
/** A normal or a (potential) dynamic call to an accessor. */
|
||||
private class StatOrDynAccessorCall extends Expr, StatOrDynAccessorCall_ { }
|
||||
|
||||
/**
|
||||
* An expression that writes via an accessor call, for example `x.Prop = 0`,
|
||||
* An expression that writes via a qualifiable expression, for example `x.Prop = 0`,
|
||||
* where `Prop` is a property.
|
||||
*
|
||||
* Accessor writes need special attention, because we need to model the fact
|
||||
@@ -498,13 +506,21 @@ module Expressions {
|
||||
* ```csharp
|
||||
* x -> 0 -> set_Prop -> x.Prop = 0
|
||||
* ```
|
||||
*
|
||||
* For consistency, control flow is implemented the same way for other qualified writes.
|
||||
* For example, `x.Field = 0`, where `Field` is a field, we want a CFG that looks like
|
||||
*
|
||||
* ```csharp
|
||||
* x -> 0 -> x.Field -> x.Field = 0
|
||||
* ```
|
||||
*/
|
||||
class AccessorWrite extends PostOrderTree instanceof Expr {
|
||||
private class QualifiedAccessorWrite extends PostOrderTree instanceof Expr {
|
||||
AssignableDefinition def;
|
||||
|
||||
AccessorWrite() {
|
||||
QualifiedAccessorWrite() {
|
||||
def.getExpr() = this and
|
||||
def.getTargetAccess().(WriteAccess) instanceof StatOrDynAccessorCall and
|
||||
def.getTargetAccess().(WriteAccess) instanceof QualifiableExpr and
|
||||
not def instanceof AssignableDefinitions::OutRefDefinition and
|
||||
not this instanceof AssignOperationWithExpandedAssignment
|
||||
}
|
||||
|
||||
@@ -512,10 +528,11 @@ module Expressions {
|
||||
* Gets the `i`th accessor being called in this write. More than one call
|
||||
* can happen in tuple assignments.
|
||||
*/
|
||||
StatOrDynAccessorCall getCall(int i) {
|
||||
QualifiableExpr getAccess(int i) {
|
||||
result =
|
||||
rank[i + 1](AssignableDefinitions::TupleAssignmentDefinition tdef |
|
||||
tdef.getExpr() = this and tdef.getTargetAccess() instanceof StatOrDynAccessorCall
|
||||
tdef.getExpr() = this and
|
||||
tdef.getTargetAccess() instanceof QualifiableExpr
|
||||
|
|
||||
tdef order by tdef.getEvaluationOrder()
|
||||
).getTargetAccess()
|
||||
@@ -528,7 +545,13 @@ module Expressions {
|
||||
final override predicate propagatesAbnormal(AstNode child) {
|
||||
child = getExprChild(this, _)
|
||||
or
|
||||
child = this.getCall(_)
|
||||
child = this.getAccess(_)
|
||||
}
|
||||
|
||||
final override predicate last(AstNode last, Completion c) {
|
||||
PostOrderTree.super.last(last, c)
|
||||
or
|
||||
last(getExprChild(this, 0), last, c) and c.(NullnessCompletion).isNull()
|
||||
}
|
||||
|
||||
final override predicate first(AstNode first) { first(getExprChild(this, 0), first) }
|
||||
@@ -538,24 +561,25 @@ module Expressions {
|
||||
exists(int i |
|
||||
last(getExprChild(this, i), pred, c) and
|
||||
c instanceof NormalCompletion and
|
||||
(if i = 0 then not c.(NullnessCompletion).isNull() else any()) and
|
||||
first(getExprChild(this, i + 1), succ)
|
||||
)
|
||||
or
|
||||
// Flow from last element of last child to first accessor call
|
||||
last(getLastExprChild(this), pred, c) and
|
||||
succ = this.getCall(0) and
|
||||
succ = this.getAccess(0) and
|
||||
c instanceof NormalCompletion
|
||||
or
|
||||
// Flow from one call to the next
|
||||
exists(int i | pred = this.getCall(i) |
|
||||
succ = this.getCall(i + 1) and
|
||||
exists(int i | pred = this.getAccess(i) |
|
||||
succ = this.getAccess(i + 1) and
|
||||
c.isValidFor(pred) and
|
||||
c instanceof NormalCompletion
|
||||
)
|
||||
or
|
||||
// Post-order: flow from last call to element itself
|
||||
exists(int last | last = max(int i | exists(this.getCall(i))) |
|
||||
pred = this.getCall(last) and
|
||||
exists(int last | last = max(int i | exists(this.getAccess(i))) |
|
||||
pred = this.getAccess(last) and
|
||||
succ = this and
|
||||
c.isValidFor(pred) and
|
||||
c instanceof NormalCompletion
|
||||
@@ -704,7 +728,9 @@ module Expressions {
|
||||
private class ConditionallyQualifiedExpr extends PostOrderTree instanceof QualifiableExpr {
|
||||
private Expr qualifier;
|
||||
|
||||
ConditionallyQualifiedExpr() { this.isConditional() and qualifier = getExprChild(this, 0) }
|
||||
ConditionallyQualifiedExpr() {
|
||||
this.isConditional() and qualifier = getExprChild(this, 0) and not this instanceof WriteAccess
|
||||
}
|
||||
|
||||
final override predicate propagatesAbnormal(AstNode child) { child = qualifier }
|
||||
|
||||
|
||||
@@ -43,6 +43,13 @@ private Expr maybeNullExpr(Expr reason) {
|
||||
)
|
||||
or
|
||||
result.(NullCoalescingExpr).getRightOperand() = maybeNullExpr(reason)
|
||||
or
|
||||
result =
|
||||
any(QualifiableExpr qe |
|
||||
qe.isConditional() and
|
||||
reason = qe.getQualifier() and
|
||||
not qe instanceof AssignableWrite
|
||||
)
|
||||
}
|
||||
|
||||
/** An expression that may be `null`. */
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/csharp-queries
|
||||
version: 1.6.0
|
||||
version: 1.6.1-dev
|
||||
groups:
|
||||
- csharp
|
||||
- queries
|
||||
|
||||
@@ -21,4 +21,26 @@ class Assignments
|
||||
|
||||
delegate void EventHandler(object sender, object e);
|
||||
event EventHandler Event;
|
||||
int IntField;
|
||||
string StringField;
|
||||
|
||||
void SetParamSingle(out int x)
|
||||
{
|
||||
x = 42;
|
||||
}
|
||||
|
||||
void SetParamMulti(out int x, object o, out string y)
|
||||
{
|
||||
x = 42;
|
||||
y = "Hello";
|
||||
}
|
||||
|
||||
void M2()
|
||||
{
|
||||
int x1;
|
||||
SetParamSingle(out x1);
|
||||
SetParamSingle(out IntField);
|
||||
SetParamMulti(out var y, null, out StringField);
|
||||
SetParamMulti(out IntField, null, out StringField);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,14 +3,14 @@
|
||||
| AccessorCalls.cs:5:33:5:35 | enter set_Item | AccessorCalls.cs:5:33:5:35 | exit set_Item | 4 |
|
||||
| AccessorCalls.cs:7:32:7:34 | enter add_Event | AccessorCalls.cs:7:32:7:34 | exit add_Event | 4 |
|
||||
| AccessorCalls.cs:7:40:7:45 | enter remove_Event | AccessorCalls.cs:7:40:7:45 | exit remove_Event | 4 |
|
||||
| AccessorCalls.cs:10:10:10:11 | enter M1 | AccessorCalls.cs:10:10:10:11 | exit M1 | 33 |
|
||||
| AccessorCalls.cs:19:10:19:11 | enter M2 | AccessorCalls.cs:19:10:19:11 | exit M2 | 41 |
|
||||
| AccessorCalls.cs:10:10:10:11 | enter M1 | AccessorCalls.cs:10:10:10:11 | exit M1 | 34 |
|
||||
| AccessorCalls.cs:19:10:19:11 | enter M2 | AccessorCalls.cs:19:10:19:11 | exit M2 | 42 |
|
||||
| AccessorCalls.cs:28:10:28:11 | enter M3 | AccessorCalls.cs:28:10:28:11 | exit M3 | 17 |
|
||||
| AccessorCalls.cs:35:10:35:11 | enter M4 | AccessorCalls.cs:35:10:35:11 | exit M4 | 20 |
|
||||
| AccessorCalls.cs:42:10:42:11 | enter M5 | AccessorCalls.cs:42:10:42:11 | exit M5 | 33 |
|
||||
| AccessorCalls.cs:49:10:49:11 | enter M6 | AccessorCalls.cs:49:10:49:11 | exit M6 | 42 |
|
||||
| AccessorCalls.cs:56:10:56:11 | enter M7 | AccessorCalls.cs:56:10:56:11 | exit M7 | 24 |
|
||||
| AccessorCalls.cs:61:10:61:11 | enter M8 | AccessorCalls.cs:61:10:61:11 | exit M8 | 30 |
|
||||
| AccessorCalls.cs:42:10:42:11 | enter M5 | AccessorCalls.cs:42:10:42:11 | exit M5 | 34 |
|
||||
| AccessorCalls.cs:49:10:49:11 | enter M6 | AccessorCalls.cs:49:10:49:11 | exit M6 | 43 |
|
||||
| AccessorCalls.cs:56:10:56:11 | enter M7 | AccessorCalls.cs:56:10:56:11 | exit M7 | 25 |
|
||||
| AccessorCalls.cs:61:10:61:11 | enter M8 | AccessorCalls.cs:61:10:61:11 | exit M8 | 31 |
|
||||
| AccessorCalls.cs:66:10:66:11 | enter M9 | AccessorCalls.cs:66:10:66:11 | exit M9 | 58 |
|
||||
| ArrayCreation.cs:1:7:1:19 | enter ArrayCreation | ArrayCreation.cs:1:7:1:19 | exit ArrayCreation | 7 |
|
||||
| ArrayCreation.cs:3:11:3:12 | enter M1 | ArrayCreation.cs:3:11:3:12 | exit M1 | 5 |
|
||||
@@ -167,6 +167,9 @@
|
||||
| Assignments.cs:3:10:3:10 | enter M | Assignments.cs:3:10:3:10 | exit M | 34 |
|
||||
| Assignments.cs:14:18:14:35 | enter (...) => ... | Assignments.cs:14:18:14:35 | exit (...) => ... | 4 |
|
||||
| Assignments.cs:17:40:17:40 | enter + | Assignments.cs:17:40:17:40 | exit + | 6 |
|
||||
| Assignments.cs:27:10:27:23 | enter SetParamSingle | Assignments.cs:27:10:27:23 | exit SetParamSingle | 7 |
|
||||
| Assignments.cs:32:10:32:22 | enter SetParamMulti | Assignments.cs:32:10:32:22 | exit SetParamMulti | 10 |
|
||||
| Assignments.cs:38:10:38:11 | enter M2 | Assignments.cs:38:10:38:11 | exit M2 | 28 |
|
||||
| BreakInTry.cs:1:7:1:16 | enter BreakInTry | BreakInTry.cs:1:7:1:16 | exit BreakInTry | 7 |
|
||||
| BreakInTry.cs:3:10:3:11 | enter M1 | BreakInTry.cs:7:33:7:36 | access to parameter args | 5 |
|
||||
| BreakInTry.cs:3:10:3:11 | exit M1 (normal) | BreakInTry.cs:3:10:3:11 | exit M1 | 2 |
|
||||
@@ -244,7 +247,30 @@
|
||||
| ConditionalAccess.cs:32:10:32:11 | enter M8 | ConditionalAccess.cs:35:9:35:12 | access to property Prop | 8 |
|
||||
| ConditionalAccess.cs:32:10:32:11 | exit M8 (normal) | ConditionalAccess.cs:32:10:32:11 | exit M8 | 2 |
|
||||
| ConditionalAccess.cs:35:9:35:24 | call to method Out | ConditionalAccess.cs:35:9:35:24 | call to method Out | 1 |
|
||||
| ConditionalAccess.cs:41:26:41:38 | enter CommaJoinWith | ConditionalAccess.cs:41:26:41:38 | exit CommaJoinWith | 8 |
|
||||
| ConditionalAccess.cs:42:9:42:11 | enter get_Item | ConditionalAccess.cs:42:9:42:11 | exit get_Item | 6 |
|
||||
| ConditionalAccess.cs:43:9:43:11 | enter set_Item | ConditionalAccess.cs:43:9:43:11 | exit set_Item | 4 |
|
||||
| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | 4 |
|
||||
| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:46:10:46:11 | exit M9 | 2 |
|
||||
| ConditionalAccess.cs:48:24:48:25 | 42 | ConditionalAccess.cs:48:12:48:25 | ... = ... | 3 |
|
||||
| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:49:9:49:10 | access to parameter ca | 2 |
|
||||
| ConditionalAccess.cs:49:26:49:32 | "Hello" | ConditionalAccess.cs:49:12:49:32 | ... = ... | 3 |
|
||||
| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:50:9:50:10 | access to parameter ca | 2 |
|
||||
| ConditionalAccess.cs:50:13:50:13 | 0 | ConditionalAccess.cs:50:12:50:23 | ... = ... | 4 |
|
||||
| ConditionalAccess.cs:51:9:51:16 | access to property Prop | ConditionalAccess.cs:51:9:51:16 | access to property Prop | 1 |
|
||||
| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:51:9:51:10 | access to parameter ca | 2 |
|
||||
| ConditionalAccess.cs:51:30:51:31 | 84 | ConditionalAccess.cs:51:18:51:31 | ... = ... | 3 |
|
||||
| ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:52:9:52:16 | access to property Prop | 1 |
|
||||
| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:9:52:10 | access to parameter ca | 2 |
|
||||
| ConditionalAccess.cs:52:32:52:38 | "World" | ConditionalAccess.cs:52:18:52:38 | ... = ... | 3 |
|
||||
| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | 1 |
|
||||
| ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:9:53:20 | access to field IntField | 1 |
|
||||
| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | 2 |
|
||||
| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:53:12:53:25 | ... = ... | 4 |
|
||||
| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | 1 |
|
||||
| ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | 1 |
|
||||
| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | 2 |
|
||||
| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:54:12:54:29 | ... = ... | 4 |
|
||||
| ConditionalAccess.cs:60:26:60:38 | enter CommaJoinWith | ConditionalAccess.cs:60:26:60:38 | exit CommaJoinWith | 8 |
|
||||
| Conditions.cs:1:7:1:16 | enter Conditions | Conditions.cs:1:7:1:16 | exit Conditions | 7 |
|
||||
| Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:5:13:5:15 | access to parameter inc | 4 |
|
||||
| Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:3:10:3:19 | exit IncrOrDecr | 2 |
|
||||
@@ -490,8 +516,8 @@
|
||||
| Finally.cs:205:31:205:46 | object creation of type ExceptionB | Finally.cs:205:31:205:46 | object creation of type ExceptionB | 1 |
|
||||
| Finally.cs:208:13:210:13 | {...} | Finally.cs:209:21:209:22 | access to parameter b3 | 3 |
|
||||
| Finally.cs:209:31:209:46 | object creation of type ExceptionC | Finally.cs:209:25:209:47 | throw ...; | 2 |
|
||||
| Finally.cs:211:13:211:29 | ...; | Finally.cs:211:13:211:28 | ... = ... | 4 |
|
||||
| Finally.cs:213:9:213:25 | ...; | Finally.cs:195:10:195:12 | exit M10 (normal) | 5 |
|
||||
| Finally.cs:211:13:211:29 | ...; | Finally.cs:211:13:211:28 | ... = ... | 5 |
|
||||
| Finally.cs:213:9:213:25 | ...; | Finally.cs:195:10:195:12 | exit M10 (normal) | 6 |
|
||||
| Finally.cs:216:10:216:12 | enter M11 | Finally.cs:220:13:220:36 | call to method WriteLine | 7 |
|
||||
| Finally.cs:222:9:225:9 | catch {...} | Finally.cs:224:13:224:38 | call to method WriteLine | 5 |
|
||||
| Finally.cs:227:9:229:9 | {...} | Finally.cs:216:10:216:12 | exit M11 | 9 |
|
||||
@@ -539,21 +565,21 @@
|
||||
| Foreach.cs:36:10:36:11 | exit M6 (normal) | Foreach.cs:36:10:36:11 | exit M6 | 2 |
|
||||
| Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | 1 |
|
||||
| Foreach.cs:38:26:38:26 | String x | Foreach.cs:39:11:39:11 | ; | 4 |
|
||||
| Initializers.cs:3:7:3:18 | enter <object initializer> | Initializers.cs:3:7:3:18 | exit <object initializer> | 14 |
|
||||
| Initializers.cs:3:7:3:18 | enter <object initializer> | Initializers.cs:3:7:3:18 | exit <object initializer> | 15 |
|
||||
| Initializers.cs:3:7:3:18 | enter Initializers | Initializers.cs:3:7:3:18 | exit Initializers | 4 |
|
||||
| Initializers.cs:8:5:8:16 | enter Initializers | Initializers.cs:8:5:8:16 | exit Initializers | 7 |
|
||||
| Initializers.cs:10:5:10:16 | enter Initializers | Initializers.cs:10:5:10:16 | exit Initializers | 7 |
|
||||
| Initializers.cs:12:10:12:10 | enter M | Initializers.cs:12:10:12:10 | exit M | 22 |
|
||||
| Initializers.cs:18:16:18:16 | enter H | Initializers.cs:18:16:18:16 | exit H | 5 |
|
||||
| Initializers.cs:20:11:20:23 | enter <object initializer> | Initializers.cs:20:11:20:23 | exit <object initializer> | 9 |
|
||||
| Initializers.cs:12:10:12:10 | enter M | Initializers.cs:12:10:12:10 | exit M | 23 |
|
||||
| Initializers.cs:18:16:18:16 | enter H | Initializers.cs:18:16:18:16 | exit H | 6 |
|
||||
| Initializers.cs:20:11:20:23 | enter <object initializer> | Initializers.cs:20:11:20:23 | exit <object initializer> | 11 |
|
||||
| Initializers.cs:20:11:20:23 | enter NoConstructor | Initializers.cs:20:11:20:23 | exit NoConstructor | 7 |
|
||||
| Initializers.cs:26:11:26:13 | enter <object initializer> | Initializers.cs:26:11:26:13 | exit <object initializer> | 6 |
|
||||
| Initializers.cs:31:9:31:11 | enter Sub | Initializers.cs:31:9:31:11 | exit Sub | 11 |
|
||||
| Initializers.cs:33:9:33:11 | enter Sub | Initializers.cs:33:9:33:11 | exit Sub | 9 |
|
||||
| Initializers.cs:35:9:35:11 | enter Sub | Initializers.cs:35:9:35:11 | exit Sub | 13 |
|
||||
| Initializers.cs:26:11:26:13 | enter <object initializer> | Initializers.cs:26:11:26:13 | exit <object initializer> | 7 |
|
||||
| Initializers.cs:31:9:31:11 | enter Sub | Initializers.cs:31:9:31:11 | exit Sub | 12 |
|
||||
| Initializers.cs:33:9:33:11 | enter Sub | Initializers.cs:33:9:33:11 | exit Sub | 10 |
|
||||
| Initializers.cs:35:9:35:11 | enter Sub | Initializers.cs:35:9:35:11 | exit Sub | 14 |
|
||||
| Initializers.cs:39:7:39:23 | enter IndexInitializers | Initializers.cs:39:7:39:23 | exit IndexInitializers | 7 |
|
||||
| Initializers.cs:41:11:41:18 | enter Compound | Initializers.cs:41:11:41:18 | exit Compound | 7 |
|
||||
| Initializers.cs:51:10:51:13 | enter Test | Initializers.cs:51:10:51:13 | exit Test | 105 |
|
||||
| Initializers.cs:51:10:51:13 | enter Test | Initializers.cs:51:10:51:13 | exit Test | 116 |
|
||||
| LoopUnrolling.cs:5:7:5:19 | enter LoopUnrolling | LoopUnrolling.cs:5:7:5:19 | exit LoopUnrolling | 7 |
|
||||
| LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:9:13:9:28 | ... == ... | 7 |
|
||||
| LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | LoopUnrolling.cs:7:10:7:11 | exit M1 | 2 |
|
||||
@@ -629,7 +655,7 @@
|
||||
| MultiImplementationA.cs:8:29:8:32 | null | MultiImplementationA.cs:8:16:8:16 | exit M (abnormal) | 3 |
|
||||
| MultiImplementationA.cs:11:7:11:8 | enter <object initializer> | MultiImplementationA.cs:11:7:11:8 | enter <object initializer> | 1 |
|
||||
| MultiImplementationA.cs:11:7:11:8 | exit <object initializer> (normal) | MultiImplementationA.cs:11:7:11:8 | exit <object initializer> | 2 |
|
||||
| MultiImplementationA.cs:13:16:13:16 | this access | MultiImplementationA.cs:24:32:24:34 | ... = ... | 7 |
|
||||
| MultiImplementationA.cs:13:16:13:16 | this access | MultiImplementationA.cs:24:32:24:34 | ... = ... | 8 |
|
||||
| MultiImplementationA.cs:14:31:14:31 | access to parameter i | MultiImplementationA.cs:14:31:14:31 | exit get_Item (normal) | 2 |
|
||||
| MultiImplementationA.cs:14:31:14:31 | enter get_Item | MultiImplementationA.cs:14:31:14:31 | enter get_Item | 1 |
|
||||
| MultiImplementationA.cs:14:31:14:31 | exit get_Item | MultiImplementationA.cs:14:31:14:31 | exit get_Item | 1 |
|
||||
@@ -645,7 +671,7 @@
|
||||
| MultiImplementationA.cs:18:9:18:22 | enter M2 | MultiImplementationA.cs:18:9:18:22 | exit M2 | 4 |
|
||||
| MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationA.cs:20:12:20:13 | enter C2 | 1 |
|
||||
| MultiImplementationA.cs:20:12:20:13 | exit C2 | MultiImplementationA.cs:20:12:20:13 | exit C2 | 1 |
|
||||
| MultiImplementationA.cs:20:12:20:13 | this access | MultiImplementationA.cs:20:12:20:13 | exit C2 (normal) | 9 |
|
||||
| MultiImplementationA.cs:20:12:20:13 | this access | MultiImplementationA.cs:20:12:20:13 | exit C2 (normal) | 10 |
|
||||
| MultiImplementationA.cs:21:12:21:13 | enter C2 | MultiImplementationA.cs:21:12:21:13 | enter C2 | 1 |
|
||||
| MultiImplementationA.cs:21:12:21:13 | exit C2 (normal) | MultiImplementationA.cs:21:12:21:13 | exit C2 | 2 |
|
||||
| MultiImplementationA.cs:21:24:21:24 | 0 | MultiImplementationA.cs:21:27:21:29 | {...} | 3 |
|
||||
@@ -671,7 +697,7 @@
|
||||
| MultiImplementationB.cs:4:25:4:37 | {...} | MultiImplementationA.cs:7:21:7:23 | exit get_P2 (normal) | 4 |
|
||||
| MultiImplementationB.cs:4:43:4:45 | {...} | MultiImplementationA.cs:7:41:7:43 | exit set_P2 (normal) | 2 |
|
||||
| MultiImplementationB.cs:5:23:5:23 | 2 | MultiImplementationA.cs:8:16:8:16 | exit M (normal) | 2 |
|
||||
| MultiImplementationB.cs:11:16:11:16 | this access | MultiImplementationB.cs:22:32:22:34 | ... = ... | 7 |
|
||||
| MultiImplementationB.cs:11:16:11:16 | this access | MultiImplementationB.cs:22:32:22:34 | ... = ... | 8 |
|
||||
| MultiImplementationB.cs:12:37:12:40 | null | MultiImplementationA.cs:14:31:14:31 | exit get_Item (abnormal) | 3 |
|
||||
| MultiImplementationB.cs:13:40:13:54 | {...} | MultiImplementationA.cs:15:36:15:38 | exit get_Item (abnormal) | 4 |
|
||||
| MultiImplementationB.cs:13:60:13:62 | {...} | MultiImplementationB.cs:13:60:13:62 | {...} | 1 |
|
||||
@@ -722,7 +748,7 @@
|
||||
| NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:16:17:16:18 | "" | 5 |
|
||||
| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:17:13:17:19 | (...) ... | 5 |
|
||||
| NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:13:10:13:11 | exit M6 | 4 |
|
||||
| PartialImplementationA.cs:1:15:1:21 | enter <object initializer> | PartialImplementationA.cs:1:15:1:21 | exit <object initializer> | 10 |
|
||||
| PartialImplementationA.cs:1:15:1:21 | enter <object initializer> | PartialImplementationA.cs:1:15:1:21 | exit <object initializer> | 11 |
|
||||
| PartialImplementationA.cs:3:12:3:18 | enter Partial | PartialImplementationA.cs:3:12:3:18 | exit Partial | 7 |
|
||||
| PartialImplementationB.cs:4:12:4:18 | enter Partial | PartialImplementationB.cs:4:12:4:18 | exit Partial | 7 |
|
||||
| Patterns.cs:3:7:3:14 | enter Patterns | Patterns.cs:3:7:3:14 | exit Patterns | 7 |
|
||||
@@ -1041,8 +1067,8 @@
|
||||
| cflow.cs:127:32:127:57 | ... ? ... : ... | cflow.cs:127:19:127:21 | exit get_Prop | 4 |
|
||||
| cflow.cs:127:48:127:49 | "" | cflow.cs:127:48:127:49 | "" | 1 |
|
||||
| cflow.cs:127:53:127:57 | this access | cflow.cs:127:53:127:57 | access to field Field | 2 |
|
||||
| cflow.cs:127:62:127:64 | enter set_Prop | cflow.cs:127:62:127:64 | exit set_Prop | 8 |
|
||||
| cflow.cs:129:5:129:15 | enter ControlFlow | cflow.cs:129:5:129:15 | exit ControlFlow | 11 |
|
||||
| cflow.cs:127:62:127:64 | enter set_Prop | cflow.cs:127:62:127:64 | exit set_Prop | 9 |
|
||||
| cflow.cs:129:5:129:15 | enter ControlFlow | cflow.cs:129:5:129:15 | exit ControlFlow | 12 |
|
||||
| cflow.cs:134:5:134:15 | enter ControlFlow | cflow.cs:134:5:134:15 | exit ControlFlow | 9 |
|
||||
| cflow.cs:136:12:136:22 | enter ControlFlow | cflow.cs:136:12:136:22 | exit ControlFlow | 8 |
|
||||
| cflow.cs:138:40:138:40 | enter + | cflow.cs:138:40:138:40 | exit + | 9 |
|
||||
@@ -1104,7 +1130,7 @@
|
||||
| cflow.cs:201:9:205:9 | {...} | cflow.cs:193:10:193:17 | exit Booleans (abnormal) | 5 |
|
||||
| cflow.cs:208:10:208:11 | enter Do | cflow.cs:210:9:221:36 | do ... while (...); | 3 |
|
||||
| cflow.cs:208:10:208:11 | exit Do (normal) | cflow.cs:208:10:208:11 | exit Do | 2 |
|
||||
| cflow.cs:211:9:221:9 | {...} | cflow.cs:213:17:213:32 | ... > ... | 14 |
|
||||
| cflow.cs:211:9:221:9 | {...} | cflow.cs:213:17:213:32 | ... > ... | 15 |
|
||||
| cflow.cs:214:13:216:13 | {...} | cflow.cs:215:17:215:25 | continue; | 2 |
|
||||
| cflow.cs:217:13:220:13 | if (...) ... | cflow.cs:217:17:217:32 | ... < ... | 6 |
|
||||
| cflow.cs:218:13:220:13 | {...} | cflow.cs:219:17:219:22 | break; | 2 |
|
||||
@@ -1112,7 +1138,7 @@
|
||||
| cflow.cs:224:10:224:16 | enter Foreach | cflow.cs:226:27:226:64 | call to method Repeat<String> | 5 |
|
||||
| cflow.cs:224:10:224:16 | exit Foreach (normal) | cflow.cs:224:10:224:16 | exit Foreach | 2 |
|
||||
| cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | 1 |
|
||||
| cflow.cs:226:22:226:22 | String x | cflow.cs:229:17:229:32 | ... > ... | 15 |
|
||||
| cflow.cs:226:22:226:22 | String x | cflow.cs:229:17:229:32 | ... > ... | 16 |
|
||||
| cflow.cs:230:13:232:13 | {...} | cflow.cs:231:17:231:25 | continue; | 2 |
|
||||
| cflow.cs:233:13:236:13 | if (...) ... | cflow.cs:233:17:233:32 | ... < ... | 6 |
|
||||
| cflow.cs:234:13:236:13 | {...} | cflow.cs:235:17:235:22 | break; | 2 |
|
||||
|
||||
@@ -91,6 +91,23 @@ conditionBlock
|
||||
| ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | ConditionalAccess.cs:25:31:25:31 | access to local variable s | false |
|
||||
| ConditionalAccess.cs:24:17:24:37 | call to method ToString | ConditionalAccess.cs:25:31:25:31 | access to local variable s | false |
|
||||
| ConditionalAccess.cs:32:10:32:11 | enter M8 | ConditionalAccess.cs:35:9:35:24 | call to method Out | false |
|
||||
| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:48:24:48:25 | 42 | false |
|
||||
| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:49:26:49:32 | "Hello" | false |
|
||||
| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:50:13:50:13 | 0 | false |
|
||||
| ConditionalAccess.cs:51:9:51:16 | access to property Prop | ConditionalAccess.cs:51:30:51:31 | 84 | false |
|
||||
| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:51:9:51:16 | access to property Prop | false |
|
||||
| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:51:30:51:31 | 84 | false |
|
||||
| ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:52:32:52:38 | "World" | false |
|
||||
| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:9:52:16 | access to property Prop | false |
|
||||
| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:32:52:38 | "World" | false |
|
||||
| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:20 | access to field IntField | false |
|
||||
| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | false |
|
||||
| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:9:53:20 | access to field IntField | false |
|
||||
| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:25:53:25 | 1 | false |
|
||||
| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | false |
|
||||
| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | false |
|
||||
| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | false |
|
||||
| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:27:54:29 | "!" | false |
|
||||
| Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:6:13:6:16 | ...; | true |
|
||||
| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:7:13:7:16 | [false] !... | true |
|
||||
| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:7:13:7:16 | [true] !... | false |
|
||||
|
||||
@@ -34,6 +34,25 @@ class ConditionalAccess
|
||||
i = 0;
|
||||
Prop?.Out(out i);
|
||||
}
|
||||
|
||||
string StringProp { get; set; }
|
||||
int IntField;
|
||||
string this[int index]
|
||||
{
|
||||
get { return null; }
|
||||
set { }
|
||||
}
|
||||
|
||||
void M9(ConditionalAccess ca)
|
||||
{
|
||||
ca?.IntField = 42;
|
||||
ca?.StringProp = "Hello";
|
||||
ca?[0] = "Set0";
|
||||
ca?.Prop?.IntField = 84;
|
||||
ca?.Prop?.StringProp = "World";
|
||||
ca?.IntField -= 1;
|
||||
ca?.StringProp += "!";
|
||||
}
|
||||
}
|
||||
|
||||
static class Ext
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -27,6 +27,7 @@ nodeEnclosing
|
||||
| AccessorCalls.cs:10:10:10:11 | exit M1 (normal) | AccessorCalls.cs:10:10:10:11 | M1 |
|
||||
| AccessorCalls.cs:11:5:17:5 | {...} | AccessorCalls.cs:10:10:10:11 | M1 |
|
||||
| AccessorCalls.cs:12:9:12:12 | this access | AccessorCalls.cs:10:10:10:11 | M1 |
|
||||
| AccessorCalls.cs:12:9:12:18 | access to field Field | AccessorCalls.cs:10:10:10:11 | M1 |
|
||||
| AccessorCalls.cs:12:9:12:31 | ... = ... | AccessorCalls.cs:10:10:10:11 | M1 |
|
||||
| AccessorCalls.cs:12:9:12:32 | ...; | AccessorCalls.cs:10:10:10:11 | M1 |
|
||||
| AccessorCalls.cs:12:22:12:25 | this access | AccessorCalls.cs:10:10:10:11 | M1 |
|
||||
@@ -61,6 +62,7 @@ nodeEnclosing
|
||||
| AccessorCalls.cs:20:5:26:5 | {...} | AccessorCalls.cs:19:10:19:11 | M2 |
|
||||
| AccessorCalls.cs:21:9:21:12 | this access | AccessorCalls.cs:19:10:19:11 | M2 |
|
||||
| AccessorCalls.cs:21:9:21:14 | access to field x | AccessorCalls.cs:19:10:19:11 | M2 |
|
||||
| AccessorCalls.cs:21:9:21:20 | access to field Field | AccessorCalls.cs:19:10:19:11 | M2 |
|
||||
| AccessorCalls.cs:21:9:21:35 | ... = ... | AccessorCalls.cs:19:10:19:11 | M2 |
|
||||
| AccessorCalls.cs:21:9:21:36 | ...; | AccessorCalls.cs:19:10:19:11 | M2 |
|
||||
| AccessorCalls.cs:21:24:21:27 | this access | AccessorCalls.cs:19:10:19:11 | M2 |
|
||||
@@ -140,6 +142,7 @@ nodeEnclosing
|
||||
| AccessorCalls.cs:44:9:44:12 | this access | AccessorCalls.cs:42:10:42:11 | M5 |
|
||||
| AccessorCalls.cs:44:9:44:12 | this access | AccessorCalls.cs:42:10:42:11 | M5 |
|
||||
| AccessorCalls.cs:44:9:44:18 | access to field Field | AccessorCalls.cs:42:10:42:11 | M5 |
|
||||
| AccessorCalls.cs:44:9:44:18 | access to field Field | AccessorCalls.cs:42:10:42:11 | M5 |
|
||||
| AccessorCalls.cs:44:9:44:32 | ... + ... | AccessorCalls.cs:42:10:42:11 | M5 |
|
||||
| AccessorCalls.cs:44:9:44:32 | ... = ... | AccessorCalls.cs:42:10:42:11 | M5 |
|
||||
| AccessorCalls.cs:44:9:44:33 | ...; | AccessorCalls.cs:42:10:42:11 | M5 |
|
||||
@@ -175,6 +178,7 @@ nodeEnclosing
|
||||
| AccessorCalls.cs:51:9:51:14 | access to field x | AccessorCalls.cs:49:10:49:11 | M6 |
|
||||
| AccessorCalls.cs:51:9:51:14 | access to field x | AccessorCalls.cs:49:10:49:11 | M6 |
|
||||
| AccessorCalls.cs:51:9:51:20 | access to field Field | AccessorCalls.cs:49:10:49:11 | M6 |
|
||||
| AccessorCalls.cs:51:9:51:20 | access to field Field | AccessorCalls.cs:49:10:49:11 | M6 |
|
||||
| AccessorCalls.cs:51:9:51:36 | ... + ... | AccessorCalls.cs:49:10:49:11 | M6 |
|
||||
| AccessorCalls.cs:51:9:51:36 | ... = ... | AccessorCalls.cs:49:10:49:11 | M6 |
|
||||
| AccessorCalls.cs:51:9:51:37 | ...; | AccessorCalls.cs:49:10:49:11 | M6 |
|
||||
@@ -216,6 +220,7 @@ nodeEnclosing
|
||||
| AccessorCalls.cs:58:9:58:85 | ... = ... | AccessorCalls.cs:56:10:56:11 | M7 |
|
||||
| AccessorCalls.cs:58:9:58:86 | ...; | AccessorCalls.cs:56:10:56:11 | M7 |
|
||||
| AccessorCalls.cs:58:10:58:13 | this access | AccessorCalls.cs:56:10:56:11 | M7 |
|
||||
| AccessorCalls.cs:58:10:58:19 | access to field Field | AccessorCalls.cs:56:10:56:11 | M7 |
|
||||
| AccessorCalls.cs:58:22:58:25 | this access | AccessorCalls.cs:56:10:56:11 | M7 |
|
||||
| AccessorCalls.cs:58:22:58:30 | access to property Prop | AccessorCalls.cs:56:10:56:11 | M7 |
|
||||
| AccessorCalls.cs:58:33:58:44 | (..., ...) | AccessorCalls.cs:56:10:56:11 | M7 |
|
||||
@@ -241,6 +246,7 @@ nodeEnclosing
|
||||
| AccessorCalls.cs:63:9:63:98 | ...; | AccessorCalls.cs:61:10:61:11 | M8 |
|
||||
| AccessorCalls.cs:63:10:63:13 | this access | AccessorCalls.cs:61:10:61:11 | M8 |
|
||||
| AccessorCalls.cs:63:10:63:15 | access to field x | AccessorCalls.cs:61:10:61:11 | M8 |
|
||||
| AccessorCalls.cs:63:10:63:21 | access to field Field | AccessorCalls.cs:61:10:61:11 | M8 |
|
||||
| AccessorCalls.cs:63:24:63:27 | this access | AccessorCalls.cs:61:10:61:11 | M8 |
|
||||
| AccessorCalls.cs:63:24:63:29 | access to field x | AccessorCalls.cs:61:10:61:11 | M8 |
|
||||
| AccessorCalls.cs:63:24:63:34 | access to property Prop | AccessorCalls.cs:61:10:61:11 | M8 |
|
||||
@@ -833,6 +839,51 @@ nodeEnclosing
|
||||
| Assignments.cs:18:5:20:5 | {...} | Assignments.cs:17:40:17:40 | + |
|
||||
| Assignments.cs:19:9:19:17 | return ...; | Assignments.cs:17:40:17:40 | + |
|
||||
| Assignments.cs:19:16:19:16 | access to parameter x | Assignments.cs:17:40:17:40 | + |
|
||||
| Assignments.cs:27:10:27:23 | enter SetParamSingle | Assignments.cs:27:10:27:23 | SetParamSingle |
|
||||
| Assignments.cs:27:10:27:23 | exit SetParamSingle | Assignments.cs:27:10:27:23 | SetParamSingle |
|
||||
| Assignments.cs:27:10:27:23 | exit SetParamSingle (normal) | Assignments.cs:27:10:27:23 | SetParamSingle |
|
||||
| Assignments.cs:28:5:30:5 | {...} | Assignments.cs:27:10:27:23 | SetParamSingle |
|
||||
| Assignments.cs:29:9:29:14 | ... = ... | Assignments.cs:27:10:27:23 | SetParamSingle |
|
||||
| Assignments.cs:29:9:29:15 | ...; | Assignments.cs:27:10:27:23 | SetParamSingle |
|
||||
| Assignments.cs:29:13:29:14 | 42 | Assignments.cs:27:10:27:23 | SetParamSingle |
|
||||
| Assignments.cs:32:10:32:22 | enter SetParamMulti | Assignments.cs:32:10:32:22 | SetParamMulti |
|
||||
| Assignments.cs:32:10:32:22 | exit SetParamMulti | Assignments.cs:32:10:32:22 | SetParamMulti |
|
||||
| Assignments.cs:32:10:32:22 | exit SetParamMulti (normal) | Assignments.cs:32:10:32:22 | SetParamMulti |
|
||||
| Assignments.cs:33:5:36:5 | {...} | Assignments.cs:32:10:32:22 | SetParamMulti |
|
||||
| Assignments.cs:34:9:34:14 | ... = ... | Assignments.cs:32:10:32:22 | SetParamMulti |
|
||||
| Assignments.cs:34:9:34:15 | ...; | Assignments.cs:32:10:32:22 | SetParamMulti |
|
||||
| Assignments.cs:34:13:34:14 | 42 | Assignments.cs:32:10:32:22 | SetParamMulti |
|
||||
| Assignments.cs:35:9:35:19 | ... = ... | Assignments.cs:32:10:32:22 | SetParamMulti |
|
||||
| Assignments.cs:35:9:35:20 | ...; | Assignments.cs:32:10:32:22 | SetParamMulti |
|
||||
| Assignments.cs:35:13:35:19 | "Hello" | Assignments.cs:32:10:32:22 | SetParamMulti |
|
||||
| Assignments.cs:38:10:38:11 | enter M2 | Assignments.cs:38:10:38:11 | M2 |
|
||||
| Assignments.cs:38:10:38:11 | exit M2 | Assignments.cs:38:10:38:11 | M2 |
|
||||
| Assignments.cs:38:10:38:11 | exit M2 (normal) | Assignments.cs:38:10:38:11 | M2 |
|
||||
| Assignments.cs:39:5:45:5 | {...} | Assignments.cs:38:10:38:11 | M2 |
|
||||
| Assignments.cs:40:9:40:15 | ... ...; | Assignments.cs:38:10:38:11 | M2 |
|
||||
| Assignments.cs:40:13:40:14 | Int32 x1 | Assignments.cs:38:10:38:11 | M2 |
|
||||
| Assignments.cs:41:9:41:30 | call to method SetParamSingle | Assignments.cs:38:10:38:11 | M2 |
|
||||
| Assignments.cs:41:9:41:30 | this access | Assignments.cs:38:10:38:11 | M2 |
|
||||
| Assignments.cs:41:9:41:31 | ...; | Assignments.cs:38:10:38:11 | M2 |
|
||||
| Assignments.cs:42:9:42:36 | call to method SetParamSingle | Assignments.cs:38:10:38:11 | M2 |
|
||||
| Assignments.cs:42:9:42:36 | this access | Assignments.cs:38:10:38:11 | M2 |
|
||||
| Assignments.cs:42:9:42:37 | ...; | Assignments.cs:38:10:38:11 | M2 |
|
||||
| Assignments.cs:42:28:42:35 | access to field IntField | Assignments.cs:38:10:38:11 | M2 |
|
||||
| Assignments.cs:42:28:42:35 | this access | Assignments.cs:38:10:38:11 | M2 |
|
||||
| Assignments.cs:43:9:43:55 | call to method SetParamMulti | Assignments.cs:38:10:38:11 | M2 |
|
||||
| Assignments.cs:43:9:43:55 | this access | Assignments.cs:38:10:38:11 | M2 |
|
||||
| Assignments.cs:43:9:43:56 | ...; | Assignments.cs:38:10:38:11 | M2 |
|
||||
| Assignments.cs:43:34:43:37 | null | Assignments.cs:38:10:38:11 | M2 |
|
||||
| Assignments.cs:43:44:43:54 | access to field StringField | Assignments.cs:38:10:38:11 | M2 |
|
||||
| Assignments.cs:43:44:43:54 | this access | Assignments.cs:38:10:38:11 | M2 |
|
||||
| Assignments.cs:44:9:44:58 | call to method SetParamMulti | Assignments.cs:38:10:38:11 | M2 |
|
||||
| Assignments.cs:44:9:44:58 | this access | Assignments.cs:38:10:38:11 | M2 |
|
||||
| Assignments.cs:44:9:44:59 | ...; | Assignments.cs:38:10:38:11 | M2 |
|
||||
| Assignments.cs:44:27:44:34 | access to field IntField | Assignments.cs:38:10:38:11 | M2 |
|
||||
| Assignments.cs:44:27:44:34 | this access | Assignments.cs:38:10:38:11 | M2 |
|
||||
| Assignments.cs:44:37:44:40 | null | Assignments.cs:38:10:38:11 | M2 |
|
||||
| Assignments.cs:44:47:44:57 | access to field StringField | Assignments.cs:38:10:38:11 | M2 |
|
||||
| Assignments.cs:44:47:44:57 | this access | Assignments.cs:38:10:38:11 | M2 |
|
||||
| BreakInTry.cs:1:7:1:16 | call to constructor Object | BreakInTry.cs:1:7:1:16 | BreakInTry |
|
||||
| BreakInTry.cs:1:7:1:16 | call to method <object initializer> | BreakInTry.cs:1:7:1:16 | BreakInTry |
|
||||
| BreakInTry.cs:1:7:1:16 | enter BreakInTry | BreakInTry.cs:1:7:1:16 | BreakInTry |
|
||||
@@ -1071,14 +1122,72 @@ nodeEnclosing
|
||||
| ConditionalAccess.cs:35:9:35:12 | this access | ConditionalAccess.cs:32:10:32:11 | M8 |
|
||||
| ConditionalAccess.cs:35:9:35:24 | call to method Out | ConditionalAccess.cs:32:10:32:11 | M8 |
|
||||
| ConditionalAccess.cs:35:9:35:25 | ...; | ConditionalAccess.cs:32:10:32:11 | M8 |
|
||||
| ConditionalAccess.cs:41:26:41:38 | enter CommaJoinWith | ConditionalAccess.cs:41:26:41:38 | CommaJoinWith |
|
||||
| ConditionalAccess.cs:41:26:41:38 | exit CommaJoinWith | ConditionalAccess.cs:41:26:41:38 | CommaJoinWith |
|
||||
| ConditionalAccess.cs:41:26:41:38 | exit CommaJoinWith (normal) | ConditionalAccess.cs:41:26:41:38 | CommaJoinWith |
|
||||
| ConditionalAccess.cs:41:70:41:71 | access to parameter s1 | ConditionalAccess.cs:41:26:41:38 | CommaJoinWith |
|
||||
| ConditionalAccess.cs:41:70:41:78 | ... + ... | ConditionalAccess.cs:41:26:41:38 | CommaJoinWith |
|
||||
| ConditionalAccess.cs:41:70:41:83 | ... + ... | ConditionalAccess.cs:41:26:41:38 | CommaJoinWith |
|
||||
| ConditionalAccess.cs:41:75:41:78 | ", " | ConditionalAccess.cs:41:26:41:38 | CommaJoinWith |
|
||||
| ConditionalAccess.cs:41:82:41:83 | access to parameter s2 | ConditionalAccess.cs:41:26:41:38 | CommaJoinWith |
|
||||
| ConditionalAccess.cs:42:9:42:11 | enter get_Item | ConditionalAccess.cs:42:9:42:11 | get_Item |
|
||||
| ConditionalAccess.cs:42:9:42:11 | exit get_Item | ConditionalAccess.cs:42:9:42:11 | get_Item |
|
||||
| ConditionalAccess.cs:42:9:42:11 | exit get_Item (normal) | ConditionalAccess.cs:42:9:42:11 | get_Item |
|
||||
| ConditionalAccess.cs:42:13:42:28 | {...} | ConditionalAccess.cs:42:9:42:11 | get_Item |
|
||||
| ConditionalAccess.cs:42:15:42:26 | return ...; | ConditionalAccess.cs:42:9:42:11 | get_Item |
|
||||
| ConditionalAccess.cs:42:22:42:25 | null | ConditionalAccess.cs:42:9:42:11 | get_Item |
|
||||
| ConditionalAccess.cs:43:9:43:11 | enter set_Item | ConditionalAccess.cs:43:9:43:11 | set_Item |
|
||||
| ConditionalAccess.cs:43:9:43:11 | exit set_Item | ConditionalAccess.cs:43:9:43:11 | set_Item |
|
||||
| ConditionalAccess.cs:43:9:43:11 | exit set_Item (normal) | ConditionalAccess.cs:43:9:43:11 | set_Item |
|
||||
| ConditionalAccess.cs:43:13:43:15 | {...} | ConditionalAccess.cs:43:9:43:11 | set_Item |
|
||||
| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:46:10:46:11 | exit M9 | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:47:5:55:5 | {...} | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:48:9:48:10 | access to parameter ca | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:48:9:48:20 | access to field IntField | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:48:9:48:26 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:48:12:48:25 | ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:48:24:48:25 | 42 | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:49:9:49:10 | access to parameter ca | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:49:9:49:22 | access to property StringProp | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:49:12:49:32 | ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:49:26:49:32 | "Hello" | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:50:9:50:10 | access to parameter ca | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:50:9:50:14 | access to indexer | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:50:12:50:23 | ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:50:13:50:13 | 0 | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:50:18:50:23 | "Set0" | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:51:9:51:10 | access to parameter ca | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:51:9:51:16 | access to property Prop | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:51:9:51:26 | access to field IntField | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:51:18:51:31 | ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:51:30:51:31 | 84 | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:52:9:52:10 | access to parameter ca | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:52:9:52:28 | access to property StringProp | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:52:18:52:38 | ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:52:32:52:38 | "World" | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:53:12:53:25 | ... - ... | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:53:12:53:25 | ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:54:12:54:29 | ... + ... | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:54:12:54:29 | ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:60:26:60:38 | enter CommaJoinWith | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith |
|
||||
| ConditionalAccess.cs:60:26:60:38 | exit CommaJoinWith | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith |
|
||||
| ConditionalAccess.cs:60:26:60:38 | exit CommaJoinWith (normal) | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith |
|
||||
| ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith |
|
||||
| ConditionalAccess.cs:60:70:60:78 | ... + ... | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith |
|
||||
| ConditionalAccess.cs:60:70:60:83 | ... + ... | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith |
|
||||
| ConditionalAccess.cs:60:75:60:78 | ", " | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith |
|
||||
| ConditionalAccess.cs:60:82:60:83 | access to parameter s2 | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith |
|
||||
| Conditions.cs:1:7:1:16 | call to constructor Object | Conditions.cs:1:7:1:16 | Conditions |
|
||||
| Conditions.cs:1:7:1:16 | call to method <object initializer> | Conditions.cs:1:7:1:16 | Conditions |
|
||||
| Conditions.cs:1:7:1:16 | enter Conditions | Conditions.cs:1:7:1:16 | Conditions |
|
||||
@@ -1943,10 +2052,12 @@ nodeEnclosing
|
||||
| Finally.cs:209:25:209:47 | throw ...; | Finally.cs:195:10:195:12 | M10 |
|
||||
| Finally.cs:209:31:209:46 | object creation of type ExceptionC | Finally.cs:195:10:195:12 | M10 |
|
||||
| Finally.cs:211:13:211:16 | this access | Finally.cs:195:10:195:12 | M10 |
|
||||
| Finally.cs:211:13:211:22 | access to field Field | Finally.cs:195:10:195:12 | M10 |
|
||||
| Finally.cs:211:13:211:28 | ... = ... | Finally.cs:195:10:195:12 | M10 |
|
||||
| Finally.cs:211:13:211:29 | ...; | Finally.cs:195:10:195:12 | M10 |
|
||||
| Finally.cs:211:26:211:28 | "0" | Finally.cs:195:10:195:12 | M10 |
|
||||
| Finally.cs:213:9:213:12 | this access | Finally.cs:195:10:195:12 | M10 |
|
||||
| Finally.cs:213:9:213:18 | access to field Field | Finally.cs:195:10:195:12 | M10 |
|
||||
| Finally.cs:213:9:213:24 | ... = ... | Finally.cs:195:10:195:12 | M10 |
|
||||
| Finally.cs:213:9:213:25 | ...; | Finally.cs:195:10:195:12 | M10 |
|
||||
| Finally.cs:213:22:213:24 | "1" | Finally.cs:195:10:195:12 | M10 |
|
||||
@@ -2095,6 +2206,7 @@ nodeEnclosing
|
||||
| Initializers.cs:3:7:3:18 | exit Initializers | Initializers.cs:3:7:3:18 | Initializers |
|
||||
| Initializers.cs:3:7:3:18 | exit Initializers (normal) | Initializers.cs:3:7:3:18 | Initializers |
|
||||
| Initializers.cs:3:7:3:18 | {...} | Initializers.cs:3:7:3:18 | Initializers |
|
||||
| Initializers.cs:5:9:5:9 | access to field F | Initializers.cs:3:7:3:18 | <object initializer> |
|
||||
| Initializers.cs:5:9:5:9 | this access | Initializers.cs:3:7:3:18 | <object initializer> |
|
||||
| Initializers.cs:5:9:5:17 | ... = ... | Initializers.cs:3:7:3:18 | <object initializer> |
|
||||
| Initializers.cs:5:13:5:13 | access to field H | Initializers.cs:3:7:3:18 | <object initializer> |
|
||||
@@ -2129,6 +2241,7 @@ nodeEnclosing
|
||||
| Initializers.cs:14:17:14:53 | object creation of type Initializers | Initializers.cs:12:10:12:10 | M |
|
||||
| Initializers.cs:14:34:14:35 | "" | Initializers.cs:12:10:12:10 | M |
|
||||
| Initializers.cs:14:38:14:53 | { ..., ... } | Initializers.cs:12:10:12:10 | M |
|
||||
| Initializers.cs:14:40:14:40 | access to field F | Initializers.cs:12:10:12:10 | M |
|
||||
| Initializers.cs:14:40:14:44 | ... = ... | Initializers.cs:12:10:12:10 | M |
|
||||
| Initializers.cs:14:44:14:44 | 0 | Initializers.cs:12:10:12:10 | M |
|
||||
| Initializers.cs:14:47:14:47 | access to property G | Initializers.cs:12:10:12:10 | M |
|
||||
@@ -2152,15 +2265,18 @@ nodeEnclosing
|
||||
| Initializers.cs:20:11:20:23 | exit NoConstructor (normal) | Initializers.cs:20:11:20:23 | NoConstructor |
|
||||
| Initializers.cs:20:11:20:23 | this access | Initializers.cs:20:11:20:23 | NoConstructor |
|
||||
| Initializers.cs:20:11:20:23 | {...} | Initializers.cs:20:11:20:23 | NoConstructor |
|
||||
| Initializers.cs:22:23:22:23 | access to field F | Initializers.cs:20:11:20:23 | <object initializer> |
|
||||
| Initializers.cs:22:23:22:23 | this access | Initializers.cs:20:11:20:23 | <object initializer> |
|
||||
| Initializers.cs:22:23:22:27 | ... = ... | Initializers.cs:20:11:20:23 | <object initializer> |
|
||||
| Initializers.cs:22:27:22:27 | 0 | Initializers.cs:20:11:20:23 | <object initializer> |
|
||||
| Initializers.cs:23:23:23:23 | access to field G | Initializers.cs:20:11:20:23 | <object initializer> |
|
||||
| Initializers.cs:23:23:23:23 | this access | Initializers.cs:20:11:20:23 | <object initializer> |
|
||||
| Initializers.cs:23:23:23:27 | ... = ... | Initializers.cs:20:11:20:23 | <object initializer> |
|
||||
| Initializers.cs:23:27:23:27 | 1 | Initializers.cs:20:11:20:23 | <object initializer> |
|
||||
| Initializers.cs:26:11:26:13 | enter <object initializer> | Initializers.cs:26:11:26:13 | <object initializer> |
|
||||
| Initializers.cs:26:11:26:13 | exit <object initializer> | Initializers.cs:26:11:26:13 | <object initializer> |
|
||||
| Initializers.cs:26:11:26:13 | exit <object initializer> (normal) | Initializers.cs:26:11:26:13 | <object initializer> |
|
||||
| Initializers.cs:28:13:28:13 | access to field H | Initializers.cs:26:11:26:13 | <object initializer> |
|
||||
| Initializers.cs:28:13:28:13 | this access | Initializers.cs:26:11:26:13 | <object initializer> |
|
||||
| Initializers.cs:28:13:28:17 | ... = ... | Initializers.cs:26:11:26:13 | <object initializer> |
|
||||
| Initializers.cs:28:17:28:17 | 2 | Initializers.cs:26:11:26:13 | <object initializer> |
|
||||
@@ -2171,6 +2287,7 @@ nodeEnclosing
|
||||
| Initializers.cs:31:9:31:11 | this access | Initializers.cs:31:9:31:11 | Sub |
|
||||
| Initializers.cs:31:17:31:20 | call to constructor NoConstructor | Initializers.cs:31:9:31:11 | Sub |
|
||||
| Initializers.cs:31:24:31:33 | {...} | Initializers.cs:31:9:31:11 | Sub |
|
||||
| Initializers.cs:31:26:31:26 | access to field I | Initializers.cs:31:9:31:11 | Sub |
|
||||
| Initializers.cs:31:26:31:26 | this access | Initializers.cs:31:9:31:11 | Sub |
|
||||
| Initializers.cs:31:26:31:30 | ... = ... | Initializers.cs:31:9:31:11 | Sub |
|
||||
| Initializers.cs:31:26:31:31 | ...; | Initializers.cs:31:9:31:11 | Sub |
|
||||
@@ -2180,6 +2297,7 @@ nodeEnclosing
|
||||
| Initializers.cs:33:9:33:11 | exit Sub (normal) | Initializers.cs:33:9:33:11 | Sub |
|
||||
| Initializers.cs:33:22:33:25 | call to constructor Sub | Initializers.cs:33:9:33:11 | Sub |
|
||||
| Initializers.cs:33:29:33:38 | {...} | Initializers.cs:33:9:33:11 | Sub |
|
||||
| Initializers.cs:33:31:33:31 | access to field I | Initializers.cs:33:9:33:11 | Sub |
|
||||
| Initializers.cs:33:31:33:31 | this access | Initializers.cs:33:9:33:11 | Sub |
|
||||
| Initializers.cs:33:31:33:35 | ... = ... | Initializers.cs:33:9:33:11 | Sub |
|
||||
| Initializers.cs:33:31:33:36 | ...; | Initializers.cs:33:9:33:11 | Sub |
|
||||
@@ -2191,6 +2309,7 @@ nodeEnclosing
|
||||
| Initializers.cs:35:9:35:11 | exit Sub (normal) | Initializers.cs:35:9:35:11 | Sub |
|
||||
| Initializers.cs:35:9:35:11 | this access | Initializers.cs:35:9:35:11 | Sub |
|
||||
| Initializers.cs:35:27:35:40 | {...} | Initializers.cs:35:9:35:11 | Sub |
|
||||
| Initializers.cs:35:29:35:29 | access to field I | Initializers.cs:35:9:35:11 | Sub |
|
||||
| Initializers.cs:35:29:35:29 | this access | Initializers.cs:35:9:35:11 | Sub |
|
||||
| Initializers.cs:35:29:35:37 | ... = ... | Initializers.cs:35:9:35:11 | Sub |
|
||||
| Initializers.cs:35:29:35:38 | ...; | Initializers.cs:35:9:35:11 | Sub |
|
||||
@@ -2237,6 +2356,7 @@ nodeEnclosing
|
||||
| Initializers.cs:57:13:65:9 | Compound compound = ... | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:57:24:65:9 | object creation of type Compound | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:58:9:65:9 | { ..., ... } | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:59:13:59:27 | access to field DictionaryField | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:59:13:59:76 | ... = ... | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:59:31:59:76 | { ..., ... } | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:59:33:59:35 | access to indexer | Initializers.cs:51:10:51:13 | Test |
|
||||
@@ -2270,22 +2390,28 @@ nodeEnclosing
|
||||
| Initializers.cs:60:65:60:69 | ... + ... | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:60:69:60:69 | 1 | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:60:74:60:78 | "One" | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:61:13:61:22 | access to field ArrayField | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:61:13:61:58 | ... = ... | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:61:26:61:58 | { ..., ... } | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:61:28:61:30 | access to array element | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:61:28:61:39 | ... = ... | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:61:29:61:29 | 0 | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:61:34:61:39 | "Zero" | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:61:42:61:48 | access to array element | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:61:42:61:56 | ... = ... | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:61:43:61:43 | access to parameter i | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:61:43:61:47 | ... + ... | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:61:47:61:47 | 1 | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:61:52:61:56 | "One" | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:62:13:62:23 | access to field ArrayField2 | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:62:13:62:60 | ... = ... | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:62:27:62:60 | { ..., ... } | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:62:29:62:34 | access to array element | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:62:29:62:40 | ... = ... | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:62:30:62:30 | 0 | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:62:33:62:33 | 1 | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:62:38:62:40 | "i" | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:62:43:62:52 | access to array element | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:62:43:62:58 | ... = ... | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:62:44:62:44 | 1 | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:62:47:62:47 | access to parameter i | Initializers.cs:51:10:51:13 | Test |
|
||||
@@ -2295,9 +2421,11 @@ nodeEnclosing
|
||||
| Initializers.cs:63:13:63:25 | access to property ArrayProperty | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:63:13:63:60 | ... = ... | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:63:29:63:60 | { ..., ... } | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:63:31:63:33 | access to array element | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:63:31:63:41 | ... = ... | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:63:32:63:32 | 1 | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:63:37:63:41 | "One" | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:63:44:63:50 | access to array element | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:63:44:63:58 | ... = ... | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:63:45:63:45 | access to parameter i | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:63:45:63:49 | ... + ... | Initializers.cs:51:10:51:13 | Test |
|
||||
@@ -2306,10 +2434,12 @@ nodeEnclosing
|
||||
| Initializers.cs:64:13:64:26 | access to property ArrayProperty2 | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:64:13:64:63 | ... = ... | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:64:30:64:63 | { ..., ... } | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:64:32:64:37 | access to array element | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:64:32:64:43 | ... = ... | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:64:33:64:33 | 0 | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:64:36:64:36 | 1 | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:64:41:64:43 | "i" | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:64:46:64:55 | access to array element | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:64:46:64:61 | ... = ... | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:64:47:64:47 | 1 | Initializers.cs:51:10:51:13 | Test |
|
||||
| Initializers.cs:64:50:64:50 | access to parameter i | Initializers.cs:51:10:51:13 | Test |
|
||||
@@ -2565,6 +2695,7 @@ nodeEnclosing
|
||||
| MultiImplementationA.cs:11:7:11:8 | enter <object initializer> | MultiImplementationA.cs:11:7:11:8 | <object initializer> |
|
||||
| MultiImplementationA.cs:11:7:11:8 | exit <object initializer> | MultiImplementationA.cs:11:7:11:8 | <object initializer> |
|
||||
| MultiImplementationA.cs:11:7:11:8 | exit <object initializer> (normal) | MultiImplementationA.cs:11:7:11:8 | <object initializer> |
|
||||
| MultiImplementationA.cs:13:16:13:16 | access to field F | MultiImplementationA.cs:11:7:11:8 | <object initializer> |
|
||||
| MultiImplementationA.cs:13:16:13:16 | this access | MultiImplementationA.cs:11:7:11:8 | <object initializer> |
|
||||
| MultiImplementationA.cs:13:16:13:20 | ... = ... | MultiImplementationA.cs:11:7:11:8 | <object initializer> |
|
||||
| MultiImplementationA.cs:13:20:13:20 | 0 | MultiImplementationA.cs:11:7:11:8 | <object initializer> |
|
||||
@@ -2601,6 +2732,7 @@ nodeEnclosing
|
||||
| MultiImplementationA.cs:20:12:20:13 | exit C2 (normal) | MultiImplementationA.cs:20:12:20:13 | C2 |
|
||||
| MultiImplementationA.cs:20:12:20:13 | this access | MultiImplementationA.cs:20:12:20:13 | C2 |
|
||||
| MultiImplementationA.cs:20:22:20:31 | {...} | MultiImplementationA.cs:20:12:20:13 | C2 |
|
||||
| MultiImplementationA.cs:20:24:20:24 | access to field F | MultiImplementationA.cs:20:12:20:13 | C2 |
|
||||
| MultiImplementationA.cs:20:24:20:24 | this access | MultiImplementationA.cs:20:12:20:13 | C2 |
|
||||
| MultiImplementationA.cs:20:24:20:28 | ... = ... | MultiImplementationA.cs:20:12:20:13 | C2 |
|
||||
| MultiImplementationA.cs:20:24:20:29 | ...; | MultiImplementationA.cs:20:12:20:13 | C2 |
|
||||
@@ -2667,6 +2799,7 @@ nodeEnclosing
|
||||
| MultiImplementationB.cs:4:34:4:34 | 1 | MultiImplementationA.cs:7:21:7:23 | get_P2 |
|
||||
| MultiImplementationB.cs:4:43:4:45 | {...} | MultiImplementationA.cs:7:41:7:43 | set_P2 |
|
||||
| MultiImplementationB.cs:5:23:5:23 | 2 | MultiImplementationA.cs:8:16:8:16 | M |
|
||||
| MultiImplementationB.cs:11:16:11:16 | access to field F | MultiImplementationA.cs:11:7:11:8 | <object initializer> |
|
||||
| MultiImplementationB.cs:11:16:11:16 | this access | MultiImplementationA.cs:11:7:11:8 | <object initializer> |
|
||||
| MultiImplementationB.cs:11:16:11:20 | ... = ... | MultiImplementationA.cs:11:7:11:8 | <object initializer> |
|
||||
| MultiImplementationB.cs:11:20:11:20 | 1 | MultiImplementationA.cs:11:7:11:8 | <object initializer> |
|
||||
@@ -2794,6 +2927,7 @@ nodeEnclosing
|
||||
| PartialImplementationA.cs:3:12:3:18 | exit Partial (normal) | PartialImplementationA.cs:3:12:3:18 | Partial |
|
||||
| PartialImplementationA.cs:3:12:3:18 | this access | PartialImplementationA.cs:3:12:3:18 | Partial |
|
||||
| PartialImplementationA.cs:3:27:3:29 | {...} | PartialImplementationA.cs:3:12:3:18 | Partial |
|
||||
| PartialImplementationB.cs:3:16:3:16 | access to field F | PartialImplementationA.cs:1:15:1:21 | <object initializer> |
|
||||
| PartialImplementationB.cs:3:16:3:16 | this access | PartialImplementationA.cs:1:15:1:21 | <object initializer> |
|
||||
| PartialImplementationB.cs:3:16:3:20 | ... = ... | PartialImplementationA.cs:1:15:1:21 | <object initializer> |
|
||||
| PartialImplementationB.cs:3:20:3:20 | 0 | PartialImplementationA.cs:1:15:1:21 | <object initializer> |
|
||||
@@ -3824,6 +3958,7 @@ nodeEnclosing
|
||||
| cflow.cs:127:62:127:64 | exit set_Prop | cflow.cs:127:62:127:64 | set_Prop |
|
||||
| cflow.cs:127:62:127:64 | exit set_Prop (normal) | cflow.cs:127:62:127:64 | set_Prop |
|
||||
| cflow.cs:127:66:127:83 | {...} | cflow.cs:127:62:127:64 | set_Prop |
|
||||
| cflow.cs:127:68:127:72 | access to field Field | cflow.cs:127:62:127:64 | set_Prop |
|
||||
| cflow.cs:127:68:127:72 | this access | cflow.cs:127:62:127:64 | set_Prop |
|
||||
| cflow.cs:127:68:127:80 | ... = ... | cflow.cs:127:62:127:64 | set_Prop |
|
||||
| cflow.cs:127:68:127:81 | ...; | cflow.cs:127:62:127:64 | set_Prop |
|
||||
@@ -3835,6 +3970,7 @@ nodeEnclosing
|
||||
| cflow.cs:129:5:129:15 | exit ControlFlow (normal) | cflow.cs:129:5:129:15 | ControlFlow |
|
||||
| cflow.cs:129:5:129:15 | this access | cflow.cs:129:5:129:15 | ControlFlow |
|
||||
| cflow.cs:130:5:132:5 | {...} | cflow.cs:129:5:129:15 | ControlFlow |
|
||||
| cflow.cs:131:9:131:13 | access to field Field | cflow.cs:129:5:129:15 | ControlFlow |
|
||||
| cflow.cs:131:9:131:13 | this access | cflow.cs:129:5:129:15 | ControlFlow |
|
||||
| cflow.cs:131:9:131:17 | ... = ... | cflow.cs:129:5:129:15 | ControlFlow |
|
||||
| cflow.cs:131:9:131:18 | ...; | cflow.cs:129:5:129:15 | ControlFlow |
|
||||
@@ -4068,6 +4204,7 @@ nodeEnclosing
|
||||
| cflow.cs:210:9:221:36 | do ... while (...); | cflow.cs:208:10:208:11 | Do |
|
||||
| cflow.cs:211:9:221:9 | {...} | cflow.cs:208:10:208:11 | Do |
|
||||
| cflow.cs:212:13:212:17 | access to field Field | cflow.cs:208:10:208:11 | Do |
|
||||
| cflow.cs:212:13:212:17 | access to field Field | cflow.cs:208:10:208:11 | Do |
|
||||
| cflow.cs:212:13:212:17 | this access | cflow.cs:208:10:208:11 | Do |
|
||||
| cflow.cs:212:13:212:17 | this access | cflow.cs:208:10:208:11 | Do |
|
||||
| cflow.cs:212:13:212:24 | ... + ... | cflow.cs:208:10:208:11 | Do |
|
||||
@@ -4106,6 +4243,7 @@ nodeEnclosing
|
||||
| cflow.cs:226:62:226:63 | 10 | cflow.cs:224:10:224:16 | Foreach |
|
||||
| cflow.cs:227:9:237:9 | {...} | cflow.cs:224:10:224:16 | Foreach |
|
||||
| cflow.cs:228:13:228:17 | access to field Field | cflow.cs:224:10:224:16 | Foreach |
|
||||
| cflow.cs:228:13:228:17 | access to field Field | cflow.cs:224:10:224:16 | Foreach |
|
||||
| cflow.cs:228:13:228:17 | this access | cflow.cs:224:10:224:16 | Foreach |
|
||||
| cflow.cs:228:13:228:17 | this access | cflow.cs:224:10:224:16 | Foreach |
|
||||
| cflow.cs:228:13:228:22 | ... + ... | cflow.cs:224:10:224:16 | Foreach |
|
||||
@@ -4445,6 +4583,9 @@ blockEnclosing
|
||||
| Assignments.cs:3:10:3:10 | enter M | Assignments.cs:3:10:3:10 | M |
|
||||
| Assignments.cs:14:18:14:35 | enter (...) => ... | Assignments.cs:14:18:14:35 | (...) => ... |
|
||||
| Assignments.cs:17:40:17:40 | enter + | Assignments.cs:17:40:17:40 | + |
|
||||
| Assignments.cs:27:10:27:23 | enter SetParamSingle | Assignments.cs:27:10:27:23 | SetParamSingle |
|
||||
| Assignments.cs:32:10:32:22 | enter SetParamMulti | Assignments.cs:32:10:32:22 | SetParamMulti |
|
||||
| Assignments.cs:38:10:38:11 | enter M2 | Assignments.cs:38:10:38:11 | M2 |
|
||||
| BreakInTry.cs:1:7:1:16 | enter BreakInTry | BreakInTry.cs:1:7:1:16 | BreakInTry |
|
||||
| BreakInTry.cs:3:10:3:11 | enter M1 | BreakInTry.cs:3:10:3:11 | M1 |
|
||||
| BreakInTry.cs:3:10:3:11 | exit M1 (normal) | BreakInTry.cs:3:10:3:11 | M1 |
|
||||
@@ -4522,7 +4663,30 @@ blockEnclosing
|
||||
| ConditionalAccess.cs:32:10:32:11 | enter M8 | ConditionalAccess.cs:32:10:32:11 | M8 |
|
||||
| ConditionalAccess.cs:32:10:32:11 | exit M8 (normal) | ConditionalAccess.cs:32:10:32:11 | M8 |
|
||||
| ConditionalAccess.cs:35:9:35:24 | call to method Out | ConditionalAccess.cs:32:10:32:11 | M8 |
|
||||
| ConditionalAccess.cs:41:26:41:38 | enter CommaJoinWith | ConditionalAccess.cs:41:26:41:38 | CommaJoinWith |
|
||||
| ConditionalAccess.cs:42:9:42:11 | enter get_Item | ConditionalAccess.cs:42:9:42:11 | get_Item |
|
||||
| ConditionalAccess.cs:43:9:43:11 | enter set_Item | ConditionalAccess.cs:43:9:43:11 | set_Item |
|
||||
| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:48:24:48:25 | 42 | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:49:26:49:32 | "Hello" | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:50:13:50:13 | 0 | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:51:9:51:16 | access to property Prop | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:51:30:51:31 | 84 | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:52:32:52:38 | "World" | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:46:10:46:11 | M9 |
|
||||
| ConditionalAccess.cs:60:26:60:38 | enter CommaJoinWith | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith |
|
||||
| Conditions.cs:1:7:1:16 | enter Conditions | Conditions.cs:1:7:1:16 | Conditions |
|
||||
| Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:3:10:3:19 | IncrOrDecr |
|
||||
| Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:3:10:3:19 | IncrOrDecr |
|
||||
|
||||
@@ -722,6 +722,42 @@
|
||||
| Assignments.cs:18:5:20:5 | {...} | Assignments.cs:18:5:20:5 | {...} |
|
||||
| Assignments.cs:19:9:19:17 | return ...; | Assignments.cs:19:16:19:16 | access to parameter x |
|
||||
| Assignments.cs:19:16:19:16 | access to parameter x | Assignments.cs:19:16:19:16 | access to parameter x |
|
||||
| Assignments.cs:28:5:30:5 | {...} | Assignments.cs:28:5:30:5 | {...} |
|
||||
| Assignments.cs:29:9:29:14 | ... = ... | Assignments.cs:29:13:29:14 | 42 |
|
||||
| Assignments.cs:29:9:29:15 | ...; | Assignments.cs:29:9:29:15 | ...; |
|
||||
| Assignments.cs:29:13:29:14 | 42 | Assignments.cs:29:13:29:14 | 42 |
|
||||
| Assignments.cs:33:5:36:5 | {...} | Assignments.cs:33:5:36:5 | {...} |
|
||||
| Assignments.cs:34:9:34:14 | ... = ... | Assignments.cs:34:13:34:14 | 42 |
|
||||
| Assignments.cs:34:9:34:15 | ...; | Assignments.cs:34:9:34:15 | ...; |
|
||||
| Assignments.cs:34:13:34:14 | 42 | Assignments.cs:34:13:34:14 | 42 |
|
||||
| Assignments.cs:35:9:35:19 | ... = ... | Assignments.cs:35:13:35:19 | "Hello" |
|
||||
| Assignments.cs:35:9:35:20 | ...; | Assignments.cs:35:9:35:20 | ...; |
|
||||
| Assignments.cs:35:13:35:19 | "Hello" | Assignments.cs:35:13:35:19 | "Hello" |
|
||||
| Assignments.cs:39:5:45:5 | {...} | Assignments.cs:39:5:45:5 | {...} |
|
||||
| Assignments.cs:40:9:40:15 | ... ...; | Assignments.cs:40:9:40:15 | ... ...; |
|
||||
| Assignments.cs:40:13:40:14 | Int32 x1 | Assignments.cs:40:13:40:14 | Int32 x1 |
|
||||
| Assignments.cs:41:9:41:30 | call to method SetParamSingle | Assignments.cs:41:9:41:30 | this access |
|
||||
| Assignments.cs:41:9:41:30 | this access | Assignments.cs:41:9:41:30 | this access |
|
||||
| Assignments.cs:41:9:41:31 | ...; | Assignments.cs:41:9:41:31 | ...; |
|
||||
| Assignments.cs:42:9:42:36 | call to method SetParamSingle | Assignments.cs:42:9:42:36 | this access |
|
||||
| Assignments.cs:42:9:42:36 | this access | Assignments.cs:42:9:42:36 | this access |
|
||||
| Assignments.cs:42:9:42:37 | ...; | Assignments.cs:42:9:42:37 | ...; |
|
||||
| Assignments.cs:42:28:42:35 | access to field IntField | Assignments.cs:42:28:42:35 | this access |
|
||||
| Assignments.cs:42:28:42:35 | this access | Assignments.cs:42:28:42:35 | this access |
|
||||
| Assignments.cs:43:9:43:55 | call to method SetParamMulti | Assignments.cs:43:9:43:55 | this access |
|
||||
| Assignments.cs:43:9:43:55 | this access | Assignments.cs:43:9:43:55 | this access |
|
||||
| Assignments.cs:43:9:43:56 | ...; | Assignments.cs:43:9:43:56 | ...; |
|
||||
| Assignments.cs:43:34:43:37 | null | Assignments.cs:43:34:43:37 | null |
|
||||
| Assignments.cs:43:44:43:54 | access to field StringField | Assignments.cs:43:44:43:54 | this access |
|
||||
| Assignments.cs:43:44:43:54 | this access | Assignments.cs:43:44:43:54 | this access |
|
||||
| Assignments.cs:44:9:44:58 | call to method SetParamMulti | Assignments.cs:44:9:44:58 | this access |
|
||||
| Assignments.cs:44:9:44:58 | this access | Assignments.cs:44:9:44:58 | this access |
|
||||
| Assignments.cs:44:9:44:59 | ...; | Assignments.cs:44:9:44:59 | ...; |
|
||||
| Assignments.cs:44:27:44:34 | access to field IntField | Assignments.cs:44:27:44:34 | this access |
|
||||
| Assignments.cs:44:27:44:34 | this access | Assignments.cs:44:27:44:34 | this access |
|
||||
| Assignments.cs:44:37:44:40 | null | Assignments.cs:44:37:44:40 | null |
|
||||
| Assignments.cs:44:47:44:57 | access to field StringField | Assignments.cs:44:47:44:57 | this access |
|
||||
| Assignments.cs:44:47:44:57 | this access | Assignments.cs:44:47:44:57 | this access |
|
||||
| BreakInTry.cs:1:7:1:16 | call to constructor Object | BreakInTry.cs:1:7:1:16 | call to constructor Object |
|
||||
| BreakInTry.cs:1:7:1:16 | call to method <object initializer> | BreakInTry.cs:1:7:1:16 | this access |
|
||||
| BreakInTry.cs:1:7:1:16 | this access | BreakInTry.cs:1:7:1:16 | this access |
|
||||
@@ -896,11 +932,62 @@
|
||||
| ConditionalAccess.cs:35:9:35:12 | this access | ConditionalAccess.cs:35:9:35:12 | this access |
|
||||
| ConditionalAccess.cs:35:9:35:24 | call to method Out | ConditionalAccess.cs:35:9:35:12 | this access |
|
||||
| ConditionalAccess.cs:35:9:35:25 | ...; | ConditionalAccess.cs:35:9:35:25 | ...; |
|
||||
| ConditionalAccess.cs:41:70:41:71 | access to parameter s1 | ConditionalAccess.cs:41:70:41:71 | access to parameter s1 |
|
||||
| ConditionalAccess.cs:41:70:41:78 | ... + ... | ConditionalAccess.cs:41:70:41:71 | access to parameter s1 |
|
||||
| ConditionalAccess.cs:41:70:41:83 | ... + ... | ConditionalAccess.cs:41:70:41:71 | access to parameter s1 |
|
||||
| ConditionalAccess.cs:41:75:41:78 | ", " | ConditionalAccess.cs:41:75:41:78 | ", " |
|
||||
| ConditionalAccess.cs:41:82:41:83 | access to parameter s2 | ConditionalAccess.cs:41:82:41:83 | access to parameter s2 |
|
||||
| ConditionalAccess.cs:42:13:42:28 | {...} | ConditionalAccess.cs:42:13:42:28 | {...} |
|
||||
| ConditionalAccess.cs:42:15:42:26 | return ...; | ConditionalAccess.cs:42:22:42:25 | null |
|
||||
| ConditionalAccess.cs:42:22:42:25 | null | ConditionalAccess.cs:42:22:42:25 | null |
|
||||
| ConditionalAccess.cs:43:13:43:15 | {...} | ConditionalAccess.cs:43:13:43:15 | {...} |
|
||||
| ConditionalAccess.cs:47:5:55:5 | {...} | ConditionalAccess.cs:47:5:55:5 | {...} |
|
||||
| ConditionalAccess.cs:48:9:48:10 | access to parameter ca | ConditionalAccess.cs:48:9:48:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:48:9:48:20 | access to field IntField | ConditionalAccess.cs:48:9:48:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:48:9:48:26 | ...; | ConditionalAccess.cs:48:9:48:26 | ...; |
|
||||
| ConditionalAccess.cs:48:12:48:25 | ... = ... | ConditionalAccess.cs:48:9:48:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:48:24:48:25 | 42 | ConditionalAccess.cs:48:24:48:25 | 42 |
|
||||
| ConditionalAccess.cs:49:9:49:10 | access to parameter ca | ConditionalAccess.cs:49:9:49:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:49:9:49:22 | access to property StringProp | ConditionalAccess.cs:49:9:49:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:49:9:49:33 | ...; |
|
||||
| ConditionalAccess.cs:49:12:49:32 | ... = ... | ConditionalAccess.cs:49:9:49:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:49:26:49:32 | "Hello" | ConditionalAccess.cs:49:26:49:32 | "Hello" |
|
||||
| ConditionalAccess.cs:50:9:50:10 | access to parameter ca | ConditionalAccess.cs:50:9:50:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:50:9:50:14 | access to indexer | ConditionalAccess.cs:50:9:50:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:50:9:50:24 | ...; |
|
||||
| ConditionalAccess.cs:50:12:50:23 | ... = ... | ConditionalAccess.cs:50:9:50:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:50:13:50:13 | 0 | ConditionalAccess.cs:50:13:50:13 | 0 |
|
||||
| ConditionalAccess.cs:50:18:50:23 | "Set0" | ConditionalAccess.cs:50:18:50:23 | "Set0" |
|
||||
| ConditionalAccess.cs:51:9:51:10 | access to parameter ca | ConditionalAccess.cs:51:9:51:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:51:9:51:16 | access to property Prop | ConditionalAccess.cs:51:9:51:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:51:9:51:26 | access to field IntField | ConditionalAccess.cs:51:9:51:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:51:9:51:32 | ...; |
|
||||
| ConditionalAccess.cs:51:18:51:31 | ... = ... | ConditionalAccess.cs:51:9:51:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:51:30:51:31 | 84 | ConditionalAccess.cs:51:30:51:31 | 84 |
|
||||
| ConditionalAccess.cs:52:9:52:10 | access to parameter ca | ConditionalAccess.cs:52:9:52:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:52:9:52:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:52:9:52:28 | access to property StringProp | ConditionalAccess.cs:52:9:52:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:9:52:39 | ...; |
|
||||
| ConditionalAccess.cs:52:18:52:38 | ... = ... | ConditionalAccess.cs:52:9:52:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:52:32:52:38 | "World" | ConditionalAccess.cs:52:32:52:38 | "World" |
|
||||
| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:9:53:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:9:53:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:9:53:26 | ...; |
|
||||
| ConditionalAccess.cs:53:12:53:25 | ... - ... | ConditionalAccess.cs:53:9:53:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:53:12:53:25 | ... -= ... | ConditionalAccess.cs:53:9:53:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:53:12:53:25 | ... = ... | ConditionalAccess.cs:53:9:53:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:53:25:53:25 | 1 |
|
||||
| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:9:54:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:9:54:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:9:54:30 | ...; |
|
||||
| ConditionalAccess.cs:54:12:54:29 | ... + ... | ConditionalAccess.cs:54:9:54:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:54:12:54:29 | ... += ... | ConditionalAccess.cs:54:9:54:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:54:12:54:29 | ... = ... | ConditionalAccess.cs:54:9:54:10 | access to parameter ca |
|
||||
| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:54:27:54:29 | "!" |
|
||||
| ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 |
|
||||
| ConditionalAccess.cs:60:70:60:78 | ... + ... | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 |
|
||||
| ConditionalAccess.cs:60:70:60:83 | ... + ... | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 |
|
||||
| ConditionalAccess.cs:60:75:60:78 | ", " | ConditionalAccess.cs:60:75:60:78 | ", " |
|
||||
| ConditionalAccess.cs:60:82:60:83 | access to parameter s2 | ConditionalAccess.cs:60:82:60:83 | access to parameter s2 |
|
||||
| Conditions.cs:1:7:1:16 | call to constructor Object | Conditions.cs:1:7:1:16 | call to constructor Object |
|
||||
| Conditions.cs:1:7:1:16 | call to method <object initializer> | Conditions.cs:1:7:1:16 | this access |
|
||||
| Conditions.cs:1:7:1:16 | this access | Conditions.cs:1:7:1:16 | this access |
|
||||
|
||||
@@ -821,6 +821,42 @@
|
||||
| Assignments.cs:18:5:20:5 | {...} | Assignments.cs:19:9:19:17 | return ...; | return |
|
||||
| Assignments.cs:19:9:19:17 | return ...; | Assignments.cs:19:9:19:17 | return ...; | return |
|
||||
| Assignments.cs:19:16:19:16 | access to parameter x | Assignments.cs:19:16:19:16 | access to parameter x | normal |
|
||||
| Assignments.cs:28:5:30:5 | {...} | Assignments.cs:29:9:29:14 | ... = ... | normal |
|
||||
| Assignments.cs:29:9:29:14 | ... = ... | Assignments.cs:29:9:29:14 | ... = ... | normal |
|
||||
| Assignments.cs:29:9:29:15 | ...; | Assignments.cs:29:9:29:14 | ... = ... | normal |
|
||||
| Assignments.cs:29:13:29:14 | 42 | Assignments.cs:29:13:29:14 | 42 | normal |
|
||||
| Assignments.cs:33:5:36:5 | {...} | Assignments.cs:35:9:35:19 | ... = ... | normal |
|
||||
| Assignments.cs:34:9:34:14 | ... = ... | Assignments.cs:34:9:34:14 | ... = ... | normal |
|
||||
| Assignments.cs:34:9:34:15 | ...; | Assignments.cs:34:9:34:14 | ... = ... | normal |
|
||||
| Assignments.cs:34:13:34:14 | 42 | Assignments.cs:34:13:34:14 | 42 | normal |
|
||||
| Assignments.cs:35:9:35:19 | ... = ... | Assignments.cs:35:9:35:19 | ... = ... | normal |
|
||||
| Assignments.cs:35:9:35:20 | ...; | Assignments.cs:35:9:35:19 | ... = ... | normal |
|
||||
| Assignments.cs:35:13:35:19 | "Hello" | Assignments.cs:35:13:35:19 | "Hello" | normal |
|
||||
| Assignments.cs:39:5:45:5 | {...} | Assignments.cs:44:9:44:58 | call to method SetParamMulti | normal |
|
||||
| Assignments.cs:40:9:40:15 | ... ...; | Assignments.cs:40:13:40:14 | Int32 x1 | normal |
|
||||
| Assignments.cs:40:13:40:14 | Int32 x1 | Assignments.cs:40:13:40:14 | Int32 x1 | normal |
|
||||
| Assignments.cs:41:9:41:30 | call to method SetParamSingle | Assignments.cs:41:9:41:30 | call to method SetParamSingle | normal |
|
||||
| Assignments.cs:41:9:41:30 | this access | Assignments.cs:41:9:41:30 | this access | normal |
|
||||
| Assignments.cs:41:9:41:31 | ...; | Assignments.cs:41:9:41:30 | call to method SetParamSingle | normal |
|
||||
| Assignments.cs:42:9:42:36 | call to method SetParamSingle | Assignments.cs:42:9:42:36 | call to method SetParamSingle | normal |
|
||||
| Assignments.cs:42:9:42:36 | this access | Assignments.cs:42:9:42:36 | this access | normal |
|
||||
| Assignments.cs:42:9:42:37 | ...; | Assignments.cs:42:9:42:36 | call to method SetParamSingle | normal |
|
||||
| Assignments.cs:42:28:42:35 | access to field IntField | Assignments.cs:42:28:42:35 | access to field IntField | normal |
|
||||
| Assignments.cs:42:28:42:35 | this access | Assignments.cs:42:28:42:35 | this access | normal |
|
||||
| Assignments.cs:43:9:43:55 | call to method SetParamMulti | Assignments.cs:43:9:43:55 | call to method SetParamMulti | normal |
|
||||
| Assignments.cs:43:9:43:55 | this access | Assignments.cs:43:9:43:55 | this access | normal |
|
||||
| Assignments.cs:43:9:43:56 | ...; | Assignments.cs:43:9:43:55 | call to method SetParamMulti | normal |
|
||||
| Assignments.cs:43:34:43:37 | null | Assignments.cs:43:34:43:37 | null | normal |
|
||||
| Assignments.cs:43:44:43:54 | access to field StringField | Assignments.cs:43:44:43:54 | access to field StringField | normal |
|
||||
| Assignments.cs:43:44:43:54 | this access | Assignments.cs:43:44:43:54 | this access | normal |
|
||||
| Assignments.cs:44:9:44:58 | call to method SetParamMulti | Assignments.cs:44:9:44:58 | call to method SetParamMulti | normal |
|
||||
| Assignments.cs:44:9:44:58 | this access | Assignments.cs:44:9:44:58 | this access | normal |
|
||||
| Assignments.cs:44:9:44:59 | ...; | Assignments.cs:44:9:44:58 | call to method SetParamMulti | normal |
|
||||
| Assignments.cs:44:27:44:34 | access to field IntField | Assignments.cs:44:27:44:34 | access to field IntField | normal |
|
||||
| Assignments.cs:44:27:44:34 | this access | Assignments.cs:44:27:44:34 | this access | normal |
|
||||
| Assignments.cs:44:37:44:40 | null | Assignments.cs:44:37:44:40 | null | normal |
|
||||
| Assignments.cs:44:47:44:57 | access to field StringField | Assignments.cs:44:47:44:57 | access to field StringField | normal |
|
||||
| Assignments.cs:44:47:44:57 | this access | Assignments.cs:44:47:44:57 | this access | normal |
|
||||
| BreakInTry.cs:1:7:1:16 | call to constructor Object | BreakInTry.cs:1:7:1:16 | call to constructor Object | normal |
|
||||
| BreakInTry.cs:1:7:1:16 | call to method <object initializer> | BreakInTry.cs:1:7:1:16 | call to method <object initializer> | normal |
|
||||
| BreakInTry.cs:1:7:1:16 | this access | BreakInTry.cs:1:7:1:16 | this access | normal |
|
||||
@@ -1080,11 +1116,107 @@
|
||||
| ConditionalAccess.cs:35:9:35:24 | call to method Out | ConditionalAccess.cs:35:9:35:24 | call to method Out | normal |
|
||||
| ConditionalAccess.cs:35:9:35:25 | ...; | ConditionalAccess.cs:35:9:35:12 | access to property Prop | null |
|
||||
| ConditionalAccess.cs:35:9:35:25 | ...; | ConditionalAccess.cs:35:9:35:24 | call to method Out | normal |
|
||||
| ConditionalAccess.cs:41:70:41:71 | access to parameter s1 | ConditionalAccess.cs:41:70:41:71 | access to parameter s1 | normal |
|
||||
| ConditionalAccess.cs:41:70:41:78 | ... + ... | ConditionalAccess.cs:41:70:41:78 | ... + ... | normal |
|
||||
| ConditionalAccess.cs:41:70:41:83 | ... + ... | ConditionalAccess.cs:41:70:41:83 | ... + ... | normal |
|
||||
| ConditionalAccess.cs:41:75:41:78 | ", " | ConditionalAccess.cs:41:75:41:78 | ", " | normal |
|
||||
| ConditionalAccess.cs:41:82:41:83 | access to parameter s2 | ConditionalAccess.cs:41:82:41:83 | access to parameter s2 | normal |
|
||||
| ConditionalAccess.cs:42:13:42:28 | {...} | ConditionalAccess.cs:42:15:42:26 | return ...; | return |
|
||||
| ConditionalAccess.cs:42:15:42:26 | return ...; | ConditionalAccess.cs:42:15:42:26 | return ...; | return |
|
||||
| ConditionalAccess.cs:42:22:42:25 | null | ConditionalAccess.cs:42:22:42:25 | null | normal |
|
||||
| ConditionalAccess.cs:43:13:43:15 | {...} | ConditionalAccess.cs:43:13:43:15 | {...} | normal |
|
||||
| ConditionalAccess.cs:47:5:55:5 | {...} | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:47:5:55:5 | {...} | ConditionalAccess.cs:54:12:54:29 | ... = ... | normal |
|
||||
| ConditionalAccess.cs:48:9:48:10 | access to parameter ca | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | non-null |
|
||||
| ConditionalAccess.cs:48:9:48:10 | access to parameter ca | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:48:9:48:20 | access to field IntField | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | non-null |
|
||||
| ConditionalAccess.cs:48:9:48:20 | access to field IntField | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:48:9:48:26 | ...; | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:48:9:48:26 | ...; | ConditionalAccess.cs:48:12:48:25 | ... = ... | normal |
|
||||
| ConditionalAccess.cs:48:12:48:25 | ... = ... | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:48:12:48:25 | ... = ... | ConditionalAccess.cs:48:12:48:25 | ... = ... | normal |
|
||||
| ConditionalAccess.cs:48:24:48:25 | 42 | ConditionalAccess.cs:48:24:48:25 | 42 | normal |
|
||||
| ConditionalAccess.cs:49:9:49:10 | access to parameter ca | ConditionalAccess.cs:49:9:49:10 | access to parameter ca | non-null |
|
||||
| ConditionalAccess.cs:49:9:49:10 | access to parameter ca | ConditionalAccess.cs:49:9:49:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:49:9:49:22 | access to property StringProp | ConditionalAccess.cs:49:9:49:10 | access to parameter ca | non-null |
|
||||
| ConditionalAccess.cs:49:9:49:22 | access to property StringProp | ConditionalAccess.cs:49:9:49:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:49:9:49:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:49:12:49:32 | ... = ... | normal |
|
||||
| ConditionalAccess.cs:49:12:49:32 | ... = ... | ConditionalAccess.cs:49:9:49:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:49:12:49:32 | ... = ... | ConditionalAccess.cs:49:12:49:32 | ... = ... | normal |
|
||||
| ConditionalAccess.cs:49:26:49:32 | "Hello" | ConditionalAccess.cs:49:26:49:32 | "Hello" | normal |
|
||||
| ConditionalAccess.cs:50:9:50:10 | access to parameter ca | ConditionalAccess.cs:50:9:50:10 | access to parameter ca | non-null |
|
||||
| ConditionalAccess.cs:50:9:50:10 | access to parameter ca | ConditionalAccess.cs:50:9:50:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:50:9:50:14 | access to indexer | ConditionalAccess.cs:50:9:50:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:50:9:50:14 | access to indexer | ConditionalAccess.cs:50:13:50:13 | 0 | normal |
|
||||
| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:50:9:50:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:50:12:50:23 | ... = ... | normal |
|
||||
| ConditionalAccess.cs:50:12:50:23 | ... = ... | ConditionalAccess.cs:50:9:50:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:50:12:50:23 | ... = ... | ConditionalAccess.cs:50:12:50:23 | ... = ... | normal |
|
||||
| ConditionalAccess.cs:50:13:50:13 | 0 | ConditionalAccess.cs:50:13:50:13 | 0 | normal |
|
||||
| ConditionalAccess.cs:50:18:50:23 | "Set0" | ConditionalAccess.cs:50:18:50:23 | "Set0" | normal |
|
||||
| ConditionalAccess.cs:51:9:51:10 | access to parameter ca | ConditionalAccess.cs:51:9:51:10 | access to parameter ca | non-null |
|
||||
| ConditionalAccess.cs:51:9:51:10 | access to parameter ca | ConditionalAccess.cs:51:9:51:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:51:9:51:16 | access to property Prop | ConditionalAccess.cs:51:9:51:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:51:9:51:16 | access to property Prop | ConditionalAccess.cs:51:9:51:16 | access to property Prop | non-null |
|
||||
| ConditionalAccess.cs:51:9:51:16 | access to property Prop | ConditionalAccess.cs:51:9:51:16 | access to property Prop | null |
|
||||
| ConditionalAccess.cs:51:9:51:26 | access to field IntField | ConditionalAccess.cs:51:9:51:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:51:9:51:26 | access to field IntField | ConditionalAccess.cs:51:9:51:16 | access to property Prop | non-null |
|
||||
| ConditionalAccess.cs:51:9:51:26 | access to field IntField | ConditionalAccess.cs:51:9:51:16 | access to property Prop | null |
|
||||
| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:51:9:51:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:51:9:51:16 | access to property Prop | null |
|
||||
| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:51:18:51:31 | ... = ... | normal |
|
||||
| ConditionalAccess.cs:51:18:51:31 | ... = ... | ConditionalAccess.cs:51:9:51:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:51:18:51:31 | ... = ... | ConditionalAccess.cs:51:9:51:16 | access to property Prop | null |
|
||||
| ConditionalAccess.cs:51:18:51:31 | ... = ... | ConditionalAccess.cs:51:18:51:31 | ... = ... | normal |
|
||||
| ConditionalAccess.cs:51:30:51:31 | 84 | ConditionalAccess.cs:51:30:51:31 | 84 | normal |
|
||||
| ConditionalAccess.cs:52:9:52:10 | access to parameter ca | ConditionalAccess.cs:52:9:52:10 | access to parameter ca | non-null |
|
||||
| ConditionalAccess.cs:52:9:52:10 | access to parameter ca | ConditionalAccess.cs:52:9:52:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:52:9:52:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:52:9:52:16 | access to property Prop | non-null |
|
||||
| ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:52:9:52:16 | access to property Prop | null |
|
||||
| ConditionalAccess.cs:52:9:52:28 | access to property StringProp | ConditionalAccess.cs:52:9:52:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:52:9:52:28 | access to property StringProp | ConditionalAccess.cs:52:9:52:16 | access to property Prop | non-null |
|
||||
| ConditionalAccess.cs:52:9:52:28 | access to property StringProp | ConditionalAccess.cs:52:9:52:16 | access to property Prop | null |
|
||||
| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:9:52:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:9:52:16 | access to property Prop | null |
|
||||
| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:18:52:38 | ... = ... | normal |
|
||||
| ConditionalAccess.cs:52:18:52:38 | ... = ... | ConditionalAccess.cs:52:9:52:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:52:18:52:38 | ... = ... | ConditionalAccess.cs:52:9:52:16 | access to property Prop | null |
|
||||
| ConditionalAccess.cs:52:18:52:38 | ... = ... | ConditionalAccess.cs:52:18:52:38 | ... = ... | normal |
|
||||
| ConditionalAccess.cs:52:32:52:38 | "World" | ConditionalAccess.cs:52:32:52:38 | "World" | normal |
|
||||
| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | non-null |
|
||||
| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | non-null |
|
||||
| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | non-null |
|
||||
| ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:9:53:20 | access to field IntField | normal |
|
||||
| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:12:53:25 | ... = ... | normal |
|
||||
| ConditionalAccess.cs:53:12:53:25 | ... - ... | ConditionalAccess.cs:53:12:53:25 | ... - ... | normal |
|
||||
| ConditionalAccess.cs:53:12:53:25 | ... -= ... | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:53:12:53:25 | ... -= ... | ConditionalAccess.cs:53:12:53:25 | ... = ... | normal |
|
||||
| ConditionalAccess.cs:53:12:53:25 | ... = ... | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:53:12:53:25 | ... = ... | ConditionalAccess.cs:53:12:53:25 | ... = ... | normal |
|
||||
| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:53:25:53:25 | 1 | normal |
|
||||
| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | non-null |
|
||||
| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | non-null |
|
||||
| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | non-null |
|
||||
| ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | normal |
|
||||
| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:12:54:29 | ... = ... | normal |
|
||||
| ConditionalAccess.cs:54:12:54:29 | ... + ... | ConditionalAccess.cs:54:12:54:29 | ... + ... | normal |
|
||||
| ConditionalAccess.cs:54:12:54:29 | ... += ... | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:54:12:54:29 | ... += ... | ConditionalAccess.cs:54:12:54:29 | ... = ... | normal |
|
||||
| ConditionalAccess.cs:54:12:54:29 | ... = ... | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | null |
|
||||
| ConditionalAccess.cs:54:12:54:29 | ... = ... | ConditionalAccess.cs:54:12:54:29 | ... = ... | normal |
|
||||
| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:54:27:54:29 | "!" | normal |
|
||||
| ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | normal |
|
||||
| ConditionalAccess.cs:60:70:60:78 | ... + ... | ConditionalAccess.cs:60:70:60:78 | ... + ... | normal |
|
||||
| ConditionalAccess.cs:60:70:60:83 | ... + ... | ConditionalAccess.cs:60:70:60:83 | ... + ... | normal |
|
||||
| ConditionalAccess.cs:60:75:60:78 | ", " | ConditionalAccess.cs:60:75:60:78 | ", " | normal |
|
||||
| ConditionalAccess.cs:60:82:60:83 | access to parameter s2 | ConditionalAccess.cs:60:82:60:83 | access to parameter s2 | normal |
|
||||
| Conditions.cs:1:7:1:16 | call to constructor Object | Conditions.cs:1:7:1:16 | call to constructor Object | normal |
|
||||
| Conditions.cs:1:7:1:16 | call to method <object initializer> | Conditions.cs:1:7:1:16 | call to method <object initializer> | normal |
|
||||
| Conditions.cs:1:7:1:16 | this access | Conditions.cs:1:7:1:16 | this access | normal |
|
||||
|
||||
@@ -20,10 +20,11 @@
|
||||
| AccessorCalls.cs:10:10:10:11 | exit M1 (normal) | AccessorCalls.cs:10:10:10:11 | exit M1 | |
|
||||
| AccessorCalls.cs:11:5:17:5 | {...} | AccessorCalls.cs:12:9:12:32 | ...; | |
|
||||
| AccessorCalls.cs:12:9:12:12 | this access | AccessorCalls.cs:12:22:12:25 | this access | |
|
||||
| AccessorCalls.cs:12:9:12:18 | access to field Field | AccessorCalls.cs:12:9:12:31 | ... = ... | |
|
||||
| AccessorCalls.cs:12:9:12:31 | ... = ... | AccessorCalls.cs:13:9:13:30 | ...; | |
|
||||
| AccessorCalls.cs:12:9:12:32 | ...; | AccessorCalls.cs:12:9:12:12 | this access | |
|
||||
| AccessorCalls.cs:12:22:12:25 | this access | AccessorCalls.cs:12:22:12:31 | access to field Field | |
|
||||
| AccessorCalls.cs:12:22:12:31 | access to field Field | AccessorCalls.cs:12:9:12:31 | ... = ... | |
|
||||
| AccessorCalls.cs:12:22:12:31 | access to field Field | AccessorCalls.cs:12:9:12:18 | access to field Field | |
|
||||
| AccessorCalls.cs:13:9:13:12 | this access | AccessorCalls.cs:13:21:13:24 | this access | |
|
||||
| AccessorCalls.cs:13:9:13:17 | access to property Prop | AccessorCalls.cs:13:9:13:29 | ... = ... | |
|
||||
| AccessorCalls.cs:13:9:13:29 | ... = ... | AccessorCalls.cs:14:9:14:26 | ...; | |
|
||||
@@ -53,11 +54,12 @@
|
||||
| AccessorCalls.cs:20:5:26:5 | {...} | AccessorCalls.cs:21:9:21:36 | ...; | |
|
||||
| AccessorCalls.cs:21:9:21:12 | this access | AccessorCalls.cs:21:9:21:14 | access to field x | |
|
||||
| AccessorCalls.cs:21:9:21:14 | access to field x | AccessorCalls.cs:21:24:21:27 | this access | |
|
||||
| AccessorCalls.cs:21:9:21:20 | access to field Field | AccessorCalls.cs:21:9:21:35 | ... = ... | |
|
||||
| AccessorCalls.cs:21:9:21:35 | ... = ... | AccessorCalls.cs:22:9:22:34 | ...; | |
|
||||
| AccessorCalls.cs:21:9:21:36 | ...; | AccessorCalls.cs:21:9:21:12 | this access | |
|
||||
| AccessorCalls.cs:21:24:21:27 | this access | AccessorCalls.cs:21:24:21:29 | access to field x | |
|
||||
| AccessorCalls.cs:21:24:21:29 | access to field x | AccessorCalls.cs:21:24:21:35 | access to field Field | |
|
||||
| AccessorCalls.cs:21:24:21:35 | access to field Field | AccessorCalls.cs:21:9:21:35 | ... = ... | |
|
||||
| AccessorCalls.cs:21:24:21:35 | access to field Field | AccessorCalls.cs:21:9:21:20 | access to field Field | |
|
||||
| AccessorCalls.cs:22:9:22:12 | this access | AccessorCalls.cs:22:9:22:14 | access to field x | |
|
||||
| AccessorCalls.cs:22:9:22:14 | access to field x | AccessorCalls.cs:22:23:22:26 | this access | |
|
||||
| AccessorCalls.cs:22:9:22:19 | access to property Prop | AccessorCalls.cs:22:9:22:33 | ... = ... | |
|
||||
@@ -128,8 +130,9 @@
|
||||
| AccessorCalls.cs:43:5:47:5 | {...} | AccessorCalls.cs:44:9:44:33 | ...; | |
|
||||
| AccessorCalls.cs:44:9:44:12 | this access | AccessorCalls.cs:44:9:44:12 | this access | |
|
||||
| AccessorCalls.cs:44:9:44:12 | this access | AccessorCalls.cs:44:9:44:18 | access to field Field | |
|
||||
| AccessorCalls.cs:44:9:44:18 | access to field Field | AccessorCalls.cs:44:9:44:32 | ... = ... | |
|
||||
| AccessorCalls.cs:44:9:44:18 | access to field Field | AccessorCalls.cs:44:23:44:26 | this access | |
|
||||
| AccessorCalls.cs:44:9:44:32 | ... + ... | AccessorCalls.cs:44:9:44:32 | ... = ... | |
|
||||
| AccessorCalls.cs:44:9:44:32 | ... + ... | AccessorCalls.cs:44:9:44:18 | access to field Field | |
|
||||
| AccessorCalls.cs:44:9:44:32 | ... = ... | AccessorCalls.cs:45:9:45:31 | ...; | |
|
||||
| AccessorCalls.cs:44:9:44:33 | ...; | AccessorCalls.cs:44:9:44:12 | this access | |
|
||||
| AccessorCalls.cs:44:23:44:26 | this access | AccessorCalls.cs:44:23:44:32 | access to field Field | |
|
||||
@@ -162,8 +165,9 @@
|
||||
| AccessorCalls.cs:51:9:51:12 | this access | AccessorCalls.cs:51:9:51:14 | access to field x | |
|
||||
| AccessorCalls.cs:51:9:51:14 | access to field x | AccessorCalls.cs:51:9:51:12 | this access | |
|
||||
| AccessorCalls.cs:51:9:51:14 | access to field x | AccessorCalls.cs:51:9:51:20 | access to field Field | |
|
||||
| AccessorCalls.cs:51:9:51:20 | access to field Field | AccessorCalls.cs:51:9:51:36 | ... = ... | |
|
||||
| AccessorCalls.cs:51:9:51:20 | access to field Field | AccessorCalls.cs:51:25:51:28 | this access | |
|
||||
| AccessorCalls.cs:51:9:51:36 | ... + ... | AccessorCalls.cs:51:9:51:36 | ... = ... | |
|
||||
| AccessorCalls.cs:51:9:51:36 | ... + ... | AccessorCalls.cs:51:9:51:20 | access to field Field | |
|
||||
| AccessorCalls.cs:51:9:51:36 | ... = ... | AccessorCalls.cs:52:9:52:35 | ...; | |
|
||||
| AccessorCalls.cs:51:9:51:37 | ...; | AccessorCalls.cs:51:9:51:12 | this access | |
|
||||
| AccessorCalls.cs:51:25:51:28 | this access | AccessorCalls.cs:51:25:51:30 | access to field x | |
|
||||
@@ -203,13 +207,14 @@
|
||||
| AccessorCalls.cs:58:9:58:85 | ... = ... | AccessorCalls.cs:56:10:56:11 | exit M7 (normal) | |
|
||||
| AccessorCalls.cs:58:9:58:86 | ...; | AccessorCalls.cs:58:10:58:13 | this access | |
|
||||
| AccessorCalls.cs:58:10:58:13 | this access | AccessorCalls.cs:58:22:58:25 | this access | |
|
||||
| AccessorCalls.cs:58:10:58:19 | access to field Field | AccessorCalls.cs:58:22:58:30 | access to property Prop | |
|
||||
| AccessorCalls.cs:58:22:58:25 | this access | AccessorCalls.cs:58:37:58:40 | this access | |
|
||||
| AccessorCalls.cs:58:22:58:30 | access to property Prop | AccessorCalls.cs:58:37:58:43 | access to indexer | |
|
||||
| AccessorCalls.cs:58:33:58:44 | (..., ...) | AccessorCalls.cs:58:9:58:45 | (..., ...) | |
|
||||
| AccessorCalls.cs:58:37:58:40 | this access | AccessorCalls.cs:58:42:58:42 | 0 | |
|
||||
| AccessorCalls.cs:58:37:58:43 | access to indexer | AccessorCalls.cs:58:9:58:85 | ... = ... | |
|
||||
| AccessorCalls.cs:58:42:58:42 | 0 | AccessorCalls.cs:58:33:58:44 | (..., ...) | |
|
||||
| AccessorCalls.cs:58:49:58:85 | (..., ...) | AccessorCalls.cs:58:22:58:30 | access to property Prop | |
|
||||
| AccessorCalls.cs:58:49:58:85 | (..., ...) | AccessorCalls.cs:58:10:58:19 | access to field Field | |
|
||||
| AccessorCalls.cs:58:50:58:53 | this access | AccessorCalls.cs:58:50:58:59 | access to field Field | |
|
||||
| AccessorCalls.cs:58:50:58:59 | access to field Field | AccessorCalls.cs:58:62:58:65 | this access | |
|
||||
| AccessorCalls.cs:58:62:58:65 | this access | AccessorCalls.cs:58:62:58:70 | access to property Prop | |
|
||||
@@ -227,6 +232,7 @@
|
||||
| AccessorCalls.cs:63:9:63:98 | ...; | AccessorCalls.cs:63:10:63:13 | this access | |
|
||||
| AccessorCalls.cs:63:10:63:13 | this access | AccessorCalls.cs:63:10:63:15 | access to field x | |
|
||||
| AccessorCalls.cs:63:10:63:15 | access to field x | AccessorCalls.cs:63:24:63:27 | this access | |
|
||||
| AccessorCalls.cs:63:10:63:21 | access to field Field | AccessorCalls.cs:63:24:63:34 | access to property Prop | |
|
||||
| AccessorCalls.cs:63:24:63:27 | this access | AccessorCalls.cs:63:24:63:29 | access to field x | |
|
||||
| AccessorCalls.cs:63:24:63:29 | access to field x | AccessorCalls.cs:63:41:63:44 | this access | |
|
||||
| AccessorCalls.cs:63:24:63:34 | access to property Prop | AccessorCalls.cs:63:41:63:49 | access to indexer | |
|
||||
@@ -235,7 +241,7 @@
|
||||
| AccessorCalls.cs:63:41:63:46 | access to field x | AccessorCalls.cs:63:48:63:48 | 0 | |
|
||||
| AccessorCalls.cs:63:41:63:49 | access to indexer | AccessorCalls.cs:63:9:63:97 | ... = ... | |
|
||||
| AccessorCalls.cs:63:48:63:48 | 0 | AccessorCalls.cs:63:37:63:50 | (..., ...) | |
|
||||
| AccessorCalls.cs:63:55:63:97 | (..., ...) | AccessorCalls.cs:63:24:63:34 | access to property Prop | |
|
||||
| AccessorCalls.cs:63:55:63:97 | (..., ...) | AccessorCalls.cs:63:10:63:21 | access to field Field | |
|
||||
| AccessorCalls.cs:63:56:63:59 | this access | AccessorCalls.cs:63:56:63:61 | access to field x | |
|
||||
| AccessorCalls.cs:63:56:63:61 | access to field x | AccessorCalls.cs:63:56:63:67 | access to field Field | |
|
||||
| AccessorCalls.cs:63:56:63:67 | access to field Field | AccessorCalls.cs:63:70:63:73 | this access | |
|
||||
@@ -847,6 +853,48 @@
|
||||
| Assignments.cs:18:5:20:5 | {...} | Assignments.cs:19:16:19:16 | access to parameter x | |
|
||||
| Assignments.cs:19:9:19:17 | return ...; | Assignments.cs:17:40:17:40 | exit + (normal) | return |
|
||||
| Assignments.cs:19:16:19:16 | access to parameter x | Assignments.cs:19:9:19:17 | return ...; | |
|
||||
| Assignments.cs:27:10:27:23 | enter SetParamSingle | Assignments.cs:28:5:30:5 | {...} | |
|
||||
| Assignments.cs:27:10:27:23 | exit SetParamSingle (normal) | Assignments.cs:27:10:27:23 | exit SetParamSingle | |
|
||||
| Assignments.cs:28:5:30:5 | {...} | Assignments.cs:29:9:29:15 | ...; | |
|
||||
| Assignments.cs:29:9:29:14 | ... = ... | Assignments.cs:27:10:27:23 | exit SetParamSingle (normal) | |
|
||||
| Assignments.cs:29:9:29:15 | ...; | Assignments.cs:29:13:29:14 | 42 | |
|
||||
| Assignments.cs:29:13:29:14 | 42 | Assignments.cs:29:9:29:14 | ... = ... | |
|
||||
| Assignments.cs:32:10:32:22 | enter SetParamMulti | Assignments.cs:33:5:36:5 | {...} | |
|
||||
| Assignments.cs:32:10:32:22 | exit SetParamMulti (normal) | Assignments.cs:32:10:32:22 | exit SetParamMulti | |
|
||||
| Assignments.cs:33:5:36:5 | {...} | Assignments.cs:34:9:34:15 | ...; | |
|
||||
| Assignments.cs:34:9:34:14 | ... = ... | Assignments.cs:35:9:35:20 | ...; | |
|
||||
| Assignments.cs:34:9:34:15 | ...; | Assignments.cs:34:13:34:14 | 42 | |
|
||||
| Assignments.cs:34:13:34:14 | 42 | Assignments.cs:34:9:34:14 | ... = ... | |
|
||||
| Assignments.cs:35:9:35:19 | ... = ... | Assignments.cs:32:10:32:22 | exit SetParamMulti (normal) | |
|
||||
| Assignments.cs:35:9:35:20 | ...; | Assignments.cs:35:13:35:19 | "Hello" | |
|
||||
| Assignments.cs:35:13:35:19 | "Hello" | Assignments.cs:35:9:35:19 | ... = ... | |
|
||||
| Assignments.cs:38:10:38:11 | enter M2 | Assignments.cs:39:5:45:5 | {...} | |
|
||||
| Assignments.cs:38:10:38:11 | exit M2 (normal) | Assignments.cs:38:10:38:11 | exit M2 | |
|
||||
| Assignments.cs:39:5:45:5 | {...} | Assignments.cs:40:9:40:15 | ... ...; | |
|
||||
| Assignments.cs:40:9:40:15 | ... ...; | Assignments.cs:40:13:40:14 | Int32 x1 | |
|
||||
| Assignments.cs:40:13:40:14 | Int32 x1 | Assignments.cs:41:9:41:31 | ...; | |
|
||||
| Assignments.cs:41:9:41:30 | call to method SetParamSingle | Assignments.cs:42:9:42:37 | ...; | |
|
||||
| Assignments.cs:41:9:41:30 | this access | Assignments.cs:41:9:41:30 | call to method SetParamSingle | |
|
||||
| Assignments.cs:41:9:41:31 | ...; | Assignments.cs:41:9:41:30 | this access | |
|
||||
| Assignments.cs:42:9:42:36 | call to method SetParamSingle | Assignments.cs:43:9:43:56 | ...; | |
|
||||
| Assignments.cs:42:9:42:36 | this access | Assignments.cs:42:28:42:35 | this access | |
|
||||
| Assignments.cs:42:9:42:37 | ...; | Assignments.cs:42:9:42:36 | this access | |
|
||||
| Assignments.cs:42:28:42:35 | access to field IntField | Assignments.cs:42:9:42:36 | call to method SetParamSingle | |
|
||||
| Assignments.cs:42:28:42:35 | this access | Assignments.cs:42:28:42:35 | access to field IntField | |
|
||||
| Assignments.cs:43:9:43:55 | call to method SetParamMulti | Assignments.cs:44:9:44:59 | ...; | |
|
||||
| Assignments.cs:43:9:43:55 | this access | Assignments.cs:43:34:43:37 | null | |
|
||||
| Assignments.cs:43:9:43:56 | ...; | Assignments.cs:43:9:43:55 | this access | |
|
||||
| Assignments.cs:43:34:43:37 | null | Assignments.cs:43:44:43:54 | this access | |
|
||||
| Assignments.cs:43:44:43:54 | access to field StringField | Assignments.cs:43:9:43:55 | call to method SetParamMulti | |
|
||||
| Assignments.cs:43:44:43:54 | this access | Assignments.cs:43:44:43:54 | access to field StringField | |
|
||||
| Assignments.cs:44:9:44:58 | call to method SetParamMulti | Assignments.cs:38:10:38:11 | exit M2 (normal) | |
|
||||
| Assignments.cs:44:9:44:58 | this access | Assignments.cs:44:27:44:34 | this access | |
|
||||
| Assignments.cs:44:9:44:59 | ...; | Assignments.cs:44:9:44:58 | this access | |
|
||||
| Assignments.cs:44:27:44:34 | access to field IntField | Assignments.cs:44:37:44:40 | null | |
|
||||
| Assignments.cs:44:27:44:34 | this access | Assignments.cs:44:27:44:34 | access to field IntField | |
|
||||
| Assignments.cs:44:37:44:40 | null | Assignments.cs:44:47:44:57 | this access | |
|
||||
| Assignments.cs:44:47:44:57 | access to field StringField | Assignments.cs:44:9:44:58 | call to method SetParamMulti | |
|
||||
| Assignments.cs:44:47:44:57 | this access | Assignments.cs:44:47:44:57 | access to field StringField | |
|
||||
| BreakInTry.cs:1:7:1:16 | call to constructor Object | BreakInTry.cs:1:7:1:16 | {...} | |
|
||||
| BreakInTry.cs:1:7:1:16 | call to method <object initializer> | BreakInTry.cs:1:7:1:16 | call to constructor Object | |
|
||||
| BreakInTry.cs:1:7:1:16 | enter BreakInTry | BreakInTry.cs:1:7:1:16 | this access | |
|
||||
@@ -1093,13 +1141,79 @@
|
||||
| ConditionalAccess.cs:35:9:35:12 | this access | ConditionalAccess.cs:35:9:35:12 | access to property Prop | |
|
||||
| ConditionalAccess.cs:35:9:35:24 | call to method Out | ConditionalAccess.cs:32:10:32:11 | exit M8 (normal) | |
|
||||
| ConditionalAccess.cs:35:9:35:25 | ...; | ConditionalAccess.cs:35:9:35:12 | this access | |
|
||||
| ConditionalAccess.cs:41:26:41:38 | enter CommaJoinWith | ConditionalAccess.cs:41:70:41:71 | access to parameter s1 | |
|
||||
| ConditionalAccess.cs:41:26:41:38 | exit CommaJoinWith (normal) | ConditionalAccess.cs:41:26:41:38 | exit CommaJoinWith | |
|
||||
| ConditionalAccess.cs:41:70:41:71 | access to parameter s1 | ConditionalAccess.cs:41:75:41:78 | ", " | |
|
||||
| ConditionalAccess.cs:41:70:41:78 | ... + ... | ConditionalAccess.cs:41:82:41:83 | access to parameter s2 | |
|
||||
| ConditionalAccess.cs:41:70:41:83 | ... + ... | ConditionalAccess.cs:41:26:41:38 | exit CommaJoinWith (normal) | |
|
||||
| ConditionalAccess.cs:41:75:41:78 | ", " | ConditionalAccess.cs:41:70:41:78 | ... + ... | |
|
||||
| ConditionalAccess.cs:41:82:41:83 | access to parameter s2 | ConditionalAccess.cs:41:70:41:83 | ... + ... | |
|
||||
| ConditionalAccess.cs:42:9:42:11 | enter get_Item | ConditionalAccess.cs:42:13:42:28 | {...} | |
|
||||
| ConditionalAccess.cs:42:9:42:11 | exit get_Item (normal) | ConditionalAccess.cs:42:9:42:11 | exit get_Item | |
|
||||
| ConditionalAccess.cs:42:13:42:28 | {...} | ConditionalAccess.cs:42:22:42:25 | null | |
|
||||
| ConditionalAccess.cs:42:15:42:26 | return ...; | ConditionalAccess.cs:42:9:42:11 | exit get_Item (normal) | return |
|
||||
| ConditionalAccess.cs:42:22:42:25 | null | ConditionalAccess.cs:42:15:42:26 | return ...; | |
|
||||
| ConditionalAccess.cs:43:9:43:11 | enter set_Item | ConditionalAccess.cs:43:13:43:15 | {...} | |
|
||||
| ConditionalAccess.cs:43:9:43:11 | exit set_Item (normal) | ConditionalAccess.cs:43:9:43:11 | exit set_Item | |
|
||||
| ConditionalAccess.cs:43:13:43:15 | {...} | ConditionalAccess.cs:43:9:43:11 | exit set_Item (normal) | |
|
||||
| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:47:5:55:5 | {...} | |
|
||||
| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:46:10:46:11 | exit M9 | |
|
||||
| ConditionalAccess.cs:47:5:55:5 | {...} | ConditionalAccess.cs:48:9:48:26 | ...; | |
|
||||
| ConditionalAccess.cs:48:9:48:10 | access to parameter ca | ConditionalAccess.cs:48:24:48:25 | 42 | non-null |
|
||||
| ConditionalAccess.cs:48:9:48:10 | access to parameter ca | ConditionalAccess.cs:49:9:49:33 | ...; | null |
|
||||
| ConditionalAccess.cs:48:9:48:20 | access to field IntField | ConditionalAccess.cs:48:12:48:25 | ... = ... | |
|
||||
| ConditionalAccess.cs:48:9:48:26 | ...; | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | |
|
||||
| ConditionalAccess.cs:48:12:48:25 | ... = ... | ConditionalAccess.cs:49:9:49:33 | ...; | |
|
||||
| ConditionalAccess.cs:48:24:48:25 | 42 | ConditionalAccess.cs:48:9:48:20 | access to field IntField | |
|
||||
| ConditionalAccess.cs:49:9:49:10 | access to parameter ca | ConditionalAccess.cs:49:26:49:32 | "Hello" | non-null |
|
||||
| ConditionalAccess.cs:49:9:49:10 | access to parameter ca | ConditionalAccess.cs:50:9:50:24 | ...; | null |
|
||||
| ConditionalAccess.cs:49:9:49:22 | access to property StringProp | ConditionalAccess.cs:49:12:49:32 | ... = ... | |
|
||||
| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:49:9:49:10 | access to parameter ca | |
|
||||
| ConditionalAccess.cs:49:12:49:32 | ... = ... | ConditionalAccess.cs:50:9:50:24 | ...; | |
|
||||
| ConditionalAccess.cs:49:26:49:32 | "Hello" | ConditionalAccess.cs:49:9:49:22 | access to property StringProp | |
|
||||
| ConditionalAccess.cs:50:9:50:10 | access to parameter ca | ConditionalAccess.cs:50:13:50:13 | 0 | non-null |
|
||||
| ConditionalAccess.cs:50:9:50:10 | access to parameter ca | ConditionalAccess.cs:51:9:51:32 | ...; | null |
|
||||
| ConditionalAccess.cs:50:9:50:14 | access to indexer | ConditionalAccess.cs:50:12:50:23 | ... = ... | |
|
||||
| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:50:9:50:10 | access to parameter ca | |
|
||||
| ConditionalAccess.cs:50:12:50:23 | ... = ... | ConditionalAccess.cs:51:9:51:32 | ...; | |
|
||||
| ConditionalAccess.cs:50:13:50:13 | 0 | ConditionalAccess.cs:50:18:50:23 | "Set0" | |
|
||||
| ConditionalAccess.cs:50:18:50:23 | "Set0" | ConditionalAccess.cs:50:9:50:14 | access to indexer | |
|
||||
| ConditionalAccess.cs:51:9:51:10 | access to parameter ca | ConditionalAccess.cs:51:9:51:16 | access to property Prop | non-null |
|
||||
| ConditionalAccess.cs:51:9:51:10 | access to parameter ca | ConditionalAccess.cs:52:9:52:39 | ...; | null |
|
||||
| ConditionalAccess.cs:51:9:51:16 | access to property Prop | ConditionalAccess.cs:51:30:51:31 | 84 | non-null |
|
||||
| ConditionalAccess.cs:51:9:51:16 | access to property Prop | ConditionalAccess.cs:52:9:52:39 | ...; | null |
|
||||
| ConditionalAccess.cs:51:9:51:26 | access to field IntField | ConditionalAccess.cs:51:18:51:31 | ... = ... | |
|
||||
| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:51:9:51:10 | access to parameter ca | |
|
||||
| ConditionalAccess.cs:51:18:51:31 | ... = ... | ConditionalAccess.cs:52:9:52:39 | ...; | |
|
||||
| ConditionalAccess.cs:51:30:51:31 | 84 | ConditionalAccess.cs:51:9:51:26 | access to field IntField | |
|
||||
| ConditionalAccess.cs:52:9:52:10 | access to parameter ca | ConditionalAccess.cs:52:9:52:16 | access to property Prop | non-null |
|
||||
| ConditionalAccess.cs:52:9:52:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:26 | ...; | null |
|
||||
| ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:52:32:52:38 | "World" | non-null |
|
||||
| ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:53:9:53:26 | ...; | null |
|
||||
| ConditionalAccess.cs:52:9:52:28 | access to property StringProp | ConditionalAccess.cs:52:18:52:38 | ... = ... | |
|
||||
| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:9:52:10 | access to parameter ca | |
|
||||
| ConditionalAccess.cs:52:18:52:38 | ... = ... | ConditionalAccess.cs:53:9:53:26 | ...; | |
|
||||
| ConditionalAccess.cs:52:32:52:38 | "World" | ConditionalAccess.cs:52:9:52:28 | access to property StringProp | |
|
||||
| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | non-null |
|
||||
| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:20 | access to field IntField | non-null |
|
||||
| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:25:53:25 | 1 | null |
|
||||
| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:30 | ...; | null |
|
||||
| ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:12:53:25 | ... = ... | |
|
||||
| ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:25:53:25 | 1 | |
|
||||
| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | |
|
||||
| ConditionalAccess.cs:53:12:53:25 | ... - ... | ConditionalAccess.cs:53:9:53:20 | access to field IntField | |
|
||||
| ConditionalAccess.cs:53:12:53:25 | ... = ... | ConditionalAccess.cs:54:9:54:30 | ...; | |
|
||||
| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:53:12:53:25 | ... - ... | |
|
||||
| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | null |
|
||||
| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | non-null |
|
||||
| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | non-null |
|
||||
| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:27:54:29 | "!" | null |
|
||||
| ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:12:54:29 | ... = ... | |
|
||||
| ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:27:54:29 | "!" | |
|
||||
| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | |
|
||||
| ConditionalAccess.cs:54:12:54:29 | ... + ... | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | |
|
||||
| ConditionalAccess.cs:54:12:54:29 | ... = ... | ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | |
|
||||
| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:54:12:54:29 | ... + ... | |
|
||||
| ConditionalAccess.cs:60:26:60:38 | enter CommaJoinWith | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | |
|
||||
| ConditionalAccess.cs:60:26:60:38 | exit CommaJoinWith (normal) | ConditionalAccess.cs:60:26:60:38 | exit CommaJoinWith | |
|
||||
| ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | ConditionalAccess.cs:60:75:60:78 | ", " | |
|
||||
| ConditionalAccess.cs:60:70:60:78 | ... + ... | ConditionalAccess.cs:60:82:60:83 | access to parameter s2 | |
|
||||
| ConditionalAccess.cs:60:70:60:83 | ... + ... | ConditionalAccess.cs:60:26:60:38 | exit CommaJoinWith (normal) | |
|
||||
| ConditionalAccess.cs:60:75:60:78 | ", " | ConditionalAccess.cs:60:70:60:78 | ... + ... | |
|
||||
| ConditionalAccess.cs:60:82:60:83 | access to parameter s2 | ConditionalAccess.cs:60:70:60:83 | ... + ... | |
|
||||
| Conditions.cs:1:7:1:16 | call to constructor Object | Conditions.cs:1:7:1:16 | {...} | |
|
||||
| Conditions.cs:1:7:1:16 | call to method <object initializer> | Conditions.cs:1:7:1:16 | call to constructor Object | |
|
||||
| Conditions.cs:1:7:1:16 | enter Conditions | Conditions.cs:1:7:1:16 | this access | |
|
||||
@@ -2007,14 +2121,16 @@
|
||||
| Finally.cs:209:25:209:47 | throw ...; | Finally.cs:195:10:195:12 | exit M10 (abnormal) | exception |
|
||||
| Finally.cs:209:31:209:46 | object creation of type ExceptionC | Finally.cs:209:25:209:47 | throw ...; | |
|
||||
| Finally.cs:211:13:211:16 | this access | Finally.cs:211:26:211:28 | "0" | |
|
||||
| Finally.cs:211:13:211:22 | access to field Field | Finally.cs:211:13:211:28 | ... = ... | |
|
||||
| Finally.cs:211:13:211:28 | ... = ... | Finally.cs:195:10:195:12 | exit M10 (abnormal) | exception |
|
||||
| Finally.cs:211:13:211:28 | ... = ... | Finally.cs:213:9:213:25 | ...; | |
|
||||
| Finally.cs:211:13:211:29 | ...; | Finally.cs:211:13:211:16 | this access | |
|
||||
| Finally.cs:211:26:211:28 | "0" | Finally.cs:211:13:211:28 | ... = ... | |
|
||||
| Finally.cs:211:26:211:28 | "0" | Finally.cs:211:13:211:22 | access to field Field | |
|
||||
| Finally.cs:213:9:213:12 | this access | Finally.cs:213:22:213:24 | "1" | |
|
||||
| Finally.cs:213:9:213:18 | access to field Field | Finally.cs:213:9:213:24 | ... = ... | |
|
||||
| Finally.cs:213:9:213:24 | ... = ... | Finally.cs:195:10:195:12 | exit M10 (normal) | |
|
||||
| Finally.cs:213:9:213:25 | ...; | Finally.cs:213:9:213:12 | this access | |
|
||||
| Finally.cs:213:22:213:24 | "1" | Finally.cs:213:9:213:24 | ... = ... | |
|
||||
| Finally.cs:213:22:213:24 | "1" | Finally.cs:213:9:213:18 | access to field Field | |
|
||||
| Finally.cs:216:10:216:12 | enter M11 | Finally.cs:217:5:231:5 | {...} | |
|
||||
| Finally.cs:216:10:216:12 | exit M11 (normal) | Finally.cs:216:10:216:12 | exit M11 | |
|
||||
| Finally.cs:217:5:231:5 | {...} | Finally.cs:218:9:229:9 | try {...} ... | |
|
||||
@@ -2164,10 +2280,11 @@
|
||||
| Initializers.cs:3:7:3:18 | exit <object initializer> (normal) | Initializers.cs:3:7:3:18 | exit <object initializer> | |
|
||||
| Initializers.cs:3:7:3:18 | exit Initializers (normal) | Initializers.cs:3:7:3:18 | exit Initializers | |
|
||||
| Initializers.cs:3:7:3:18 | {...} | Initializers.cs:3:7:3:18 | exit Initializers (normal) | |
|
||||
| Initializers.cs:5:9:5:9 | access to field F | Initializers.cs:5:9:5:17 | ... = ... | |
|
||||
| Initializers.cs:5:9:5:9 | this access | Initializers.cs:5:13:5:13 | access to field H | |
|
||||
| Initializers.cs:5:9:5:17 | ... = ... | Initializers.cs:6:9:6:9 | this access | |
|
||||
| Initializers.cs:5:13:5:13 | access to field H | Initializers.cs:5:17:5:17 | 1 | |
|
||||
| Initializers.cs:5:13:5:17 | ... + ... | Initializers.cs:5:9:5:17 | ... = ... | |
|
||||
| Initializers.cs:5:13:5:17 | ... + ... | Initializers.cs:5:9:5:9 | access to field F | |
|
||||
| Initializers.cs:5:17:5:17 | 1 | Initializers.cs:5:13:5:17 | ... + ... | |
|
||||
| Initializers.cs:6:9:6:9 | access to property G | Initializers.cs:6:25:6:31 | ... = ... | |
|
||||
| Initializers.cs:6:9:6:9 | this access | Initializers.cs:6:27:6:27 | access to field H | |
|
||||
@@ -2195,8 +2312,9 @@
|
||||
| Initializers.cs:14:17:14:53 | object creation of type Initializers | Initializers.cs:14:44:14:44 | 0 | |
|
||||
| Initializers.cs:14:34:14:35 | "" | Initializers.cs:14:17:14:53 | object creation of type Initializers | |
|
||||
| Initializers.cs:14:38:14:53 | { ..., ... } | Initializers.cs:14:13:14:53 | Initializers i = ... | |
|
||||
| Initializers.cs:14:40:14:40 | access to field F | Initializers.cs:14:40:14:44 | ... = ... | |
|
||||
| Initializers.cs:14:40:14:44 | ... = ... | Initializers.cs:14:51:14:51 | 1 | |
|
||||
| Initializers.cs:14:44:14:44 | 0 | Initializers.cs:14:40:14:44 | ... = ... | |
|
||||
| Initializers.cs:14:44:14:44 | 0 | Initializers.cs:14:40:14:40 | access to field F | |
|
||||
| Initializers.cs:14:47:14:47 | access to property G | Initializers.cs:14:47:14:51 | ... = ... | |
|
||||
| Initializers.cs:14:47:14:51 | ... = ... | Initializers.cs:14:38:14:53 | { ..., ... } | |
|
||||
| Initializers.cs:14:51:14:51 | 1 | Initializers.cs:14:47:14:47 | access to property G | |
|
||||
@@ -2208,10 +2326,11 @@
|
||||
| Initializers.cs:15:39:15:39 | access to local variable i | Initializers.cs:15:59:15:60 | "" | |
|
||||
| Initializers.cs:15:42:15:61 | object creation of type Initializers | Initializers.cs:15:37:15:63 | { ..., ... } | |
|
||||
| Initializers.cs:15:59:15:60 | "" | Initializers.cs:15:42:15:61 | object creation of type Initializers | |
|
||||
| Initializers.cs:18:16:18:16 | access to field H | Initializers.cs:18:16:18:20 | ... = ... | |
|
||||
| Initializers.cs:18:16:18:16 | enter H | Initializers.cs:18:20:18:20 | 1 | |
|
||||
| Initializers.cs:18:16:18:16 | exit H (normal) | Initializers.cs:18:16:18:16 | exit H | |
|
||||
| Initializers.cs:18:16:18:20 | ... = ... | Initializers.cs:18:16:18:16 | exit H (normal) | |
|
||||
| Initializers.cs:18:20:18:20 | 1 | Initializers.cs:18:16:18:20 | ... = ... | |
|
||||
| Initializers.cs:18:20:18:20 | 1 | Initializers.cs:18:16:18:16 | access to field H | |
|
||||
| Initializers.cs:20:11:20:23 | call to constructor Object | Initializers.cs:20:11:20:23 | {...} | |
|
||||
| Initializers.cs:20:11:20:23 | call to method <object initializer> | Initializers.cs:20:11:20:23 | call to constructor Object | |
|
||||
| Initializers.cs:20:11:20:23 | enter <object initializer> | Initializers.cs:22:23:22:23 | this access | |
|
||||
@@ -2220,46 +2339,52 @@
|
||||
| Initializers.cs:20:11:20:23 | exit NoConstructor (normal) | Initializers.cs:20:11:20:23 | exit NoConstructor | |
|
||||
| Initializers.cs:20:11:20:23 | this access | Initializers.cs:20:11:20:23 | call to method <object initializer> | |
|
||||
| Initializers.cs:20:11:20:23 | {...} | Initializers.cs:20:11:20:23 | exit NoConstructor (normal) | |
|
||||
| Initializers.cs:22:23:22:23 | access to field F | Initializers.cs:22:23:22:27 | ... = ... | |
|
||||
| Initializers.cs:22:23:22:23 | this access | Initializers.cs:22:27:22:27 | 0 | |
|
||||
| Initializers.cs:22:23:22:27 | ... = ... | Initializers.cs:23:23:23:23 | this access | |
|
||||
| Initializers.cs:22:27:22:27 | 0 | Initializers.cs:22:23:22:27 | ... = ... | |
|
||||
| Initializers.cs:22:27:22:27 | 0 | Initializers.cs:22:23:22:23 | access to field F | |
|
||||
| Initializers.cs:23:23:23:23 | access to field G | Initializers.cs:23:23:23:27 | ... = ... | |
|
||||
| Initializers.cs:23:23:23:23 | this access | Initializers.cs:23:27:23:27 | 1 | |
|
||||
| Initializers.cs:23:23:23:27 | ... = ... | Initializers.cs:20:11:20:23 | exit <object initializer> (normal) | |
|
||||
| Initializers.cs:23:27:23:27 | 1 | Initializers.cs:23:23:23:27 | ... = ... | |
|
||||
| Initializers.cs:23:27:23:27 | 1 | Initializers.cs:23:23:23:23 | access to field G | |
|
||||
| Initializers.cs:26:11:26:13 | enter <object initializer> | Initializers.cs:28:13:28:13 | this access | |
|
||||
| Initializers.cs:26:11:26:13 | exit <object initializer> (normal) | Initializers.cs:26:11:26:13 | exit <object initializer> | |
|
||||
| Initializers.cs:28:13:28:13 | access to field H | Initializers.cs:28:13:28:17 | ... = ... | |
|
||||
| Initializers.cs:28:13:28:13 | this access | Initializers.cs:28:17:28:17 | 2 | |
|
||||
| Initializers.cs:28:13:28:17 | ... = ... | Initializers.cs:26:11:26:13 | exit <object initializer> (normal) | |
|
||||
| Initializers.cs:28:17:28:17 | 2 | Initializers.cs:28:13:28:17 | ... = ... | |
|
||||
| Initializers.cs:28:17:28:17 | 2 | Initializers.cs:28:13:28:13 | access to field H | |
|
||||
| Initializers.cs:31:9:31:11 | call to method <object initializer> | Initializers.cs:31:17:31:20 | call to constructor NoConstructor | |
|
||||
| Initializers.cs:31:9:31:11 | enter Sub | Initializers.cs:31:9:31:11 | this access | |
|
||||
| Initializers.cs:31:9:31:11 | exit Sub (normal) | Initializers.cs:31:9:31:11 | exit Sub | |
|
||||
| Initializers.cs:31:9:31:11 | this access | Initializers.cs:31:9:31:11 | call to method <object initializer> | |
|
||||
| Initializers.cs:31:17:31:20 | call to constructor NoConstructor | Initializers.cs:31:24:31:33 | {...} | |
|
||||
| Initializers.cs:31:24:31:33 | {...} | Initializers.cs:31:26:31:31 | ...; | |
|
||||
| Initializers.cs:31:26:31:26 | access to field I | Initializers.cs:31:26:31:30 | ... = ... | |
|
||||
| Initializers.cs:31:26:31:26 | this access | Initializers.cs:31:30:31:30 | 3 | |
|
||||
| Initializers.cs:31:26:31:30 | ... = ... | Initializers.cs:31:9:31:11 | exit Sub (normal) | |
|
||||
| Initializers.cs:31:26:31:31 | ...; | Initializers.cs:31:26:31:26 | this access | |
|
||||
| Initializers.cs:31:30:31:30 | 3 | Initializers.cs:31:26:31:30 | ... = ... | |
|
||||
| Initializers.cs:31:30:31:30 | 3 | Initializers.cs:31:26:31:26 | access to field I | |
|
||||
| Initializers.cs:33:9:33:11 | enter Sub | Initializers.cs:33:22:33:25 | call to constructor Sub | |
|
||||
| Initializers.cs:33:9:33:11 | exit Sub (normal) | Initializers.cs:33:9:33:11 | exit Sub | |
|
||||
| Initializers.cs:33:22:33:25 | call to constructor Sub | Initializers.cs:33:29:33:38 | {...} | |
|
||||
| Initializers.cs:33:29:33:38 | {...} | Initializers.cs:33:31:33:36 | ...; | |
|
||||
| Initializers.cs:33:31:33:31 | access to field I | Initializers.cs:33:31:33:35 | ... = ... | |
|
||||
| Initializers.cs:33:31:33:31 | this access | Initializers.cs:33:35:33:35 | access to parameter i | |
|
||||
| Initializers.cs:33:31:33:35 | ... = ... | Initializers.cs:33:9:33:11 | exit Sub (normal) | |
|
||||
| Initializers.cs:33:31:33:36 | ...; | Initializers.cs:33:31:33:31 | this access | |
|
||||
| Initializers.cs:33:35:33:35 | access to parameter i | Initializers.cs:33:31:33:35 | ... = ... | |
|
||||
| Initializers.cs:33:35:33:35 | access to parameter i | Initializers.cs:33:31:33:31 | access to field I | |
|
||||
| Initializers.cs:35:9:35:11 | call to constructor NoConstructor | Initializers.cs:35:27:35:40 | {...} | |
|
||||
| Initializers.cs:35:9:35:11 | call to method <object initializer> | Initializers.cs:35:9:35:11 | call to constructor NoConstructor | |
|
||||
| Initializers.cs:35:9:35:11 | enter Sub | Initializers.cs:35:9:35:11 | this access | |
|
||||
| Initializers.cs:35:9:35:11 | exit Sub (normal) | Initializers.cs:35:9:35:11 | exit Sub | |
|
||||
| Initializers.cs:35:9:35:11 | this access | Initializers.cs:35:9:35:11 | call to method <object initializer> | |
|
||||
| Initializers.cs:35:27:35:40 | {...} | Initializers.cs:35:29:35:38 | ...; | |
|
||||
| Initializers.cs:35:29:35:29 | access to field I | Initializers.cs:35:29:35:37 | ... = ... | |
|
||||
| Initializers.cs:35:29:35:29 | this access | Initializers.cs:35:33:35:33 | access to parameter i | |
|
||||
| Initializers.cs:35:29:35:37 | ... = ... | Initializers.cs:35:9:35:11 | exit Sub (normal) | |
|
||||
| Initializers.cs:35:29:35:38 | ...; | Initializers.cs:35:29:35:29 | this access | |
|
||||
| Initializers.cs:35:33:35:33 | access to parameter i | Initializers.cs:35:37:35:37 | access to parameter j | |
|
||||
| Initializers.cs:35:33:35:37 | ... + ... | Initializers.cs:35:29:35:37 | ... = ... | |
|
||||
| Initializers.cs:35:33:35:37 | ... + ... | Initializers.cs:35:29:35:29 | access to field I | |
|
||||
| Initializers.cs:35:37:35:37 | access to parameter j | Initializers.cs:35:33:35:37 | ... + ... | |
|
||||
| Initializers.cs:39:7:39:23 | call to constructor Object | Initializers.cs:39:7:39:23 | {...} | |
|
||||
| Initializers.cs:39:7:39:23 | call to method <object initializer> | Initializers.cs:39:7:39:23 | call to constructor Object | |
|
||||
@@ -2298,8 +2423,9 @@
|
||||
| Initializers.cs:57:13:65:9 | Compound compound = ... | Initializers.cs:51:10:51:13 | exit Test (normal) | |
|
||||
| Initializers.cs:57:24:65:9 | object creation of type Compound | Initializers.cs:59:34:59:34 | 0 | |
|
||||
| Initializers.cs:58:9:65:9 | { ..., ... } | Initializers.cs:57:13:65:9 | Compound compound = ... | |
|
||||
| Initializers.cs:59:13:59:27 | access to field DictionaryField | Initializers.cs:59:13:59:76 | ... = ... | |
|
||||
| Initializers.cs:59:13:59:76 | ... = ... | Initializers.cs:60:37:60:37 | 3 | |
|
||||
| Initializers.cs:59:31:59:76 | { ..., ... } | Initializers.cs:59:13:59:76 | ... = ... | |
|
||||
| Initializers.cs:59:31:59:76 | { ..., ... } | Initializers.cs:59:13:59:27 | access to field DictionaryField | |
|
||||
| Initializers.cs:59:33:59:35 | access to indexer | Initializers.cs:59:33:59:44 | ... = ... | |
|
||||
| Initializers.cs:59:33:59:44 | ... = ... | Initializers.cs:59:48:59:48 | 1 | |
|
||||
| Initializers.cs:59:34:59:34 | 0 | Initializers.cs:59:39:59:44 | "Zero" | |
|
||||
@@ -2331,52 +2457,62 @@
|
||||
| Initializers.cs:60:65:60:69 | ... + ... | Initializers.cs:60:74:60:78 | "One" | |
|
||||
| Initializers.cs:60:69:60:69 | 1 | Initializers.cs:60:65:60:69 | ... + ... | |
|
||||
| Initializers.cs:60:74:60:78 | "One" | Initializers.cs:60:64:60:70 | access to indexer | |
|
||||
| Initializers.cs:61:13:61:22 | access to field ArrayField | Initializers.cs:61:13:61:58 | ... = ... | |
|
||||
| Initializers.cs:61:13:61:58 | ... = ... | Initializers.cs:62:30:62:30 | 0 | |
|
||||
| Initializers.cs:61:26:61:58 | { ..., ... } | Initializers.cs:61:13:61:58 | ... = ... | |
|
||||
| Initializers.cs:61:26:61:58 | { ..., ... } | Initializers.cs:61:13:61:22 | access to field ArrayField | |
|
||||
| Initializers.cs:61:28:61:30 | access to array element | Initializers.cs:61:28:61:39 | ... = ... | |
|
||||
| Initializers.cs:61:28:61:39 | ... = ... | Initializers.cs:61:43:61:43 | access to parameter i | |
|
||||
| Initializers.cs:61:29:61:29 | 0 | Initializers.cs:61:34:61:39 | "Zero" | |
|
||||
| Initializers.cs:61:34:61:39 | "Zero" | Initializers.cs:61:28:61:39 | ... = ... | |
|
||||
| Initializers.cs:61:34:61:39 | "Zero" | Initializers.cs:61:28:61:30 | access to array element | |
|
||||
| Initializers.cs:61:42:61:48 | access to array element | Initializers.cs:61:42:61:56 | ... = ... | |
|
||||
| Initializers.cs:61:42:61:56 | ... = ... | Initializers.cs:61:26:61:58 | { ..., ... } | |
|
||||
| Initializers.cs:61:43:61:43 | access to parameter i | Initializers.cs:61:47:61:47 | 1 | |
|
||||
| Initializers.cs:61:43:61:47 | ... + ... | Initializers.cs:61:52:61:56 | "One" | |
|
||||
| Initializers.cs:61:47:61:47 | 1 | Initializers.cs:61:43:61:47 | ... + ... | |
|
||||
| Initializers.cs:61:52:61:56 | "One" | Initializers.cs:61:42:61:56 | ... = ... | |
|
||||
| Initializers.cs:61:52:61:56 | "One" | Initializers.cs:61:42:61:48 | access to array element | |
|
||||
| Initializers.cs:62:13:62:23 | access to field ArrayField2 | Initializers.cs:62:13:62:60 | ... = ... | |
|
||||
| Initializers.cs:62:13:62:60 | ... = ... | Initializers.cs:63:32:63:32 | 1 | |
|
||||
| Initializers.cs:62:27:62:60 | { ..., ... } | Initializers.cs:62:13:62:60 | ... = ... | |
|
||||
| Initializers.cs:62:27:62:60 | { ..., ... } | Initializers.cs:62:13:62:23 | access to field ArrayField2 | |
|
||||
| Initializers.cs:62:29:62:34 | access to array element | Initializers.cs:62:29:62:40 | ... = ... | |
|
||||
| Initializers.cs:62:29:62:40 | ... = ... | Initializers.cs:62:44:62:44 | 1 | |
|
||||
| Initializers.cs:62:30:62:30 | 0 | Initializers.cs:62:33:62:33 | 1 | |
|
||||
| Initializers.cs:62:33:62:33 | 1 | Initializers.cs:62:38:62:40 | "i" | |
|
||||
| Initializers.cs:62:38:62:40 | "i" | Initializers.cs:62:29:62:40 | ... = ... | |
|
||||
| Initializers.cs:62:38:62:40 | "i" | Initializers.cs:62:29:62:34 | access to array element | |
|
||||
| Initializers.cs:62:43:62:52 | access to array element | Initializers.cs:62:43:62:58 | ... = ... | |
|
||||
| Initializers.cs:62:43:62:58 | ... = ... | Initializers.cs:62:27:62:60 | { ..., ... } | |
|
||||
| Initializers.cs:62:44:62:44 | 1 | Initializers.cs:62:47:62:47 | access to parameter i | |
|
||||
| Initializers.cs:62:47:62:47 | access to parameter i | Initializers.cs:62:51:62:51 | 0 | |
|
||||
| Initializers.cs:62:47:62:51 | ... + ... | Initializers.cs:62:56:62:58 | "1" | |
|
||||
| Initializers.cs:62:51:62:51 | 0 | Initializers.cs:62:47:62:51 | ... + ... | |
|
||||
| Initializers.cs:62:56:62:58 | "1" | Initializers.cs:62:43:62:58 | ... = ... | |
|
||||
| Initializers.cs:62:56:62:58 | "1" | Initializers.cs:62:43:62:52 | access to array element | |
|
||||
| Initializers.cs:63:13:63:25 | access to property ArrayProperty | Initializers.cs:63:13:63:60 | ... = ... | |
|
||||
| Initializers.cs:63:13:63:60 | ... = ... | Initializers.cs:64:33:64:33 | 0 | |
|
||||
| Initializers.cs:63:29:63:60 | { ..., ... } | Initializers.cs:63:13:63:25 | access to property ArrayProperty | |
|
||||
| Initializers.cs:63:31:63:33 | access to array element | Initializers.cs:63:31:63:41 | ... = ... | |
|
||||
| Initializers.cs:63:31:63:41 | ... = ... | Initializers.cs:63:45:63:45 | access to parameter i | |
|
||||
| Initializers.cs:63:32:63:32 | 1 | Initializers.cs:63:37:63:41 | "One" | |
|
||||
| Initializers.cs:63:37:63:41 | "One" | Initializers.cs:63:31:63:41 | ... = ... | |
|
||||
| Initializers.cs:63:37:63:41 | "One" | Initializers.cs:63:31:63:33 | access to array element | |
|
||||
| Initializers.cs:63:44:63:50 | access to array element | Initializers.cs:63:44:63:58 | ... = ... | |
|
||||
| Initializers.cs:63:44:63:58 | ... = ... | Initializers.cs:63:29:63:60 | { ..., ... } | |
|
||||
| Initializers.cs:63:45:63:45 | access to parameter i | Initializers.cs:63:49:63:49 | 2 | |
|
||||
| Initializers.cs:63:45:63:49 | ... + ... | Initializers.cs:63:54:63:58 | "Two" | |
|
||||
| Initializers.cs:63:49:63:49 | 2 | Initializers.cs:63:45:63:49 | ... + ... | |
|
||||
| Initializers.cs:63:54:63:58 | "Two" | Initializers.cs:63:44:63:58 | ... = ... | |
|
||||
| Initializers.cs:63:54:63:58 | "Two" | Initializers.cs:63:44:63:50 | access to array element | |
|
||||
| Initializers.cs:64:13:64:26 | access to property ArrayProperty2 | Initializers.cs:64:13:64:63 | ... = ... | |
|
||||
| Initializers.cs:64:13:64:63 | ... = ... | Initializers.cs:58:9:65:9 | { ..., ... } | |
|
||||
| Initializers.cs:64:30:64:63 | { ..., ... } | Initializers.cs:64:13:64:26 | access to property ArrayProperty2 | |
|
||||
| Initializers.cs:64:32:64:37 | access to array element | Initializers.cs:64:32:64:43 | ... = ... | |
|
||||
| Initializers.cs:64:32:64:43 | ... = ... | Initializers.cs:64:47:64:47 | 1 | |
|
||||
| Initializers.cs:64:33:64:33 | 0 | Initializers.cs:64:36:64:36 | 1 | |
|
||||
| Initializers.cs:64:36:64:36 | 1 | Initializers.cs:64:41:64:43 | "i" | |
|
||||
| Initializers.cs:64:41:64:43 | "i" | Initializers.cs:64:32:64:43 | ... = ... | |
|
||||
| Initializers.cs:64:41:64:43 | "i" | Initializers.cs:64:32:64:37 | access to array element | |
|
||||
| Initializers.cs:64:46:64:55 | access to array element | Initializers.cs:64:46:64:61 | ... = ... | |
|
||||
| Initializers.cs:64:46:64:61 | ... = ... | Initializers.cs:64:30:64:63 | { ..., ... } | |
|
||||
| Initializers.cs:64:47:64:47 | 1 | Initializers.cs:64:50:64:50 | access to parameter i | |
|
||||
| Initializers.cs:64:50:64:50 | access to parameter i | Initializers.cs:64:54:64:54 | 0 | |
|
||||
| Initializers.cs:64:50:64:54 | ... + ... | Initializers.cs:64:59:64:61 | "1" | |
|
||||
| Initializers.cs:64:54:64:54 | 0 | Initializers.cs:64:50:64:54 | ... + ... | |
|
||||
| Initializers.cs:64:59:64:61 | "1" | Initializers.cs:64:46:64:61 | ... = ... | |
|
||||
| Initializers.cs:64:59:64:61 | "1" | Initializers.cs:64:46:64:55 | access to array element | |
|
||||
| LoopUnrolling.cs:5:7:5:19 | call to constructor Object | LoopUnrolling.cs:5:7:5:19 | {...} | |
|
||||
| LoopUnrolling.cs:5:7:5:19 | call to method <object initializer> | LoopUnrolling.cs:5:7:5:19 | call to constructor Object | |
|
||||
| LoopUnrolling.cs:5:7:5:19 | enter LoopUnrolling | LoopUnrolling.cs:5:7:5:19 | this access | |
|
||||
@@ -2631,9 +2767,10 @@
|
||||
| MultiImplementationA.cs:11:7:11:8 | enter <object initializer> | MultiImplementationA.cs:13:16:13:16 | this access | |
|
||||
| MultiImplementationA.cs:11:7:11:8 | enter <object initializer> | MultiImplementationB.cs:11:16:11:16 | this access | |
|
||||
| MultiImplementationA.cs:11:7:11:8 | exit <object initializer> (normal) | MultiImplementationA.cs:11:7:11:8 | exit <object initializer> | |
|
||||
| MultiImplementationA.cs:13:16:13:16 | access to field F | MultiImplementationA.cs:13:16:13:20 | ... = ... | |
|
||||
| MultiImplementationA.cs:13:16:13:16 | this access | MultiImplementationA.cs:13:20:13:20 | 0 | |
|
||||
| MultiImplementationA.cs:13:16:13:20 | ... = ... | MultiImplementationA.cs:24:16:24:16 | this access | |
|
||||
| MultiImplementationA.cs:13:20:13:20 | 0 | MultiImplementationA.cs:13:16:13:20 | ... = ... | |
|
||||
| MultiImplementationA.cs:13:20:13:20 | 0 | MultiImplementationA.cs:13:16:13:16 | access to field F | |
|
||||
| MultiImplementationA.cs:14:31:14:31 | access to parameter i | MultiImplementationA.cs:14:31:14:31 | exit get_Item (normal) | |
|
||||
| MultiImplementationA.cs:14:31:14:31 | enter get_Item | MultiImplementationA.cs:14:31:14:31 | access to parameter i | |
|
||||
| MultiImplementationA.cs:14:31:14:31 | enter get_Item | MultiImplementationB.cs:12:37:12:40 | null | |
|
||||
@@ -2666,10 +2803,11 @@
|
||||
| MultiImplementationA.cs:20:12:20:13 | exit C2 (normal) | MultiImplementationA.cs:20:12:20:13 | exit C2 | |
|
||||
| MultiImplementationA.cs:20:12:20:13 | this access | MultiImplementationA.cs:20:12:20:13 | call to method <object initializer> | |
|
||||
| MultiImplementationA.cs:20:22:20:31 | {...} | MultiImplementationA.cs:20:24:20:29 | ...; | |
|
||||
| MultiImplementationA.cs:20:24:20:24 | access to field F | MultiImplementationA.cs:20:24:20:28 | ... = ... | |
|
||||
| MultiImplementationA.cs:20:24:20:24 | this access | MultiImplementationA.cs:20:28:20:28 | access to parameter i | |
|
||||
| MultiImplementationA.cs:20:24:20:28 | ... = ... | MultiImplementationA.cs:20:12:20:13 | exit C2 (normal) | |
|
||||
| MultiImplementationA.cs:20:24:20:29 | ...; | MultiImplementationA.cs:20:24:20:24 | this access | |
|
||||
| MultiImplementationA.cs:20:28:20:28 | access to parameter i | MultiImplementationA.cs:20:24:20:28 | ... = ... | |
|
||||
| MultiImplementationA.cs:20:28:20:28 | access to parameter i | MultiImplementationA.cs:20:24:20:24 | access to field F | |
|
||||
| MultiImplementationA.cs:21:12:21:13 | enter C2 | MultiImplementationA.cs:21:24:21:24 | 0 | |
|
||||
| MultiImplementationA.cs:21:12:21:13 | enter C2 | MultiImplementationB.cs:19:24:19:24 | 1 | |
|
||||
| MultiImplementationA.cs:21:12:21:13 | exit C2 (normal) | MultiImplementationA.cs:21:12:21:13 | exit C2 | |
|
||||
@@ -2730,9 +2868,10 @@
|
||||
| MultiImplementationB.cs:4:34:4:34 | 1 | MultiImplementationB.cs:4:27:4:35 | return ...; | |
|
||||
| MultiImplementationB.cs:4:43:4:45 | {...} | MultiImplementationA.cs:7:41:7:43 | exit set_P2 (normal) | |
|
||||
| MultiImplementationB.cs:5:23:5:23 | 2 | MultiImplementationA.cs:8:16:8:16 | exit M (normal) | |
|
||||
| MultiImplementationB.cs:11:16:11:16 | access to field F | MultiImplementationB.cs:11:16:11:20 | ... = ... | |
|
||||
| MultiImplementationB.cs:11:16:11:16 | this access | MultiImplementationB.cs:11:20:11:20 | 1 | |
|
||||
| MultiImplementationB.cs:11:16:11:20 | ... = ... | MultiImplementationB.cs:22:16:22:16 | this access | |
|
||||
| MultiImplementationB.cs:11:20:11:20 | 1 | MultiImplementationB.cs:11:16:11:20 | ... = ... | |
|
||||
| MultiImplementationB.cs:11:20:11:20 | 1 | MultiImplementationB.cs:11:16:11:16 | access to field F | |
|
||||
| MultiImplementationB.cs:12:31:12:40 | throw ... | MultiImplementationA.cs:14:31:14:31 | exit get_Item (abnormal) | exception |
|
||||
| MultiImplementationB.cs:12:37:12:40 | null | MultiImplementationB.cs:12:31:12:40 | throw ... | |
|
||||
| MultiImplementationB.cs:13:40:13:54 | {...} | MultiImplementationB.cs:13:48:13:51 | null | |
|
||||
@@ -2859,9 +2998,10 @@
|
||||
| PartialImplementationA.cs:3:12:3:18 | exit Partial (normal) | PartialImplementationA.cs:3:12:3:18 | exit Partial | |
|
||||
| PartialImplementationA.cs:3:12:3:18 | this access | PartialImplementationA.cs:3:12:3:18 | call to method <object initializer> | |
|
||||
| PartialImplementationA.cs:3:27:3:29 | {...} | PartialImplementationA.cs:3:12:3:18 | exit Partial (normal) | |
|
||||
| PartialImplementationB.cs:3:16:3:16 | access to field F | PartialImplementationB.cs:3:16:3:20 | ... = ... | |
|
||||
| PartialImplementationB.cs:3:16:3:16 | this access | PartialImplementationB.cs:3:20:3:20 | 0 | |
|
||||
| PartialImplementationB.cs:3:16:3:20 | ... = ... | PartialImplementationB.cs:5:16:5:16 | this access | |
|
||||
| PartialImplementationB.cs:3:20:3:20 | 0 | PartialImplementationB.cs:3:16:3:20 | ... = ... | |
|
||||
| PartialImplementationB.cs:3:20:3:20 | 0 | PartialImplementationB.cs:3:16:3:16 | access to field F | |
|
||||
| PartialImplementationB.cs:4:12:4:18 | call to constructor Object | PartialImplementationB.cs:4:22:4:24 | {...} | |
|
||||
| PartialImplementationB.cs:4:12:4:18 | call to method <object initializer> | PartialImplementationB.cs:4:12:4:18 | call to constructor Object | |
|
||||
| PartialImplementationB.cs:4:12:4:18 | enter Partial | PartialImplementationB.cs:4:12:4:18 | this access | |
|
||||
@@ -3922,20 +4062,22 @@
|
||||
| cflow.cs:127:62:127:64 | enter set_Prop | cflow.cs:127:66:127:83 | {...} | |
|
||||
| cflow.cs:127:62:127:64 | exit set_Prop (normal) | cflow.cs:127:62:127:64 | exit set_Prop | |
|
||||
| cflow.cs:127:66:127:83 | {...} | cflow.cs:127:68:127:81 | ...; | |
|
||||
| cflow.cs:127:68:127:72 | access to field Field | cflow.cs:127:68:127:80 | ... = ... | |
|
||||
| cflow.cs:127:68:127:72 | this access | cflow.cs:127:76:127:80 | access to parameter value | |
|
||||
| cflow.cs:127:68:127:80 | ... = ... | cflow.cs:127:62:127:64 | exit set_Prop (normal) | |
|
||||
| cflow.cs:127:68:127:81 | ...; | cflow.cs:127:68:127:72 | this access | |
|
||||
| cflow.cs:127:76:127:80 | access to parameter value | cflow.cs:127:68:127:80 | ... = ... | |
|
||||
| cflow.cs:127:76:127:80 | access to parameter value | cflow.cs:127:68:127:72 | access to field Field | |
|
||||
| cflow.cs:129:5:129:15 | call to constructor Object | cflow.cs:130:5:132:5 | {...} | |
|
||||
| cflow.cs:129:5:129:15 | call to method <object initializer> | cflow.cs:129:5:129:15 | call to constructor Object | |
|
||||
| cflow.cs:129:5:129:15 | enter ControlFlow | cflow.cs:129:5:129:15 | this access | |
|
||||
| cflow.cs:129:5:129:15 | exit ControlFlow (normal) | cflow.cs:129:5:129:15 | exit ControlFlow | |
|
||||
| cflow.cs:129:5:129:15 | this access | cflow.cs:129:5:129:15 | call to method <object initializer> | |
|
||||
| cflow.cs:130:5:132:5 | {...} | cflow.cs:131:9:131:18 | ...; | |
|
||||
| cflow.cs:131:9:131:13 | access to field Field | cflow.cs:131:9:131:17 | ... = ... | |
|
||||
| cflow.cs:131:9:131:13 | this access | cflow.cs:131:17:131:17 | access to parameter s | |
|
||||
| cflow.cs:131:9:131:17 | ... = ... | cflow.cs:129:5:129:15 | exit ControlFlow (normal) | |
|
||||
| cflow.cs:131:9:131:18 | ...; | cflow.cs:131:9:131:13 | this access | |
|
||||
| cflow.cs:131:17:131:17 | access to parameter s | cflow.cs:131:9:131:17 | ... = ... | |
|
||||
| cflow.cs:131:17:131:17 | access to parameter s | cflow.cs:131:9:131:13 | access to field Field | |
|
||||
| cflow.cs:134:5:134:15 | enter ControlFlow | cflow.cs:134:31:134:31 | access to parameter i | |
|
||||
| cflow.cs:134:5:134:15 | exit ControlFlow (normal) | cflow.cs:134:5:134:15 | exit ControlFlow | |
|
||||
| cflow.cs:134:26:134:29 | call to constructor ControlFlow | cflow.cs:134:39:134:41 | {...} | |
|
||||
@@ -4163,10 +4305,11 @@
|
||||
| cflow.cs:209:5:222:5 | {...} | cflow.cs:210:9:221:36 | do ... while (...); | |
|
||||
| cflow.cs:210:9:221:36 | do ... while (...); | cflow.cs:211:9:221:9 | {...} | |
|
||||
| cflow.cs:211:9:221:9 | {...} | cflow.cs:212:13:212:25 | ...; | |
|
||||
| cflow.cs:212:13:212:17 | access to field Field | cflow.cs:212:13:212:24 | ... = ... | |
|
||||
| cflow.cs:212:13:212:17 | access to field Field | cflow.cs:212:22:212:24 | "a" | |
|
||||
| cflow.cs:212:13:212:17 | this access | cflow.cs:212:13:212:17 | access to field Field | |
|
||||
| cflow.cs:212:13:212:17 | this access | cflow.cs:212:13:212:17 | this access | |
|
||||
| cflow.cs:212:13:212:24 | ... + ... | cflow.cs:212:13:212:24 | ... = ... | |
|
||||
| cflow.cs:212:13:212:24 | ... + ... | cflow.cs:212:13:212:17 | access to field Field | |
|
||||
| cflow.cs:212:13:212:24 | ... = ... | cflow.cs:213:13:216:13 | if (...) ... | |
|
||||
| cflow.cs:212:13:212:25 | ...; | cflow.cs:212:13:212:17 | this access | |
|
||||
| cflow.cs:212:22:212:24 | "a" | cflow.cs:212:13:212:24 | ... + ... | |
|
||||
@@ -4204,10 +4347,11 @@
|
||||
| cflow.cs:226:57:226:59 | "a" | cflow.cs:226:62:226:63 | 10 | |
|
||||
| cflow.cs:226:62:226:63 | 10 | cflow.cs:226:27:226:64 | call to method Repeat<String> | |
|
||||
| cflow.cs:227:9:237:9 | {...} | cflow.cs:228:13:228:23 | ...; | |
|
||||
| cflow.cs:228:13:228:17 | access to field Field | cflow.cs:228:13:228:22 | ... = ... | |
|
||||
| cflow.cs:228:13:228:17 | access to field Field | cflow.cs:228:22:228:22 | access to local variable x | |
|
||||
| cflow.cs:228:13:228:17 | this access | cflow.cs:228:13:228:17 | access to field Field | |
|
||||
| cflow.cs:228:13:228:17 | this access | cflow.cs:228:13:228:17 | this access | |
|
||||
| cflow.cs:228:13:228:22 | ... + ... | cflow.cs:228:13:228:22 | ... = ... | |
|
||||
| cflow.cs:228:13:228:22 | ... + ... | cflow.cs:228:13:228:17 | access to field Field | |
|
||||
| cflow.cs:228:13:228:22 | ... = ... | cflow.cs:229:13:232:13 | if (...) ... | |
|
||||
| cflow.cs:228:13:228:23 | ...; | cflow.cs:228:13:228:17 | this access | |
|
||||
| cflow.cs:228:22:228:22 | access to local variable x | cflow.cs:228:13:228:22 | ... + ... | |
|
||||
|
||||
@@ -36,6 +36,9 @@
|
||||
| Assignments.cs:3:10:3:10 | M | Assignments.cs:4:5:15:5 | {...} |
|
||||
| Assignments.cs:14:18:14:35 | (...) => ... | Assignments.cs:14:33:14:35 | {...} |
|
||||
| Assignments.cs:17:40:17:40 | + | Assignments.cs:18:5:20:5 | {...} |
|
||||
| Assignments.cs:27:10:27:23 | SetParamSingle | Assignments.cs:28:5:30:5 | {...} |
|
||||
| Assignments.cs:32:10:32:22 | SetParamMulti | Assignments.cs:33:5:36:5 | {...} |
|
||||
| Assignments.cs:38:10:38:11 | M2 | Assignments.cs:39:5:45:5 | {...} |
|
||||
| BreakInTry.cs:1:7:1:16 | BreakInTry | BreakInTry.cs:1:7:1:16 | this access |
|
||||
| BreakInTry.cs:3:10:3:11 | M1 | BreakInTry.cs:4:5:18:5 | {...} |
|
||||
| BreakInTry.cs:20:10:20:11 | M2 | BreakInTry.cs:21:5:36:5 | {...} |
|
||||
@@ -58,7 +61,10 @@
|
||||
| ConditionalAccess.cs:21:10:21:11 | M7 | ConditionalAccess.cs:22:5:26:5 | {...} |
|
||||
| ConditionalAccess.cs:30:10:30:12 | Out | ConditionalAccess.cs:30:32:30:32 | 0 |
|
||||
| ConditionalAccess.cs:32:10:32:11 | M8 | ConditionalAccess.cs:33:5:36:5 | {...} |
|
||||
| ConditionalAccess.cs:41:26:41:38 | CommaJoinWith | ConditionalAccess.cs:41:70:41:71 | access to parameter s1 |
|
||||
| ConditionalAccess.cs:42:9:42:11 | get_Item | ConditionalAccess.cs:42:13:42:28 | {...} |
|
||||
| ConditionalAccess.cs:43:9:43:11 | set_Item | ConditionalAccess.cs:43:13:43:15 | {...} |
|
||||
| ConditionalAccess.cs:46:10:46:11 | M9 | ConditionalAccess.cs:47:5:55:5 | {...} |
|
||||
| ConditionalAccess.cs:60:26:60:38 | CommaJoinWith | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 |
|
||||
| Conditions.cs:1:7:1:16 | Conditions | Conditions.cs:1:7:1:16 | this access |
|
||||
| Conditions.cs:3:10:3:19 | IncrOrDecr | Conditions.cs:4:5:9:5 | {...} |
|
||||
| Conditions.cs:11:9:11:10 | M1 | Conditions.cs:12:5:20:5 | {...} |
|
||||
|
||||
@@ -6,8 +6,9 @@
|
||||
| patterns.cs:7:20:7:41 | (...) ... | patterns.cs:7:16:7:41 | Object o = ... | semmle.label | successor |
|
||||
| patterns.cs:7:20:7:41 | object creation of type MyStruct | patterns.cs:7:39:7:39 | 2 | semmle.label | successor |
|
||||
| patterns.cs:7:33:7:41 | { ..., ... } | patterns.cs:7:20:7:41 | (...) ... | semmle.label | successor |
|
||||
| patterns.cs:7:35:7:35 | access to field X | patterns.cs:7:35:7:39 | ... = ... | semmle.label | successor |
|
||||
| patterns.cs:7:35:7:39 | ... = ... | patterns.cs:7:33:7:41 | { ..., ... } | semmle.label | successor |
|
||||
| patterns.cs:7:39:7:39 | 2 | patterns.cs:7:35:7:39 | ... = ... | semmle.label | successor |
|
||||
| patterns.cs:7:39:7:39 | 2 | patterns.cs:7:35:7:35 | access to field X | semmle.label | successor |
|
||||
| patterns.cs:9:9:11:9 | if (...) ... | patterns.cs:9:13:9:13 | access to local variable o | semmle.label | successor |
|
||||
| patterns.cs:9:13:9:13 | access to local variable o | patterns.cs:9:18:9:29 | MyStruct ms1 | semmle.label | successor |
|
||||
| patterns.cs:9:13:9:29 | [false] ... is ... | patterns.cs:13:9:15:9 | if (...) ... | semmle.label | false |
|
||||
|
||||
@@ -108,8 +108,9 @@
|
||||
| patterns.cs:125:13:125:38 | MyStruct s = ... | patterns.cs:126:9:132:10 | ... ...; | semmle.label | successor |
|
||||
| patterns.cs:125:17:125:38 | object creation of type MyStruct | patterns.cs:125:36:125:36 | 0 | semmle.label | successor |
|
||||
| patterns.cs:125:30:125:38 | { ..., ... } | patterns.cs:125:13:125:38 | MyStruct s = ... | semmle.label | successor |
|
||||
| patterns.cs:125:32:125:32 | access to field X | patterns.cs:125:32:125:36 | ... = ... | semmle.label | successor |
|
||||
| patterns.cs:125:32:125:36 | ... = ... | patterns.cs:125:30:125:38 | { ..., ... } | semmle.label | successor |
|
||||
| patterns.cs:125:36:125:36 | 0 | patterns.cs:125:32:125:36 | ... = ... | semmle.label | successor |
|
||||
| patterns.cs:125:36:125:36 | 0 | patterns.cs:125:32:125:32 | access to field X | semmle.label | successor |
|
||||
| patterns.cs:126:9:132:10 | ... ...; | patterns.cs:126:17:126:17 | access to local variable s | semmle.label | successor |
|
||||
| patterns.cs:126:13:132:9 | Int32 r = ... | patterns.cs:134:9:148:9 | try {...} ... | semmle.label | successor |
|
||||
| patterns.cs:126:17:126:17 | access to local variable s | patterns.cs:128:13:128:20 | access to type MyStruct | semmle.label | successor |
|
||||
|
||||
@@ -5,8 +5,9 @@
|
||||
| patterns.cs:34:13:34:38 | MyStruct s = ... | patterns.cs:36:9:44:9 | switch (...) {...} | semmle.label | successor |
|
||||
| patterns.cs:34:17:34:38 | object creation of type MyStruct | patterns.cs:34:36:34:36 | 0 | semmle.label | successor |
|
||||
| patterns.cs:34:30:34:38 | { ..., ... } | patterns.cs:34:13:34:38 | MyStruct s = ... | semmle.label | successor |
|
||||
| patterns.cs:34:32:34:32 | access to field X | patterns.cs:34:32:34:36 | ... = ... | semmle.label | successor |
|
||||
| patterns.cs:34:32:34:36 | ... = ... | patterns.cs:34:30:34:38 | { ..., ... } | semmle.label | successor |
|
||||
| patterns.cs:34:36:34:36 | 0 | patterns.cs:34:32:34:36 | ... = ... | semmle.label | successor |
|
||||
| patterns.cs:34:36:34:36 | 0 | patterns.cs:34:32:34:32 | access to field X | semmle.label | successor |
|
||||
| patterns.cs:36:9:44:9 | switch (...) {...} | patterns.cs:36:17:36:17 | access to local variable s | semmle.label | successor |
|
||||
| patterns.cs:36:17:36:17 | access to local variable s | patterns.cs:38:13:38:47 | case ...: | semmle.label | successor |
|
||||
| patterns.cs:38:13:38:47 | case ...: | patterns.cs:38:18:38:29 | MyStruct ms1 | semmle.label | successor |
|
||||
|
||||
@@ -1124,6 +1124,7 @@
|
||||
| Splitting.cs:51:30:51:36 | { ..., ... } | Splitting.cs:51:17:51:36 | array creation of type String[] |
|
||||
| Splitting.cs:51:32:51:34 | "a" | Splitting.cs:51:30:51:36 | { ..., ... } |
|
||||
| Splitting.cs:52:9:52:9 | [post] access to local variable y | Splitting.cs:53:17:53:17 | access to local variable y |
|
||||
| Splitting.cs:52:9:52:9 | access to local variable y | Splitting.cs:52:9:52:12 | access to array element |
|
||||
| Splitting.cs:52:9:52:9 | access to local variable y | Splitting.cs:53:17:53:17 | access to local variable y |
|
||||
| Splitting.cs:52:16:52:18 | "b" | Splitting.cs:52:9:52:9 | [post] access to local variable y |
|
||||
| Splitting.cs:52:16:52:18 | "b" | Splitting.cs:52:9:52:12 | access to array element |
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
using System;
|
||||
|
||||
public class C
|
||||
{
|
||||
string Prop { get; set; }
|
||||
|
||||
void M(object o, bool b)
|
||||
{
|
||||
// Conditional expr might be null.
|
||||
var conditionalExpr = b ? new object() : null;
|
||||
|
||||
// Null-coalescing expr might be null as the right operand is null.
|
||||
var nullCoalescing = o ?? null;
|
||||
|
||||
// Cast might be null.
|
||||
var c = o as C;
|
||||
|
||||
// Conditional access might be null as the qualifier might be null.
|
||||
var s1 = (o as C)?.Prop;
|
||||
|
||||
// Conditional access might be null as the qualifier might be null.
|
||||
var i = o?.GetHashCode();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
| MaybeNullExpr.cs:10:31:10:53 | ... ? ... : ... |
|
||||
| MaybeNullExpr.cs:10:50:10:53 | null |
|
||||
| MaybeNullExpr.cs:13:30:13:38 | ... ?? ... |
|
||||
| MaybeNullExpr.cs:13:35:13:38 | null |
|
||||
| MaybeNullExpr.cs:16:17:16:22 | ... as ... |
|
||||
| MaybeNullExpr.cs:19:18:19:31 | access to property Prop |
|
||||
| MaybeNullExpr.cs:19:19:19:24 | ... as ... |
|
||||
| MaybeNullExpr.cs:22:17:22:32 | call to method GetHashCode |
|
||||
@@ -0,0 +1,6 @@
|
||||
import csharp
|
||||
import semmle.code.csharp.dataflow.Nullness
|
||||
|
||||
from MaybeNullExpr e
|
||||
where e.fromSource()
|
||||
select e
|
||||
2
csharp/ql/test/library-tests/dataflow/nullness/options
Normal file
2
csharp/ql/test/library-tests/dataflow/nullness/options
Normal file
@@ -0,0 +1,2 @@
|
||||
semmle-extractor-options: /nostdlib /noconfig
|
||||
semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj
|
||||
@@ -95,6 +95,7 @@
|
||||
| SignAnalysis.cs:120:9:120:10 | access to field f0 | positive |
|
||||
| SignAnalysis.cs:120:9:120:12 | ...++ | positive |
|
||||
| SignAnalysis.cs:121:34:121:35 | access to field f0 | strictlyPositive |
|
||||
| SignAnalysis.cs:122:9:122:10 | access to field f0 | positive |
|
||||
| SignAnalysis.cs:129:9:129:16 | ... = ... | strictlyNegative |
|
||||
| SignAnalysis.cs:129:14:129:16 | -... | strictlyNegative |
|
||||
| SignAnalysis.cs:129:15:129:16 | 10 | strictlyPositive |
|
||||
@@ -213,6 +214,7 @@
|
||||
| SignAnalysis.cs:414:13:414:13 | access to local variable i | strictlyPositive |
|
||||
| SignAnalysis.cs:415:31:415:31 | access to local variable i | strictlyPositive |
|
||||
| SignAnalysis.cs:424:31:424:31 | access to local variable x | strictlyNegative |
|
||||
| SignAnalysis.cs:428:19:428:19 | access to constant A | strictlyPositive |
|
||||
| SignAnalysis.cs:428:19:428:24 | ... = ... | strictlyPositive |
|
||||
| SignAnalysis.cs:428:23:428:24 | 12 | strictlyPositive |
|
||||
| SignAnalysis.cs:434:38:434:38 | access to local variable i | strictlyNegative |
|
||||
|
||||
@@ -6,11 +6,13 @@ call
|
||||
| obinit.cs:9:16:9:16 | call to method <object initializer> | obinit.cs:2:18:2:18 | <object initializer> | obinit.cs:9:16:9:16 | A |
|
||||
| obinit.cs:15:16:15:16 | call to method <object initializer> | obinit.cs:14:18:14:18 | <object initializer> | obinit.cs:15:16:15:16 | B |
|
||||
cfg
|
||||
| obinit.cs:2:18:2:18 | <object initializer> | obinit.cs:3:13:3:13 | access to field x | obinit.cs:3:13:3:17 | ... = ... | normal | 2 |
|
||||
| obinit.cs:2:18:2:18 | <object initializer> | obinit.cs:3:13:3:13 | this access | obinit.cs:3:17:3:17 | 1 | normal | 0 |
|
||||
| obinit.cs:2:18:2:18 | <object initializer> | obinit.cs:3:13:3:17 | ... = ... | obinit.cs:5:23:5:23 | this access | normal | 2 |
|
||||
| obinit.cs:2:18:2:18 | <object initializer> | obinit.cs:3:17:3:17 | 1 | obinit.cs:3:13:3:17 | ... = ... | normal | 1 |
|
||||
| obinit.cs:2:18:2:18 | <object initializer> | obinit.cs:5:23:5:23 | this access | obinit.cs:5:27:5:34 | "source" | normal | 3 |
|
||||
| obinit.cs:2:18:2:18 | <object initializer> | obinit.cs:5:27:5:34 | "source" | obinit.cs:5:23:5:34 | ... = ... | normal | 4 |
|
||||
| obinit.cs:2:18:2:18 | <object initializer> | obinit.cs:3:13:3:17 | ... = ... | obinit.cs:5:23:5:23 | this access | normal | 3 |
|
||||
| obinit.cs:2:18:2:18 | <object initializer> | obinit.cs:3:17:3:17 | 1 | obinit.cs:3:13:3:13 | access to field x | normal | 1 |
|
||||
| obinit.cs:2:18:2:18 | <object initializer> | obinit.cs:5:23:5:23 | access to field s | obinit.cs:5:23:5:34 | ... = ... | normal | 6 |
|
||||
| obinit.cs:2:18:2:18 | <object initializer> | obinit.cs:5:23:5:23 | this access | obinit.cs:5:27:5:34 | "source" | normal | 4 |
|
||||
| obinit.cs:2:18:2:18 | <object initializer> | obinit.cs:5:27:5:34 | "source" | obinit.cs:5:23:5:23 | access to field s | normal | 5 |
|
||||
| obinit.cs:7:16:7:16 | A | obinit.cs:7:16:7:16 | call to constructor Object | obinit.cs:7:20:7:22 | {...} | normal | 2 |
|
||||
| obinit.cs:7:16:7:16 | A | obinit.cs:7:16:7:16 | call to method <object initializer> | obinit.cs:7:16:7:16 | call to constructor Object | normal | 1 |
|
||||
| obinit.cs:7:16:7:16 | A | obinit.cs:7:16:7:16 | this access | obinit.cs:7:16:7:16 | call to method <object initializer> | normal | 0 |
|
||||
|
||||
@@ -31,10 +31,12 @@
|
||||
| ControlFlow.cs:10:9:10:87 | ...; | ControlFlow.cs:10:9:10:86 | Call (unknown target) |
|
||||
| ControlFlow.cs:10:9:10:87 | ...; | ControlFlow.cs:10:9:10:86 | object creation of type <unknown type> |
|
||||
| ControlFlow.cs:10:35:10:86 | { ..., ... } | ControlFlow.cs:5:10:5:10 | exit F (normal) |
|
||||
| ControlFlow.cs:10:37:10:47 | access to array element | ControlFlow.cs:10:37:10:62 | ... = ... |
|
||||
| ControlFlow.cs:10:37:10:62 | ... = ... | ControlFlow.cs:10:79:10:79 | access to local variable v |
|
||||
| ControlFlow.cs:10:51:10:62 | access to field Empty | ControlFlow.cs:10:37:10:62 | ... = ... |
|
||||
| ControlFlow.cs:10:51:10:62 | access to field Empty | ControlFlow.cs:10:37:10:47 | access to array element |
|
||||
| ControlFlow.cs:10:65:10:75 | access to array element | ControlFlow.cs:10:65:10:84 | ... = ... |
|
||||
| ControlFlow.cs:10:65:10:84 | ... = ... | ControlFlow.cs:10:35:10:86 | { ..., ... } |
|
||||
| ControlFlow.cs:10:79:10:79 | access to local variable v | ControlFlow.cs:10:79:10:84 | Call (unknown target) |
|
||||
| ControlFlow.cs:10:79:10:79 | access to local variable v | ControlFlow.cs:10:79:10:84 | access to property (unknown) |
|
||||
| ControlFlow.cs:10:79:10:84 | Call (unknown target) | ControlFlow.cs:10:65:10:84 | ... = ... |
|
||||
| ControlFlow.cs:10:79:10:84 | access to property (unknown) | ControlFlow.cs:10:65:10:84 | ... = ... |
|
||||
| ControlFlow.cs:10:79:10:84 | Call (unknown target) | ControlFlow.cs:10:65:10:75 | access to array element |
|
||||
| ControlFlow.cs:10:79:10:84 | access to property (unknown) | ControlFlow.cs:10:65:10:75 | access to array element |
|
||||
|
||||
11
csharp/ql/test/query-tests/Nullness/ConditionalAccess.cs
Normal file
11
csharp/ql/test/query-tests/Nullness/ConditionalAccess.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
|
||||
class ConditionalAccessTest
|
||||
{
|
||||
void M1(object o)
|
||||
{
|
||||
var t = o?.GetType();
|
||||
Console.WriteLine(t.FullName); // $ Alert[cs/dereferenced-value-may-be-null]
|
||||
}
|
||||
}
|
||||
@@ -51,6 +51,7 @@
|
||||
| C.cs:229:22:229:30 | ... != ... | C.cs:229:22:229:22 | access to local variable s |
|
||||
| C.cs:235:24:235:32 | ... == ... | C.cs:235:24:235:24 | access to local variable s |
|
||||
| C.cs:235:24:235:32 | ... == ... | C.cs:235:29:235:32 | null |
|
||||
| ConditionalAccess.cs:8:17:8:17 | access to parameter o | ConditionalAccess.cs:8:17:8:17 | access to parameter o |
|
||||
| D.cs:28:13:28:25 | ... != ... | D.cs:28:13:28:17 | access to parameter param |
|
||||
| D.cs:38:13:38:21 | ... == ... | D.cs:38:13:38:13 | access to parameter x |
|
||||
| D.cs:39:16:39:24 | ... == ... | D.cs:39:16:39:16 | access to parameter x |
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
| C.cs:203:13:203:13 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | C.cs:185:13:185:13 | s | s | C.cs:204:13:204:20 | ... = ... | this |
|
||||
| C.cs:223:9:223:9 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | C.cs:210:13:210:13 | s | s | C.cs:222:13:222:20 | ... = ... | this |
|
||||
| C.cs:242:13:242:13 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | C.cs:228:16:228:16 | s | s | C.cs:240:24:240:31 | ... = ... | this |
|
||||
| ConditionalAccess.cs:9:27:9:27 | access to local variable t | Variable $@ may be null at this access because of $@ assignment. | ConditionalAccess.cs:8:13:8:13 | t | t | ConditionalAccess.cs:8:13:8:28 | Type t = ... | this |
|
||||
| D.cs:23:9:23:13 | access to parameter param | Variable $@ may be null at this access because of $@ null argument. | D.cs:21:32:21:36 | param | param | D.cs:17:17:17:20 | null | this |
|
||||
| D.cs:32:9:32:13 | access to parameter param | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:26:32:26:36 | param | param | D.cs:28:13:28:25 | ... != ... | this |
|
||||
| D.cs:73:13:73:14 | access to local variable o7 | Variable $@ may be null at this access because of $@ assignment. | D.cs:68:13:68:14 | o7 | o7 | D.cs:68:13:68:34 | String o7 = ... | this |
|
||||
|
||||
@@ -88,7 +88,7 @@ JavaScript/TypeScript
|
||||
* Data flow is now tracked through the :code:`Promise.try` and :code:`Array.prototype.with` functions.
|
||||
* Query :code:`js/index-out-of-bounds` no longer produces a false-positive when a strictly-less-than check overrides a previous less-than-or-equal test.
|
||||
* The query :code:`js/remote-property-injection` now detects property injection vulnerabilities through object enumeration patterns such as :code:`Object.keys()`.
|
||||
* The query "Permissive CORS configuration" (:code:`js/cors-permissive-configuration`) has been promoted from experimental and is now part of the default security suite. Thank you to @maikypedia who `submitted the original experimental query <https://github.com/github/codeql/pull/14342>`__\ !
|
||||
* The query "Permissive CORS configuration" (:code:`js/cors-permissive-configuration`) has been promoted from experimental and is now part of the default security suite. Thank you to @maikypedia who `submitted the original experimental query <https://github.com/github/codeql/pull/14342>`__!
|
||||
|
||||
Python
|
||||
""""""
|
||||
@@ -126,7 +126,7 @@ Golang
|
||||
""""""
|
||||
|
||||
* The second argument of the :code:`CreateTemp` function, from the :code:`os` package, is no longer a path-injection sink due to proper sanitization by Go.
|
||||
* The query "Uncontrolled data used in path expression" (:code:`go/path-injection`) now detects sanitizing a path by adding :code:`os.PathSeparator` or :code:`\` to the beginning.
|
||||
* The query "Uncontrolled data used in path expression" (:code:`go/path-injection`) now detects sanitizing a path by adding :code:`os.PathSeparator` or ``\`` to the beginning.
|
||||
|
||||
Java/Kotlin
|
||||
"""""""""""
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
.. _codeql-cli-2.23.9:
|
||||
|
||||
==========================
|
||||
CodeQL 2.23.9 (2026-01-09)
|
||||
==========================
|
||||
|
||||
.. contents:: Contents
|
||||
:depth: 2
|
||||
:local:
|
||||
:backlinks: none
|
||||
|
||||
This is an overview of changes in the CodeQL CLI and relevant CodeQL query and library packs. For additional updates on changes to the CodeQL code scanning experience, check out the `code scanning section on the GitHub blog <https://github.blog/tag/code-scanning/>`__, `relevant GitHub Changelog updates <https://github.blog/changelog/label/application-security/>`__, `changes in the CodeQL extension for Visual Studio Code <https://marketplace.visualstudio.com/items/GitHub.vscode-codeql/changelog>`__, and the `CodeQL Action changelog <https://github.com/github/codeql-action/blob/main/CHANGELOG.md>`__.
|
||||
|
||||
Security Coverage
|
||||
-----------------
|
||||
|
||||
CodeQL 2.23.9 runs a total of 491 security queries when configured with the Default suite (covering 166 CWE). The Extended suite enables an additional 135 queries (covering 35 more CWE).
|
||||
|
||||
CodeQL CLI
|
||||
----------
|
||||
|
||||
Deprecations
|
||||
~~~~~~~~~~~~
|
||||
|
||||
* Support for Kotlin version 1.6 and 1.7 has been deprecated and will be removed from CodeQL version 2.24.1. Starting with version 2.24.1, users will need to use Kotlin version >= 1.8 to extract Kotlin databases.
|
||||
@@ -11,7 +11,6 @@ A list of queries for each suite and language `is available here <https://docs.g
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
codeql-cli-2.23.9
|
||||
codeql-cli-2.23.8
|
||||
codeql-cli-2.23.7
|
||||
codeql-cli-2.23.6
|
||||
|
||||
@@ -17,7 +17,7 @@ For example, to declare a module ``M`` as private, you could use:
|
||||
|
||||
Note that some annotations act on an entity itself, whilst others act on a particular *name* for the entity:
|
||||
- Act on an **entity**: ``abstract``, ``bindingset``, ``cached``, ``extensible``, ``external``, ``language``,
|
||||
``override``, ``pragma``, and ``transient``
|
||||
``overlay``, ``override``, ``pragma``, and ``transient``
|
||||
- Act on a **name**: ``additional``, ``deprecated``, ``final``, ``library``, ``private``, and ``query``
|
||||
|
||||
For example, if you annotate an entity with ``private``, then only that particular name is
|
||||
@@ -502,6 +502,193 @@ The ``bindingset`` annotation takes a comma-separated list of variables.
|
||||
For more information, see ":ref:`predicate-binding`."
|
||||
- When you annotate a class, each variable must be ``this`` or a field in the class.
|
||||
|
||||
.. _overlay:
|
||||
|
||||
Overlay annotations
|
||||
===================
|
||||
|
||||
Overlay annotations control how predicates behave during **overlay evaluation**, a feature
|
||||
that enables efficient incremental analysis of codebases.
|
||||
|
||||
In overlay evaluation, a *base database* is created from one version of a codebase, and an
|
||||
*overlay database* is created by combining the base database with changes from a newer
|
||||
version (such as a pull request). The goal is to analyze the overlay database as if it
|
||||
were a fully extracted database at the newer commit, while reusing as much cached data
|
||||
from the base database as possible. Ideally, analysis time is proportional to the size
|
||||
of the diff rather than the full codebase.
|
||||
|
||||
To achieve this, predicates are divided into *local* and *global* categories, with global
|
||||
being the default. Local predicates are evaluated independently on base and overlay data,
|
||||
and thus typically take time proportional to the diff size; global predicates operate on
|
||||
the combined data, and thus take time proportional to the full codebase. When a global
|
||||
predicate calls a local predicate, results from both the base and overlay evaluations of
|
||||
the local predicate are combined, with stale base results filtered out through a process
|
||||
called "discarding".
|
||||
|
||||
Overlay evaluation is primarily used internally by GitHub Code Scanning to speed up
|
||||
pull request analysis. Most QL developers do not need to use these annotations directly,
|
||||
but understanding them can help resolve compilation errors that may occur when overlay
|
||||
support is enabled for a language.
|
||||
|
||||
.. note::
|
||||
|
||||
Overlay annotations only affect evaluation when overlay compilation is enabled
|
||||
(via ``compileForOverlayEval: true`` in ``qlpack.yml``) and the evaluator is running
|
||||
in overlay mode. This setting is typically only needed in the language's library pack;
|
||||
custom query packs do not need it. Outside of overlay mode, these annotations are
|
||||
validated but have no effect on evaluation.
|
||||
|
||||
``overlay[local]``
|
||||
------------------
|
||||
|
||||
**Available for**: |modules|, |classes|, |algebraic datatypes|, |type unions|, |characteristic predicates|, |member predicates|, |non-member predicates|
|
||||
|
||||
The ``overlay[local]`` annotation declares that a predicate is local. Local predicates are
|
||||
evaluated separately on base and overlay data and may only depend on other local predicates.
|
||||
The compiler reports an error if a local predicate depends on a global predicate.
|
||||
|
||||
.. code-block:: ql
|
||||
|
||||
// All dependencies are database extensionals, so this can be local
|
||||
overlay[local]
|
||||
predicate stmtInFile(@stmt s, string path) {
|
||||
exists(@file f, @location loc |
|
||||
hasLocation(s, loc) and
|
||||
locations_default(loc, f, _, _, _, _) and
|
||||
files(f, path)
|
||||
)
|
||||
}
|
||||
|
||||
``overlay[local?]``
|
||||
-------------------
|
||||
|
||||
**Available for**: |modules|, |classes|, |algebraic datatypes|, |type unions|, |characteristic predicates|, |member predicates|, |non-member predicates|
|
||||
|
||||
The ``overlay[local?]`` annotation declares that a predicate should be local if all of
|
||||
its dependencies are local, and global otherwise. This is particularly useful in
|
||||
parameterized modules, where different instantiations may have different locality
|
||||
depending on the module parameters.
|
||||
|
||||
.. code-block:: ql
|
||||
|
||||
// Locality depends on whether Expr.getType() and Type.getName() are local
|
||||
overlay[local?]
|
||||
predicate exprTypeName(Expr e, string name) {
|
||||
name = e.getType().getName()
|
||||
}
|
||||
|
||||
``overlay[global]``
|
||||
-------------------
|
||||
|
||||
**Available for**: |modules|, |classes|, |algebraic datatypes|, |type unions|, |characteristic predicates|, |member predicates|, |non-member predicates|
|
||||
|
||||
The ``overlay[global]`` annotation explicitly declares that a predicate is global. This
|
||||
is the default behavior, so this annotation is typically used to override an inherited
|
||||
``overlay[local]`` or ``overlay[local?]`` annotation from an enclosing module or class.
|
||||
See `Annotation inheritance`_ for an example.
|
||||
|
||||
``overlay[caller]``
|
||||
-------------------
|
||||
|
||||
**Available for**: |modules|, |classes|, |algebraic datatypes|, |type unions|, |characteristic predicates|, |member predicates|, |non-member predicates|
|
||||
|
||||
The ``overlay[caller]`` annotation declares that the locality of a predicate depends on
|
||||
its caller. The compiler may internally duplicate the predicate, creating separate local
|
||||
and global versions. Local callers use the local version; global callers use the global
|
||||
version.
|
||||
|
||||
.. code-block:: ql
|
||||
|
||||
overlay[caller]
|
||||
predicate utilityPredicate(int x) {
|
||||
x in [1..100]
|
||||
}
|
||||
|
||||
``overlay[caller?]``
|
||||
--------------------
|
||||
|
||||
**Available for**: |modules|, |classes|, |algebraic datatypes|, |type unions|, |characteristic predicates|, |member predicates|, |non-member predicates|
|
||||
|
||||
The ``overlay[caller?]`` annotation is like ``overlay[caller]``, but only applies if none
|
||||
of the predicate's dependencies are global. If any dependency is global, the predicate
|
||||
becomes global regardless of its callers, and calling it from a local predicate will
|
||||
result in a compilation error. Like ``overlay[local?]``, this is useful in parameterized
|
||||
modules where locality may vary between instantiations.
|
||||
|
||||
``overlay[discard_entity]``
|
||||
---------------------------
|
||||
|
||||
**Available for**: |non-member predicates| (unary predicates on database types only)
|
||||
|
||||
The ``overlay[discard_entity]`` annotation designates an *entity discard predicate*.
|
||||
These predicates identify database entities that should be filtered out from cached base
|
||||
results when combining with overlay results during overlay evaluation.
|
||||
|
||||
Entity discard predicates must be:
|
||||
|
||||
- Unary predicates (taking exactly one argument)
|
||||
- Defined on a database type (a type from the database schema, prefixed with ``@``)
|
||||
- Only dependent on local predicates and other non-discarding predicates
|
||||
|
||||
.. code-block:: ql
|
||||
|
||||
overlay[discard_entity]
|
||||
private predicate discardExpr(@expr e) {
|
||||
exists(string file | discardableExpr(file, e) and overlayChangedFiles(file))
|
||||
}
|
||||
|
||||
overlay[local]
|
||||
private predicate discardableExpr(string file, @expr e) {
|
||||
not isOverlay() and
|
||||
file = getFile(e)
|
||||
}
|
||||
|
||||
overlay[local]
|
||||
predicate isOverlay() { databaseMetadata("isOverlay", "true") }
|
||||
|
||||
Annotation inheritance
|
||||
----------------------
|
||||
|
||||
Overlay annotations can be applied to modules and types, in which case they are
|
||||
inherited by enclosed declarations. Declarations without explicit overlay annotations
|
||||
inherit from their innermost enclosing declaration that has an overlay annotation.
|
||||
|
||||
.. code-block:: ql
|
||||
|
||||
overlay[local?]
|
||||
module M {
|
||||
predicate foo(@expr x) { ... } // Inherits overlay[local?]
|
||||
|
||||
class C extends @expr {
|
||||
predicate bar() { ... } // Inherits overlay[local?]
|
||||
|
||||
overlay[global]
|
||||
predicate baz() { ... } // Explicitly global
|
||||
}
|
||||
}
|
||||
|
||||
Resolving overlay-related errors
|
||||
--------------------------------
|
||||
|
||||
When overlay support is enabled for a language, you may encounter compilation errors in
|
||||
custom QL libraries or queries. Here are common errors and their solutions:
|
||||
|
||||
**"Declaration is annotated overlay[local] but depends on global entity"**
|
||||
|
||||
A predicate marked ``overlay[local]`` (or ``overlay[caller]``) depends on a global predicate.
|
||||
Solutions:
|
||||
|
||||
- Change the annotation to ``overlay[local?]`` (or ``overlay[caller?]``) if the predicate doesn't strictly need to be local
|
||||
- Add appropriate overlay annotations to the dependency chain to make dependencies local
|
||||
- Use the ``forceLocal`` higher-order predicate if you need to call global code from local code (advanced)
|
||||
|
||||
**"Cannot apply forceLocal to relation that is annotated overlay[...]"**
|
||||
|
||||
The ``forceLocal`` higher-order predicate cannot be applied to predicates that have overlay
|
||||
annotations such as ``overlay[local]``, ``overlay[local?]``, ``overlay[caller]``, or
|
||||
``overlay[caller?]``. The input to ``forceLocal`` must be a predicate without such annotations
|
||||
(i.e., a global predicate or one with ``overlay[global]``).
|
||||
|
||||
.. Links to use in substitutions
|
||||
|
||||
.. |classes| replace:: :ref:`classes <classes>`
|
||||
|
||||
@@ -776,6 +776,7 @@ Various kinds of syntax can have *annotations* applied to them. Annotations are
|
||||
argsAnnotation ::= "pragma" "[" ("inline" | "inline_late" | "noinline" | "nomagic" | "noopt" | "assume_small_delta") "]"
|
||||
| "language" "[" "monotonicAggregates" "]"
|
||||
| "bindingset" "[" (variable ( "," variable)*)? "]"
|
||||
| "overlay" "[" ("local" | "local?" | "global" | "caller" | "caller?" | "discard_entity") "]"
|
||||
|
||||
Each simple annotation adds a same-named attribute to the syntactic entity it precedes. For example, if a class is preceded by the ``abstract`` annotation, then the class is said to be abstract.
|
||||
|
||||
@@ -873,6 +874,26 @@ A predicate may have several different binding sets, which can be stated by usin
|
||||
|
||||
The ``bindingset`` pragma is usable with type signatures and predicate signatures, but not with module signatures.
|
||||
|
||||
The parameterized annotation ``overlay`` controls predicate behavior during overlay evaluation, which is a feature for incremental analysis. Overlay annotations apply at the scope level, and are inherited by nested scopes.
|
||||
|
||||
+---------------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+
|
||||
| Overlay | Classes | Characters | Member predicates | Non-member predicates | Imports | Fields | Modules | Aliases |
|
||||
+=====================+=========+============+===================+=======================+=========+========+=========+=========+
|
||||
| ``local`` | yes | yes | yes | yes | | | yes | |
|
||||
+---------------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+
|
||||
| ``local?`` | yes | yes | yes | yes | | | yes | |
|
||||
+---------------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+
|
||||
| ``global`` | yes | yes | yes | yes | | | yes | |
|
||||
+---------------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+
|
||||
| ``caller`` | yes | yes | yes | yes | | | yes | |
|
||||
+---------------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+
|
||||
| ``caller?`` | yes | yes | yes | yes | | | yes | |
|
||||
+---------------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+
|
||||
| ``discard_entity`` | | | | yes | | | | |
|
||||
+---------------------+---------+------------+-------------------+-----------------------+---------+--------+---------+---------+
|
||||
|
||||
The ``overlay[discard_entity]`` annotation is only valid on unary non-member predicates whose argument is a database type.
|
||||
|
||||
QLDoc
|
||||
-----
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ class QLLexer(RegexLexer):
|
||||
# Keywords
|
||||
(r'\b(boolean|date|float|int|string)\b', Keyword.Type),
|
||||
(r'\b(abstract|cached|deprecated|external|final|library|override|private|query'
|
||||
r'|(pragma|language|bindingset)\[\w*(,\s*\w*)*\])\s',
|
||||
r'|(pragma|language|bindingset|overlay)\[\w*\??(,\s*\w*\??)*\])\s',
|
||||
Keyword.Reserved),
|
||||
(words((
|
||||
'and', 'any', 'as', 'asc', 'avg', 'by', 'class','concat', 'count',
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql-go-consistency-queries
|
||||
version: 1.0.40
|
||||
version: 1.0.41-dev
|
||||
groups:
|
||||
- go
|
||||
- queries
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/go-all
|
||||
version: 6.0.0
|
||||
version: 6.0.1-dev
|
||||
groups: go
|
||||
dbscheme: go.dbscheme
|
||||
extractor: go
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/go-queries
|
||||
version: 1.5.4
|
||||
version: 1.5.5-dev
|
||||
groups:
|
||||
- go
|
||||
- queries
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/java-all
|
||||
version: 7.8.4
|
||||
version: 7.8.5-dev
|
||||
groups: java
|
||||
dbscheme: config/semmlecode.dbscheme
|
||||
extractor: java
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/java-queries
|
||||
version: 1.10.5
|
||||
version: 1.10.6-dev
|
||||
groups:
|
||||
- java
|
||||
- queries
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,2 @@
|
||||
description: Sections for databaseMetadata and overlayChangedFiles
|
||||
compatibility: full
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/javascript-all
|
||||
version: 2.6.20
|
||||
version: 2.6.21-dev
|
||||
groups: javascript
|
||||
dbscheme: semmlecode.javascript.dbscheme
|
||||
extractor: javascript
|
||||
|
||||
@@ -1195,11 +1195,23 @@ configLocations(
|
||||
@configLocatable = @config | @configName | @configValue;
|
||||
|
||||
/*- Database metadata -*/
|
||||
|
||||
/**
|
||||
* The CLI will automatically emit applicable tuples for this table,
|
||||
* such as `databaseMetadata("isOverlay", "true")` when building an
|
||||
* overlay database.
|
||||
*/
|
||||
databaseMetadata(
|
||||
string metadataKey: string ref,
|
||||
string value: string ref
|
||||
);
|
||||
|
||||
/*- Overlay support -*/
|
||||
|
||||
/**
|
||||
* The CLI will automatically emit tuples for each new/modified/deleted file
|
||||
* when building an overlay database.
|
||||
*/
|
||||
overlayChangedFiles(
|
||||
string path: string ref
|
||||
);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,2 @@
|
||||
description: Sections for databaseMetadata and overlayChangedFiles
|
||||
compatibility: full
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/javascript-queries
|
||||
version: 2.3.0
|
||||
version: 2.3.1-dev
|
||||
groups:
|
||||
- javascript
|
||||
- queries
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
name: codeql/suite-helpers
|
||||
version: 1.0.40
|
||||
version: 1.0.41-dev
|
||||
groups: shared
|
||||
warnOnImplicitThis: true
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,2 @@
|
||||
description: Sections for databaseMetadata and overlayChangedFiles
|
||||
compatibility: full
|
||||
@@ -40,20 +40,26 @@ externalData(
|
||||
string value : string ref
|
||||
);
|
||||
|
||||
/*- Database metadata -*/
|
||||
|
||||
/**
|
||||
* The CLI will automatically emit applicable tuples for this table,
|
||||
* such as `databaseMetadata("isOverlay", "true")` when building an
|
||||
* overlay database.
|
||||
*/
|
||||
databaseMetadata(
|
||||
string metadataKey: string ref,
|
||||
string value: string ref
|
||||
);
|
||||
|
||||
/*- Overlay support -*/
|
||||
|
||||
/**
|
||||
* The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`,
|
||||
* along with an `overlayChangedFiles` tuple for each new/modified/deleted file,
|
||||
* when building an overlay database, and these can be used by the discard predicates.
|
||||
* The CLI will automatically emit tuples for each new/modified/deleted file
|
||||
* when building an overlay database.
|
||||
*/
|
||||
databaseMetadata(
|
||||
string metadataKey : string ref,
|
||||
string value : string ref
|
||||
);
|
||||
|
||||
overlayChangedFiles(
|
||||
string path : string ref
|
||||
string path: string ref
|
||||
);
|
||||
|
||||
/*- DEPRECATED: Snapshot date -*/
|
||||
|
||||
@@ -62,6 +62,7 @@ def write(nodes, out):
|
||||
|
||||
HEADER = '''/*
|
||||
* This dbscheme is auto-generated by '%s'.
|
||||
* Run "make dbscheme" in python/extractor/ to regenerate.
|
||||
* WARNING: Any modifications to this file will be lost.
|
||||
* Relations can be changed by modifying master.py or
|
||||
* by adding rules to dbscheme.template
|
||||
|
||||
@@ -471,11 +471,10 @@ Definition getUniqueDefinition(Expr use) {
|
||||
not result = TLocalDefinition(use)
|
||||
}
|
||||
|
||||
/** A helper class to get suitable locations for attributes */
|
||||
class NiceLocationExpr extends Expr {
|
||||
/** Gets a textual representation of this element. */
|
||||
override string toString() { result = this.(Expr).toString() }
|
||||
final class FinalExpr = Expr;
|
||||
|
||||
/** A helper class to get suitable locations for attributes */
|
||||
class NiceLocationExpr extends FinalExpr {
|
||||
/**
|
||||
* Holds if this element is at the specified location.
|
||||
* The location spans column `bc` of line `bl` to
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/python-all
|
||||
version: 6.0.0
|
||||
version: 6.0.1-dev
|
||||
groups: python
|
||||
dbscheme: semmlecode.python.dbscheme
|
||||
extractor: python
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* This dbscheme is auto-generated by 'semmle/dbscheme_gen.py'.
|
||||
* Run "make dbscheme" in python/extractor/ to regenerate.
|
||||
* WARNING: Any modifications to this file will be lost.
|
||||
* Relations can be changed by modifying master.py or
|
||||
* by adding rules to dbscheme.template
|
||||
@@ -47,20 +48,26 @@ externalData(
|
||||
string value : string ref
|
||||
);
|
||||
|
||||
/*- Database metadata -*/
|
||||
|
||||
/**
|
||||
* The CLI will automatically emit applicable tuples for this table,
|
||||
* such as `databaseMetadata("isOverlay", "true")` when building an
|
||||
* overlay database.
|
||||
*/
|
||||
databaseMetadata(
|
||||
string metadataKey: string ref,
|
||||
string value: string ref
|
||||
);
|
||||
|
||||
/*- Overlay support -*/
|
||||
|
||||
/**
|
||||
* The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`,
|
||||
* along with an `overlayChangedFiles` tuple for each new/modified/deleted file,
|
||||
* when building an overlay database, and these can be used by the discard predicates.
|
||||
* The CLI will automatically emit tuples for each new/modified/deleted file
|
||||
* when building an overlay database.
|
||||
*/
|
||||
databaseMetadata(
|
||||
string metadataKey : string ref,
|
||||
string value : string ref
|
||||
);
|
||||
|
||||
overlayChangedFiles(
|
||||
string path : string ref
|
||||
string path: string ref
|
||||
);
|
||||
|
||||
/*- DEPRECATED: Snapshot date -*/
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,2 @@
|
||||
description: Sections for databaseMetadata and overlayChangedFiles
|
||||
compatibility: full
|
||||
@@ -3,8 +3,10 @@
|
||||
import python
|
||||
import semmle.python.dataflow.new.DataFlow
|
||||
|
||||
final class FinalAstNode = AstNode;
|
||||
|
||||
/** A looping construct. */
|
||||
abstract class Loop extends AstNode {
|
||||
abstract class Loop extends FinalAstNode {
|
||||
/**
|
||||
* Gets a loop variable of this loop.
|
||||
* For example, `x` and `y` in `for x,y in pairs: print(x+y)`
|
||||
@@ -13,9 +15,9 @@ abstract class Loop extends AstNode {
|
||||
}
|
||||
|
||||
/** A `for` loop. */
|
||||
private class ForLoop extends Loop, For {
|
||||
private class ForLoop extends Loop instanceof For {
|
||||
override Variable getALoopVariable() {
|
||||
this.getTarget() = result.getAnAccess().getParentNode*() and
|
||||
this.(For).getTarget() = result.getAnAccess().getParentNode*() and
|
||||
result.getScope() = this.getScope()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,7 +59,9 @@ predicate ok_to_fail(ImportExpr ie) {
|
||||
os_specific_import(ie) != get_os()
|
||||
}
|
||||
|
||||
class VersionTest extends ControlFlowNode {
|
||||
final class FinalControlFlowNode = ControlFlowNode;
|
||||
|
||||
class VersionTest extends FinalControlFlowNode {
|
||||
VersionTest() {
|
||||
exists(string name |
|
||||
name.matches("%version%") and
|
||||
@@ -70,7 +72,7 @@ class VersionTest extends ControlFlowNode {
|
||||
)
|
||||
}
|
||||
|
||||
override string toString() { result = "VersionTest" }
|
||||
string toString() { result = "VersionTest" }
|
||||
}
|
||||
|
||||
/** A guard on the version of the Python interpreter */
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/python-queries
|
||||
version: 1.7.5
|
||||
version: 1.7.6-dev
|
||||
groups:
|
||||
- python
|
||||
- queries
|
||||
|
||||
@@ -36,5 +36,10 @@ pub fn run(options: Options) -> std::io::Result<()> {
|
||||
},
|
||||
];
|
||||
|
||||
generate(languages, options.dbscheme, options.library)
|
||||
generate(
|
||||
languages,
|
||||
options.dbscheme,
|
||||
options.library,
|
||||
"run 'scripts/create-extractor-pack.sh' in ql/",
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
// CodeQL database schema for QL
|
||||
// Automatically generated from the tree-sitter grammar; do not edit
|
||||
// To regenerate, run 'scripts/create-extractor-pack.sh' in ql/
|
||||
|
||||
/*- Files and folders -*/
|
||||
|
||||
@@ -109,11 +110,23 @@ yaml_locations(unique int locatable: @yaml_locatable ref,
|
||||
@yaml_locatable = @yaml_node | @yaml_error;
|
||||
|
||||
/*- Database metadata -*/
|
||||
|
||||
/**
|
||||
* The CLI will automatically emit applicable tuples for this table,
|
||||
* such as `databaseMetadata("isOverlay", "true")` when building an
|
||||
* overlay database.
|
||||
*/
|
||||
databaseMetadata(
|
||||
string metadataKey: string ref,
|
||||
string value: string ref
|
||||
);
|
||||
|
||||
/*- Overlay support -*/
|
||||
|
||||
/**
|
||||
* The CLI will automatically emit tuples for each new/modified/deleted file
|
||||
* when building an overlay database.
|
||||
*/
|
||||
overlayChangedFiles(
|
||||
string path: string ref
|
||||
);
|
||||
|
||||
@@ -42,6 +42,7 @@ tools: $(BIN_FILES)
|
||||
../target/release/%$(EXE):
|
||||
cd extractor && cargo build --release
|
||||
|
||||
.PHONY: dbscheme
|
||||
dbscheme:
|
||||
cd extractor && cargo build --release
|
||||
../target/release/codeql-extractor-ruby generate --dbscheme ql/lib/ruby.dbscheme --library ql/lib/codeql/ruby/ast/internal/TreeSitter.qll
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,2 @@
|
||||
description: Sections for databaseMetadata and overlayChangedFiles
|
||||
compatibility: full
|
||||
@@ -28,5 +28,10 @@ pub fn run(options: Options) -> std::io::Result<()> {
|
||||
},
|
||||
];
|
||||
|
||||
generate(languages, options.dbscheme, options.library)
|
||||
generate(
|
||||
languages,
|
||||
options.dbscheme,
|
||||
options.library,
|
||||
"run 'make dbscheme' in ql/ruby/",
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/ruby-all
|
||||
version: 5.1.8
|
||||
version: 5.1.9-dev
|
||||
groups: ruby
|
||||
extractor: ruby
|
||||
dbscheme: ruby.dbscheme
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
// CodeQL database schema for Ruby
|
||||
// Automatically generated from the tree-sitter grammar; do not edit
|
||||
// To regenerate, run 'make dbscheme' in ql/ruby/
|
||||
|
||||
/*- Files and folders -*/
|
||||
|
||||
@@ -109,11 +110,23 @@ yaml_locations(unique int locatable: @yaml_locatable ref,
|
||||
@yaml_locatable = @yaml_node | @yaml_error;
|
||||
|
||||
/*- Database metadata -*/
|
||||
|
||||
/**
|
||||
* The CLI will automatically emit applicable tuples for this table,
|
||||
* such as `databaseMetadata("isOverlay", "true")` when building an
|
||||
* overlay database.
|
||||
*/
|
||||
databaseMetadata(
|
||||
string metadataKey: string ref,
|
||||
string value: string ref
|
||||
);
|
||||
|
||||
/*- Overlay support -*/
|
||||
|
||||
/**
|
||||
* The CLI will automatically emit tuples for each new/modified/deleted file
|
||||
* when building an overlay database.
|
||||
*/
|
||||
overlayChangedFiles(
|
||||
string path: string ref
|
||||
);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,2 @@
|
||||
description: Sections for databaseMetadata and overlayChangedFiles
|
||||
compatibility: full
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/ruby-queries
|
||||
version: 1.5.5
|
||||
version: 1.5.6-dev
|
||||
groups:
|
||||
- ruby
|
||||
- queries
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,2 @@
|
||||
description: Sections for databaseMetadata and overlayChangedFiles
|
||||
compatibility: full
|
||||
@@ -0,0 +1,4 @@
|
||||
---
|
||||
category: minorAnalysis
|
||||
---
|
||||
* Added type inference support for the `FnMut(..) -> ..` and `Fn(..) -> ..` traits. They now work in type parameter bounds and are implemented by closures.
|
||||
@@ -143,23 +143,48 @@ class FutureTrait extends Trait {
|
||||
TypeAlias getOutputType() { result = this.(TraitItemNode).getAssocItem("Output") }
|
||||
}
|
||||
|
||||
/** A function trait `FnOnce`, `FnMut`, or `Fn`. */
|
||||
abstract private class AnyFnTraitImpl extends Trait {
|
||||
/** Gets the `Args` type parameter of this trait. */
|
||||
TypeParam getTypeParam() { result = this.getGenericParamList().getGenericParam(0) }
|
||||
}
|
||||
|
||||
final class AnyFnTrait = AnyFnTraitImpl;
|
||||
|
||||
/**
|
||||
* The [`FnOnce` trait][1].
|
||||
*
|
||||
* [1]: https://doc.rust-lang.org/std/ops/trait.FnOnce.html
|
||||
*/
|
||||
class FnOnceTrait extends Trait {
|
||||
class FnOnceTrait extends AnyFnTraitImpl {
|
||||
pragma[nomagic]
|
||||
FnOnceTrait() { this.getCanonicalPath() = "core::ops::function::FnOnce" }
|
||||
|
||||
/** Gets the type parameter of this trait. */
|
||||
TypeParam getTypeParam() { result = this.getGenericParamList().getGenericParam(0) }
|
||||
|
||||
/** Gets the `Output` associated type. */
|
||||
pragma[nomagic]
|
||||
TypeAlias getOutputType() { result = this.(TraitItemNode).getAssocItem("Output") }
|
||||
}
|
||||
|
||||
/**
|
||||
* The [`FnMut` trait][1].
|
||||
*
|
||||
* [1]: https://doc.rust-lang.org/std/ops/trait.FnMut.html
|
||||
*/
|
||||
class FnMutTrait extends AnyFnTraitImpl {
|
||||
pragma[nomagic]
|
||||
FnMutTrait() { this.getCanonicalPath() = "core::ops::function::FnMut" }
|
||||
}
|
||||
|
||||
/**
|
||||
* The [`Fn` trait][1].
|
||||
*
|
||||
* [1]: https://doc.rust-lang.org/std/ops/trait.Fn.html
|
||||
*/
|
||||
class FnTrait extends AnyFnTraitImpl {
|
||||
pragma[nomagic]
|
||||
FnTrait() { this.getCanonicalPath() = "core::ops::function::Fn" }
|
||||
}
|
||||
|
||||
/**
|
||||
* The [`Iterator` trait][1].
|
||||
*
|
||||
|
||||
@@ -3827,16 +3827,29 @@ private Type invokedClosureFnTypeAt(InvokedClosureExpr ce, TypePath path) {
|
||||
_, path, result)
|
||||
}
|
||||
|
||||
/** Gets the path to a closure's return type. */
|
||||
private TypePath closureReturnPath() {
|
||||
result = TypePath::singleton(getDynTraitTypeParameter(any(FnOnceTrait t).getOutputType()))
|
||||
/**
|
||||
* Gets the root type of a closure.
|
||||
*
|
||||
* We model closures as `dyn Fn` trait object types. A closure might implement
|
||||
* only `Fn`, `FnMut`, or `FnOnce`. But since `Fn` is a subtrait of the others,
|
||||
* giving closures the type `dyn Fn` works well in practice -- even if not
|
||||
* entirely accurate.
|
||||
*/
|
||||
private DynTraitType closureRootType() {
|
||||
result = TDynTraitType(any(FnTrait t)) // always exists because of the mention in `builtins/mentions.rs`
|
||||
}
|
||||
|
||||
/** Gets the path to a closure with arity `arity`s `index`th parameter type. */
|
||||
/** Gets the path to a closure's return type. */
|
||||
private TypePath closureReturnPath() {
|
||||
result =
|
||||
TypePath::singleton(TDynTraitTypeParameter(any(FnTrait t), any(FnOnceTrait t).getOutputType()))
|
||||
}
|
||||
|
||||
/** Gets the path to a closure with arity `arity`'s `index`th parameter type. */
|
||||
pragma[nomagic]
|
||||
private TypePath closureParameterPath(int arity, int index) {
|
||||
result =
|
||||
TypePath::cons(TDynTraitTypeParameter(_, any(FnOnceTrait t).getTypeParam()),
|
||||
TypePath::cons(TDynTraitTypeParameter(_, any(FnTrait t).getTypeParam()),
|
||||
TypePath::singleton(getTupleTypeParameter(arity, index)))
|
||||
}
|
||||
|
||||
@@ -3874,9 +3887,7 @@ private Type inferDynamicCallExprType(Expr n, TypePath path) {
|
||||
or
|
||||
// _If_ the invoked expression has the type of a closure, then we propagate
|
||||
// the surrounding types into the closure.
|
||||
exists(int arity, TypePath path0 |
|
||||
ce.getTypeAt(TypePath::nil()).(DynTraitType).getTrait() instanceof FnOnceTrait
|
||||
|
|
||||
exists(int arity, TypePath path0 | ce.getTypeAt(TypePath::nil()) = closureRootType() |
|
||||
// Propagate the type of arguments to the parameter types of closure
|
||||
exists(int index, ArgList args |
|
||||
n = ce and
|
||||
@@ -3900,10 +3911,10 @@ private Type inferClosureExprType(AstNode n, TypePath path) {
|
||||
exists(ClosureExpr ce |
|
||||
n = ce and
|
||||
path.isEmpty() and
|
||||
result = TDynTraitType(any(FnOnceTrait t)) // always exists because of the mention in `builtins/mentions.rs`
|
||||
result = closureRootType()
|
||||
or
|
||||
n = ce and
|
||||
path = TypePath::singleton(TDynTraitTypeParameter(_, any(FnOnceTrait t).getTypeParam())) and
|
||||
path = TypePath::singleton(TDynTraitTypeParameter(_, any(FnTrait t).getTypeParam())) and
|
||||
result.(TupleType).getArity() = ce.getNumberOfParams()
|
||||
or
|
||||
// Propagate return type annotation to body
|
||||
|
||||
@@ -213,7 +213,7 @@ class NonAliasPathTypeMention extends PathTypeMention {
|
||||
// associated types of `Fn` and `FnMut` yet.
|
||||
//
|
||||
// [1]: https://doc.rust-lang.org/reference/paths.html#grammar-TypePathFn
|
||||
exists(FnOnceTrait t, PathSegment s |
|
||||
exists(AnyFnTrait t, PathSegment s |
|
||||
t = resolved and
|
||||
s = this.getSegment() and
|
||||
s.hasParenthesizedArgList()
|
||||
@@ -221,7 +221,7 @@ class NonAliasPathTypeMention extends PathTypeMention {
|
||||
tp = TTypeParamTypeParameter(t.getTypeParam()) and
|
||||
result = s.getParenthesizedArgList().(TypeMention).resolveTypeAt(path)
|
||||
or
|
||||
tp = TAssociatedTypeTypeParameter(t, t.getOutputType()) and
|
||||
tp = TAssociatedTypeTypeParameter(t, any(FnOnceTrait tr).getOutputType()) and
|
||||
(
|
||||
result = s.getRetType().getTypeRepr().(TypeMention).resolveTypeAt(path)
|
||||
or
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/rust-all
|
||||
version: 0.2.4
|
||||
version: 0.2.5-dev
|
||||
groups: rust
|
||||
extractor: rust
|
||||
dbscheme: rust.dbscheme
|
||||
|
||||
@@ -109,11 +109,23 @@ yaml_locations(unique int locatable: @yaml_locatable ref,
|
||||
@yaml_locatable = @yaml_node | @yaml_error;
|
||||
|
||||
/*- Database metadata -*/
|
||||
|
||||
/**
|
||||
* The CLI will automatically emit applicable tuples for this table,
|
||||
* such as `databaseMetadata("isOverlay", "true")` when building an
|
||||
* overlay database.
|
||||
*/
|
||||
databaseMetadata(
|
||||
string metadataKey: string ref,
|
||||
string value: string ref
|
||||
);
|
||||
|
||||
/*- Overlay support -*/
|
||||
|
||||
/**
|
||||
* The CLI will automatically emit tuples for each new/modified/deleted file
|
||||
* when building an overlay database.
|
||||
*/
|
||||
overlayChangedFiles(
|
||||
string path: string ref
|
||||
);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user