mirror of
https://github.com/github/codeql.git
synced 2026-05-14 11:19:27 +02:00
This looks for nodes annotated with `t[never]` in the test that are reachable in the CFG. This should not happen (it messes with various queries, e.g. the "mixed returns" query), but the test shows that in a few particular cases (involving the `match` statement where all cases contain `return`s), we _do_ have reachable nodes that shouldn't be.
17 lines
474 B
Plaintext
17 lines
474 B
Plaintext
/**
|
|
* Checks that expressions annotated with `t.never` either have no CFG
|
|
* node, or if they do, that the node is not reachable from its scope's
|
|
* entry (including within the same basic block).
|
|
*/
|
|
|
|
import OldCfgImpl
|
|
|
|
private module Utils = EvalOrderCfgUtils<OldCfg>;
|
|
|
|
private import Utils::CfgTests
|
|
|
|
from TimerAnnotation ann
|
|
where neverReachable(ann)
|
|
select ann, "Node annotated with t.never is reachable in $@", ann.getTestFunction(),
|
|
ann.getTestFunction().getName()
|