Commit Graph

88538 Commits

Author SHA1 Message Date
Owen Mansel-Chan
e4cb4055de Go: update expected node names 2026-07-10 15:21:50 +01:00
Owen Mansel-Chan
740e3a0be0 Use shared CFG getIfInit 2026-07-10 15:21:48 +01:00
Owen Mansel-Chan
e55eecf4a0 Fix lit-init nodes
There was a loop in the definitions which meant nothing ever got made
2026-07-10 15:21:46 +01:00
Owen Mansel-Chan
f9e25f66b7 Fix range loop CFG 2026-07-10 15:21:44 +01:00
Owen Mansel-Chan
cc47cefeac update function-entry additional nodes 2026-07-10 15:21:42 +01:00
Owen Mansel-Chan
73204db045 Restore ExprNode for FuncLit 2026-07-10 15:21:40 +01:00
Owen Mansel-Chan
9d12edb279 Accept change in test output
To determine that test9 can't return normally, you have to use the fact
that test5 can't return normally. This would make CFG construction
recursive, which would be bad for performance. Therefore we accept the
limitation that we cannot detect that test9 can't return normally, and
we change the test output.
2026-07-10 15:21:38 +01:00
Owen Mansel-Chan
433722f242 Fix empty switch statements 2026-07-10 15:21:36 +01:00
Owen Mansel-Chan
6284acc595 Control flow shouldn't enter another callable 2026-07-10 15:21:34 +01:00
Owen Mansel-Chan
15ed3ba140 Fix CFG for return instructions 2026-07-10 15:21:32 +01:00
Owen Mansel-Chan
56dc936581 Produce CFG nodes for more reference expressions, like selector bases 2026-07-10 15:21:30 +01:00
Owen Mansel-Chan
cbad545557 Fix global value numbering calculation 2026-07-10 15:21:28 +01:00
Owen Mansel-Chan
d488b3257a Include receivers in parameter init 2026-07-10 15:21:26 +01:00
Owen Mansel-Chan
3436e6c411 Fix CFG for range loop 2026-07-10 15:21:24 +01:00
Owen Mansel-Chan
e7927d245a Fix CFG for select statements 2026-07-10 15:21:22 +01:00
Owen Mansel-Chan
a6931e38ea Use shared CFG implementation of for loops 2026-07-10 15:21:20 +01:00
Owen Mansel-Chan
7a58784a74 Do not include comments in the CFG 2026-07-10 15:21:18 +01:00
Owen Mansel-Chan
137db516e8 Fix edges to function exit with result variables 2026-07-10 15:21:16 +01:00
Owen Mansel-Chan
d603cd4a21 Tweak getEnclosingCallable 2026-07-10 15:21:14 +01:00
Owen Mansel-Chan
e31965483e Model non-returning functions in CFG 2026-07-10 15:21:12 +01:00
Owen Mansel-Chan
718dad49cf Create cfg node for child of ParenExpr 2026-07-10 15:21:10 +01:00
Owen Mansel-Chan
f8b0c11cff Add go/print-cfg 2026-07-10 15:21:08 +01:00
Owen Mansel-Chan
d79920c0d8 Initial shared CFG library instantiation for Go 2026-07-10 15:21:06 +01:00
Owen Mansel-Chan
2a3be26f70 Incidental fix to CaseClause.getAnExpr() 2026-07-09 16:03:54 +01:00
copilot-swe-agent[bot]
6f93a7189f Initial plan 2026-07-09 16:03:52 +01:00
Florin Coada
747aa452cd Merge pull request #22147 from github/codeql-spark-run-29025431896
Update changelog documentation site for codeql-cli-2.26.0
2026-07-09 15:43:31 +01:00
Taus
989154a105 Merge pull request #22136 from github/tausbn/yeast-translate-with-context
yeast: Add context scoping mechanism
2026-07-09 16:29:54 +02:00
github-actions[bot]
36d0ceb292 update codeql documentation 2026-07-09 14:29:47 +00:00
Jack Nørskov Jørgensen
d5712ef19a Merge pull request #22130 from github/jacknojo/apache_poi_mads
Add MaDs for Apache POI @ bd97feb849ab86670fe5b5513d4066c46b599797
2026-07-09 08:56:54 +02:00
Owen Mansel-Chan
a238aeeb59 Merge pull request #22141 from github/dependabot/go_modules/go/extractor/extractor-dependencies-017d72eac4
Bump golang.org/x/mod from 0.37.0 to 0.38.0 in /go/extractor in the extractor-dependencies group
2026-07-09 07:16:05 +01:00
dependabot[bot]
6da42a2456 Bump golang.org/x/mod
Bumps the extractor-dependencies group in /go/extractor with 1 update: [golang.org/x/mod](https://github.com/golang/mod).


Updates `golang.org/x/mod` from 0.37.0 to 0.38.0
- [Commits](https://github.com/golang/mod/compare/v0.37.0...v0.38.0)

---
updated-dependencies:
- dependency-name: golang.org/x/mod
  dependency-version: 0.38.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: extractor-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-09 03:03:43 +00:00
Tom Hvitved
f4773e9dc2 Merge pull request #22114 from hvitved/type-inference-join
Type inference: Small join-order tweak
2026-07-08 20:19:48 +02:00
Florin Coada
11be07952e Merge pull request #22139 from github/codeql-spark-run-28955698948
Update changelog documentation site for codeql-cli-2.26.0
2026-07-08 17:00:03 +01:00
github-actions[bot]
47ea9b49cc update codeql documentation 2026-07-08 15:46:33 +00:00
Taus
33da3ef74e yeast: Fix typo
Co-authored-by: Jeroen Ketema <93738568+jketema@users.noreply.github.com>
2026-07-08 16:35:01 +02:00
Owen Mansel-Chan
25cd352de7 Merge pull request #22123 from owen-mc/csharp/convert-qlref-tests-to-inline-expectations
C#: Convert qlref tests to inline expectations
2026-07-08 14:47:04 +01:00
Geoffrey White
8bb12d1507 Merge pull request #22005 from github/dependabot/pip/misc/codegen/pip-02f7ad5a4b
Bump the pip group across 2 directories with 2 updates
2026-07-08 14:37:05 +01:00
Tom Hvitved
15c7428593 Address review comment 2026-07-08 15:08:46 +02:00
Owen Mansel-Chan
aba008dcd7 Remove comments "// BAD: but flagged by cs/constant-condition" 2026-07-08 14:00:57 +01:00
Owen Mansel-Chan
7b96f66d34 Also run cs/constant-condition on test for cs/comparison-of-identical-expressions 2026-07-08 14:00:55 +01:00
Taus
9b7a9c3851 yeast: Use clone-and-drop for per-rule context isolation
In order to avoid having context changes bubble up through the tree (or
from one sibling to another) the current framework makes a copy of the
context before calling `translate` recursively, and then restores it
afterwards.

However, this is a bit silly -- after we're done with all of the
translations, there's really no need to restore the context (as it
doesn't get accessed again).

So instead we change it from "save and then restore" to "clone and then
drop". Each rule invocation gets its own copy of the context, and simply
drops it when it's done.
2026-07-08 12:33:36 +00:00
Taus
13510b1ddd yeast: Add BuildCtx::scoped for isolated context modification
A previous commit added a translate_reset method on BuildCtx, which had
the effect of performing a translation in a completely empty context.

One issue with this is that this is an all-or-nothing proposition -- If
you want to preserve _some_ parts of the context, you have to do
something more complicated. Moreover, if you introduce a contextual
value that _should_ be preserved, all of the existing uses of
translate_reset now silently do the wrong thing.

There are two patterns that we want to address. The first one is "modify
the context in some way, then do a translation". If the translation is
the last step of a Rust block, then we don't actually need
translate_reset -- we could just reset the context and then call
`translate`. The fact that the outer context is restored afterwards
means it's okay to make destructive changes to `ctx.user_ctx` -- none of
these changes will persist.

The second pattern is the same, but where we want to do more
translations using the original context, after having performed a
translation with a modified context. In this case, we cannot just
overwrite the context, since that would invalidate the subsequent
translations.

Instead, we introduce a new method `ctx.scoped` which takes a closure as
an argument. With this we can now write

```
ctx.scoped(|ctx| ctx.reset(); ctx.translate(...));
```

and the closure is run with a copy of `ctx` that has a clone of
`user_ctx` on the inside, so no changes will persist.

(You may wonder: why not just clone `ctx` and use the clone? The answer
is that `ctx` owns mutable pointers to the AST etc., and this makes it
awkward to just "clone" it. The closure circumvents this issue nicely,
since it can borrow these pointers internally.)

For now, this rewrite has the same behaviour as the version that used
translate_reset -- we clear the entire `user_ctx`. However, we could
imagine being more fine-grained in this approach, by implementing, say,
SwiftContext::reset_modifiers (which would only affect what modifiers
are currently in the context, leaving everything else as-is).
2026-07-08 12:33:35 +00:00
Taus
8272848620 yeast: Implement IntoIterator for Id as a singleton
There's an awkward divide in yeast between returning a list of nodes or
optional node (both of which are iterable), and returning a single node
(which is not). In practice, we would like all of these cases to be
handled transparently: if a single node is returned, it behaves as if it
were a singleton list containing that node. This gives us a uniform
interface during translation -- no matter what is returned, it will be
an iterable of nodes.

To facilitate this, we make the slightly unorthodox choice of
implementing IntoIterator for Id, with the behaviour detailed above.
2026-07-08 12:33:35 +00:00
Taus
3c3f740a25 Merge pull request #22120 from asgerf/unified/local-scoping
Unified: implement local scoping
2026-07-08 14:33:14 +02:00
Owen Mansel-Chan
85d800f317 Apply suggestions from code review
Co-authored-by: Geoffrey White <40627776+geoffw0@users.noreply.github.com>
2026-07-08 13:02:20 +01:00
Owen Mansel-Chan
134e30260d Merge pull request #22119 from owen-mc/java/fix-tainted-path-pattern-sanitization
Java: fix `@Pattern` sanitization for `java/path-injection`
2026-07-08 11:37:15 +01:00
Owen Mansel-Chan
a16e19a3b1 Merge pull request #22127 from owen-mc/cpp/convert-qlref-inline-expectations
C++: Convert qlref tests to inline expectations
2026-07-08 11:36:35 +01:00
Owen Mansel-Chan
69ed2da241 Merge pull request #22134 from github/workflow/coverage/update
Update CSV framework coverage reports
2026-07-08 11:19:06 +01:00
Jack Nørskov Jørgensen
6c7b9f71d6 Remove main entries 2026-07-08 09:28:47 +02:00
github-actions[bot]
bc966f62e2 Add changed framework coverage reports 2026-07-08 00:38:59 +00:00