mirror of
https://github.com/github/codeql.git
synced 2026-05-14 11:19:27 +02:00
These tests consist of various Python constructions (hopefully a somewhat comprehensive set) with specific timestamp annotations scattered throughout. When the tests are run using the Python 3 interpreter, these annotations are checked and compared to the "current timestamp" to see that they are in agreement. This is what makes the tests "self-validating". There are a few different kinds of annotations: the basic `t[4]` style (meaning this is executed at timestamp 4), the `t[dead(4)]` variant (meaning this _would_ happen at timestamp 4, but it is in a dead branch), and `t[never]` (meaning this is never executed at all). In addition to this, there is a query, MissingAnnotations, which checks whether we have applied these annotations maximally. Many expression nodes are not actually annotatable, so there is a sizeable list of excluded nodes for that query.
17 lines
432 B
Plaintext
17 lines
432 B
Plaintext
/**
|
|
* Implementation of the evaluation-order CFG signature using the existing
|
|
* Python control flow graph.
|
|
*/
|
|
|
|
private import python as Py
|
|
import TimerUtils
|
|
|
|
/** Existing Python CFG implementation of the evaluation-order signature. */
|
|
module OldCfg implements EvalOrderCfgSig {
|
|
class CfgNode = Py::ControlFlowNode;
|
|
|
|
class BasicBlock = Py::BasicBlock;
|
|
|
|
CfgNode scopeGetEntryNode(Py::Scope s) { result = s.getEntryNode() }
|
|
}
|