Anders Schack-Mulligen
924a8eac5c
Java: Improve precision of SuccessorType labels in CFG.
2025-09-12 13:38:21 +02:00
Anders Schack-Mulligen
3815503314
Java: Consolidate Assertions.qll and Preconditions.qll.
2025-09-10 15:42:18 +02:00
Anders Schack-Mulligen
492a5ca087
Java: Add some more exception edges to the CFG to facilitate guard wrappers.
2025-08-08 10:40:07 +02:00
Anders Schack-Mulligen
bc2e7d4e0d
Java: Fix accidental CP in CFG for asserts.
2025-07-18 13:53:15 +02:00
Anders Schack-Mulligen
fbe79e8a52
Java: Add AnnotatedExitNodes to the CFG.
2025-07-17 11:21:26 +02:00
Kasper Svendsen
9d2dd782d9
Merge remote-tracking branch 'github/main' into kaspersv/overlay-java-annotations
2025-06-26 13:18:25 +02:00
Anders Schack-Mulligen
c091fc585b
Java: Account for AssertionError possibly not being extracted.
2025-06-26 11:03:59 +02:00
Anders Schack-Mulligen
1d4c8197ec
Java: Fix assert CFG by properly tagging the false successor.
2025-06-26 10:18:14 +02:00
Kasper Svendsen
c207cfdeb7
Overlay: Add overlay annotations to Java & shared libraries
2025-06-24 10:25:06 +02:00
Anders Schack-Mulligen
6131c680f6
Update java/ql/lib/semmle/code/java/ControlFlowGraph.qll
...
Co-authored-by: Tom Hvitved <hvitved@github.com >
2025-06-13 14:07:46 +02:00
Anders Schack-Mulligen
b3bb71f2e2
Java: Update the CFG for assert statements to make them proper guards.
2025-06-11 15:38:29 +02:00
Owen Mansel-Chan
8e11789186
Restore asStmt, asExpr and asCall to Node
...
It doesn't really make sense to define them in terms of dispatch.
2024-12-12 12:30:01 +00:00
Owen Mansel-Chan
aaa4361120
Rearrange member predicates in ControlFlow::Node
...
Put all the ones which might need to be overrridden by subclasses
together for ease of reading.
2024-12-11 10:34:18 +00:00
Owen Mansel-Chan
79f4f78fc2
Make separate classes for control flow node kinds
...
This puts all the logic of a particular control flow node kind into one
place and makes it easier to add new kinds.
2024-12-11 10:34:16 +00:00
Owen Mansel-Chan
3f5886ef7a
Accept another review suggestion
2024-12-10 15:26:17 +00:00
Owen Mansel-Chan
2da9bfb1a6
Finish renaming getCFGNode to getCfgNode
2024-12-10 15:26:16 +00:00
Owen Mansel-Chan
274281f61e
Apply all suggestions from code review
...
Co-authored-by: Anders Schack-Mulligen <aschackmull@users.noreply.github.com >
2024-12-10 15:26:14 +00:00
Owen Mansel-Chan
0f3dd6d8f1
Java: IPA the CFG
2024-12-10 15:26:11 +00:00
Chris Smowton
f66811048d
Fix next-normal-statement predicate
2024-03-25 16:31:37 +00:00
Chris Smowton
f44becea7f
Implement multiple pattern case and fall-through pattern case support
2024-03-25 16:31:36 +00:00
Chris Smowton
53ca8e5fe9
autoformat
2023-11-30 11:24:07 +00:00
Chris Smowton
633b92da62
Introduce and use SwitchBlock instead of StmtParent for switch-statement-or-expression
2023-11-30 11:24:07 +00:00
Chris Smowton
e50a0eee59
Remove duplicate of expr exception propagation logic
2023-11-30 11:24:07 +00:00
Chris Smowton
6f3bff19cc
Expose getFirstPatternCase, not getPatternCase/2
2023-11-30 11:24:07 +00:00
Chris Smowton
3971817c92
Fix: ensure is a switch block
2023-11-30 11:24:07 +00:00
Chris Smowton
9b5b496462
Avoid quadratic switch case intermediate
2023-11-30 11:24:06 +00:00
Chris Smowton
d1e16ada4c
Tidy up pattern case CFG logic
2023-11-30 11:24:06 +00:00
Chris Smowton
1cb5efa1ec
Simplify last nodes of rule cases
2023-11-30 11:24:06 +00:00
Chris Smowton
aa5f7352e2
Remove fall-through CFG edge for exhaustive switch statements
2023-11-30 11:24:06 +00:00
Chris Smowton
1047a89613
Improve complexity class of getASuccessorSwitchCase
2023-11-30 11:24:06 +00:00
Chris Smowton
6b3080ae92
Allow case null, default to be the first switch case
...
This is consistent with existing treatment of `case null: default:`
2023-11-30 11:24:04 +00:00
Chris Smowton
d2ff1baff0
Replace getDefaultOrNullDefaultCase with getDefaultCase
2023-11-30 11:24:03 +00:00
Chris Smowton
0bb051e08c
First stab at implementing negative type-test logic for pattern-case
2023-11-30 11:24:03 +00:00
Chris Smowton
330a5b8c6c
autoformat ql
2023-11-30 11:24:00 +00:00
Chris Smowton
f037030c26
Adapt instanceof CFG and DFG to general patterns
2023-11-30 11:24:00 +00:00
Chris Smowton
05addde957
Adapt control-flow graph to record patterns
2023-11-30 11:24:00 +00:00
Chris Smowton
daccd04087
Basic extraction of record patterns
2023-11-30 11:23:59 +00:00
Chris Smowton
144218e2f7
Implement switch CFG when there are mixed constant and pattern cases
2023-11-30 11:23:59 +00:00
Chris Smowton
2b16121638
CFG: Support guarded patterns
2023-11-30 11:23:59 +00:00
Chris Smowton
6c990c2cf6
Add pattern-case support and generally debug switch CFGs
...
These were reasonably broken beforehand, due to not taking switch rules into account in enough places, and confusing the expression/statement switch rule distinction with the distinction between switch statements and expressions.
(For example, `switch(x) { 1 -> System.out.println("Hello world") ... }` is a statement, but has a rule expression).
2023-11-30 11:23:58 +00:00
Chris Smowton
f4b45fa511
Support switch cases with binding patterns
2023-11-30 11:23:58 +00:00
Chris Smowton
ac38d4c9c6
Mass rename L/RValue -> VarWrite/Read
2023-10-24 10:58:29 +01:00
Chris Smowton
f552a15aae
Mass-rename MethodAccess -> MethodCall
2023-10-24 10:30:26 +01:00
Anders Schack-Mulligen
917a15647e
Java: Fix CFG for rule statements.
2023-09-28 14:19:36 +02:00
Chris Smowton
a1a7640427
Give ErrorExpr default control flow
...
This prevents a CFG dead-end because of one ErrorExpr
2023-09-14 17:42:00 +01:00
Chuan-kai Lin
ce464a7d69
Remove pragma[assume_small_delta]
2023-06-30 11:09:29 -07:00
Anders Schack-Mulligen
56288eb3d2
Java: Misc performance fixes
2023-03-21 14:26:13 +01:00
Anders Schack-Mulligen
9ebcaf80e7
Java: Fix some join-orders.
2022-10-20 14:23:36 +02:00
Ian Lynagh
8e64978ffd
Kotlin: Autoformat
2022-05-23 14:51:41 +01:00
Ian Lynagh
42da7c6c58
Kotlin: Fix CFG
2022-05-23 11:27:22 +01:00