Commit 97d2813
committed
C#: Refactor
- Split up the `last` predicate into a non-recursive part `lastNonRec` and a recursive
part `last`.
- Almost all syntactic constructs have a very simple `last` definition; a set of
disjuncts with exactly one recursive call -- those are defined in `lastNonRec`.
- `try` statements and (last) `catch` clauses require multiple recursive calls in
the same disjunct, and are therefore handled in the `last` predicate (as before).
- The benefit is that we only need to take care of the join order in the recursive
call (for non-`try`/`catch` statements) in one place (the predicate `lastRec`),
so we can get rid of many `nomagic`'ed `last`-specialisations.last predicate1 parent bffc330 commit 97d2813
File tree
4 files changed
+419
-493
lines changed- csharp/ql/src/semmle/code/csharp/controlflow
- internal
4 files changed
+419
-493
lines changed
0 commit comments