C#/C++/Java: Unbreak partial data flow support

Partial data flow had a semantic merge conflict with this branch. The
problem is that partial data flow doesn't (and shouldn't) cause the
initial pruning steps to run, but the length-2 access paths depend on
the `consCand` information that comes from that initial pruning. The
solution is to restore the old `AccessPath` class, now called
`PartialAccessPath` for use only by partial data flow.

With this change, partial data flow will in some cases allow more field
flow than non-partial data flow.
This commit is contained in:
Jonas Jensen
2019-09-02 13:54:56 +02:00
parent dec0c3a0ee
commit c3bc9f8575
20 changed files with 1682 additions and 589 deletions

View File

@@ -1,4 +1,14 @@
edges
| A.java:12:5:12:5 | b [post update] [elem, ... (1)] | A.java:13:12:13:12 | b [elem, ... (1)] |
| A.java:12:14:12:18 | src(...) [Object] | A.java:12:5:12:5 | b [post update] [elem, ... (1)] |
| A.java:12:14:12:18 | src(...) [Object] | A.java:12:5:12:18 | ...=... [Object] |
| A.java:13:12:13:12 | b [elem, ... (1)] | A.java:17:13:17:16 | f1(...) [elem, ... (1)] |
| A.java:17:13:17:16 | f1(...) [elem, ... (1)] | A.java:18:8:18:8 | b [elem, ... (1)] |
| A.java:18:8:18:8 | b [elem, ... (1)] | A.java:21:11:21:15 | b [elem, ... (1)] |
#select
| 0 | A.java:12:5:12:5 | b [post update] [elem, ... (1)] |
| 0 | A.java:12:5:12:18 | ...=... [Object] |
| 0 | A.java:13:12:13:12 | b [elem, ... (1)] |
| 1 | A.java:17:13:17:16 | f1(...) [elem, ... (1)] |
| 1 | A.java:18:8:18:8 | b [elem, ... (1)] |
| 2 | A.java:21:11:21:15 | b [elem, ... (1)] |