Files
codeql/csharp/ql/test/query-tests/Nullness
Tom Hvitved 5ce9b25ec9 C#: Improve CFG for assignments
Write accesses in assignments, such as the access to `x` in `x = 0` are not
evaluated, so they should not have entries in the control flow graph. However,
qualifiers (and indexer arguments) should still be evaluated, for example in

```
x.Foo.Bar = 0;
```

the CFG should be `x --> x.Foo --> 0 --> x.Foo.Bar = 0` (as opposed to
`x --> x.Foo --> x.Foo.Bar --> 0 --> x.Foo.Bar = 0`, prior to this change).

A special case is assignments via acessors (properties, indexers, and event
adders), where we do want to include the access in the control flow graph,
as it represents the accessor call:

```
x.Prop = 0;
```

But instead of `x --> x.set_Prop --> 0 --> x.Prop = 0` the CFG should be
`x --> 0 --> x.set_Prop --> x.Prop = 0`, as the setter is called *after* the
assigned value has been evaluated.

An even more special case is tuple assignments via accessors:

```
(x.Prop1, y.Prop2) = (0, 1);
```

Here the CFG should be
`x --> y --> 0 --> 1 --> x.set_Prop1 --> y.set_Prop2 --> (x.Prop1, y.Prop2) = (0, 1)`.
2019-02-16 19:19:24 +01:00
..
2018-11-30 17:41:31 +01:00
2018-11-30 17:02:05 +01:00
2018-12-07 09:40:49 +01:00
2018-11-30 17:41:31 +01:00
2019-02-16 19:19:24 +01:00
2018-11-30 17:41:31 +01:00
2018-11-30 17:02:05 +01:00
2019-01-18 12:07:22 +01:00
2018-11-30 17:02:05 +01:00
2018-11-30 17:41:31 +01:00
2018-11-30 17:41:31 +01:00
2019-01-18 12:07:22 +01:00
2018-11-30 17:02:05 +01:00