Tom Hvitved
3eb163f656
C#: Account for split SSA definitions in guards library
...
On 03e69e9945 , I updated the guards library to account
for control flow graph splitting. However, the logic that relates SSA qualifiers for
the guard and the guarded expression was not updated accordingly.
2018-11-28 20:00:13 +01:00
Tom Hvitved
1a25f0a068
C#: Add test for guard inside a split CFG block
2018-11-28 19:59:05 +01:00
Tom Hvitved
03e69e9945
C#: Make guards library work with CFG splitting
2018-11-23 15:20:33 +01:00
Tom Hvitved
228189db5a
C#: Add tests for guards inside split CFG blocks
2018-11-23 15:20:27 +01:00
Tom Hvitved
8233e34ba2
C#: Fix Boolean splitting for variables defined in a loop
2018-11-20 21:22:00 +01:00
Tom Hvitved
89d5daa137
C#: Fix Boolean splitting negation bug
2018-11-20 21:22:00 +01:00
Tom Hvitved
841218540e
C#: Add CFG test
...
This test exhibits two issues with Boolean CFG splitting: incorrect handling of
negated variables and incorrect splitting for variables defined inside a loop.
2018-11-20 21:22:00 +01:00
Tom Hvitved
29f163fd4e
C#: Fix guards implications logic
2018-11-08 20:21:34 +01:00
Tom Hvitved
e4aa196c37
C#: Teach guards library about custom null guards
2018-11-08 20:21:34 +01:00
Tom Hvitved
a5dfc10197
C#: Add tests for custom null guards
2018-11-08 20:21:34 +01:00
Tom Hvitved
5921a9ea51
C#: Teach guards library about assertions
2018-11-08 20:21:34 +01:00
Tom Hvitved
0fb7ddc956
C#: Add assertion guard tests
2018-11-08 20:21:34 +01:00
Tom Hvitved
2d25a04a2e
C#: Add test for guard implications logic
2018-11-05 16:47:10 +01:00
Tom Hvitved
f5e6b79add
C#: Address review comments
2018-11-05 16:14:15 +01:00
Tom Hvitved
e76e448953
C#: Unify logic in guards library
...
Unify the logic for Boolean/nullness/matching guards.
2018-10-30 13:15:15 +01:00
Tom Hvitved
a3d74b00e0
C#: Address review comments
2018-10-25 14:15:09 +02:00
Tom Hvitved
515d6b6d26
C#: Detect constantly failing assertions in the CFG
2018-10-19 14:07:40 +02:00
Tom Hvitved
acea4ddfc4
C#: Introduce control flow exit completions
2018-10-19 14:07:35 +02:00
Tom Hvitved
0c1db6afc3
C#: Add more CFG tests
...
Added tests for exits inside `try` statements and constantly failing assertions.
2018-10-19 14:05:30 +02:00
Tom Hvitved
603c3d6a43
C#: Teach null-guards library about pattern matching
2018-10-15 10:55:16 +02:00
Tom Hvitved
e8cd99335a
C#: Simple Boolean control flow graph splitting
2018-09-28 14:59:39 +02:00
Tom Hvitved
d0f63ca303
C#: Introduce SplitKind class
2018-09-28 14:59:39 +02:00
Tom Hvitved
b8caa117f1
C#: Add internal PreBasicBlocks library
2018-09-28 14:59:38 +02:00
calum
cff00506ba
C#: Implementation of case ... when ...: which was not previously handled. Move getCondition to CaseStmt. Implement the CFG and tests.
2018-09-05 17:47:31 +01:00
Tom Hvitved
42faabc552
C#: Rename and restructure control flow graph entities
...
Follow a naming structure similar to the data flow library:
- `ControlFlowNode` -> `ControlFlow::Node`.
- `CallableEntryNode` -> `ControlFlow::Nodes::EntryNode`.
- `CallableExitNode` -> `ControlFlow::Nodes::ExitNode`.
- `ControlFlowEdgeType` -> `ControlFlow::SuccessorType`.
- `ControlFlowEdgeSuccessor` -> `ControlFlow::SuccessorTypes::NormalSuccessor`.
- `ControlFlowEdgeConditional -> ControlFlow::SuccessorTypes::ConditionalSuccessor`.
- `ControlFlowEdgeBoolean` -> `ControlFlow::SuccessorTypes::BooleanSuccessor`.
- `ControlFlowEdgeNullness` -> `ControlFlow::SuccessorTypes::NullnessSuccessor`.
- `ControlFlowEdgeMatching` -> `ControlFlow::SuccessorTypes::MatchingSuccessor`.
- `ControlFlowEdgeEmptiness` -> `ControlFlow::SuccessorTypes::EmptinessSuccessor`.
- `ControlFlowEdgeReturn` -> `ControlFlow::SuccessorTypes::ReturnSuccessor`.
- `ControlFlowEdgeBreak` -> `ControlFlow::SuccessorTypes::BreakSuccessor`.
- `ControlFlowEdgeContinue` -> `ControlFlow::SuccessorTypes::ContinueSuccessor`.
- `ControlFlowEdgeGotoLabel` -> `ControlFlow::SuccessorTypes::GotoLabelSuccessor`.
- `ControlFlowEdgeGotoCase` -> `ControlFlow::SuccessorTypes::GotoCaseSuccessor`.
- `ControlFlowEdgeGotoDefault` -> `ControlFlow::SuccessorTypes::GotoDefaultSuccessor`.
- `ControlFlowEdgeException` -> `ControlFlow::SuccessorTypes::ExceptionSuccessor`
2018-09-05 14:20:26 +02:00
Tom Hvitved
b1451b079e
C#: Add CFG test that mixes finally splitting and catch splitting
2018-08-20 13:10:09 +02:00
Tom Hvitved
91ed111735
C#: Improve CFG for exception handlers
...
Use generic CFG splitting to add a new type of split for exception handlers,
`ExceptionHandlerSplit`, which tags eachs node belonging to a `catch` clause
with the type of exception being caught. This allows for a more accurate CFG
for `try-catch` statements, where exception filters are handled properly.
2018-08-20 13:08:28 +02:00
Tom Hvitved
a705b3afa5
C#: Generic control flow graph splitting
...
Refactor existing logic for splitting control flow nodes belonging to a `finally`
block. A `Split` defines (1) when to enter the split, (2) when to stay in the split,
and (3) when to leave the split. With only these definitions, control flow splitting
is achieved by tagging each control flow element with the set of splits that apply
to it.
2018-08-20 13:04:29 +02:00
Tom Hvitved
1365761f72
C#: Change toString() for FinallySplitControlFlowNode
2018-08-20 09:41:54 +02:00
Tom Hvitved
0edd0057fc
C#: Do not use @kind graph in ql tests
2018-08-17 17:55:13 +02:00
Tom Hvitved
f7a515c8e9
C#: Prune CFG for obviously impossible nullness/matching edges
2018-08-06 13:45:23 -07:00
Tom Hvitved
9a1e148e85
C#: Various minor CFG bug fixes
2018-08-06 13:45:23 -07:00
Tom Hvitved
b161ff195b
C#: Additional CFG tests
2018-08-06 13:45:23 -07:00
Pavel Avgustinov
b55526aa58
QL code and tests for C#/C++/JavaScript.
2018-08-02 17:53:23 +01:00