diff --git a/python/ql/lib/semmle/python/AstExtended.qll b/python/ql/lib/semmle/python/AstExtended.qll index 0906e5a7640..63c7660ee6d 100644 --- a/python/ql/lib/semmle/python/AstExtended.qll +++ b/python/ql/lib/semmle/python/AstExtended.qll @@ -18,11 +18,7 @@ abstract class AstNode extends AstNode_ { * NOTE: For some statements and other purely syntactic elements, * there may not be a `ControlFlowNode` */ - cached - ControlFlowNode getAFlowNode() { - Stages::AST::ref() and - py_flow_bb_node(result, this, _, _) - } + ControlFlowNode getAFlowNode() { py_flow_bb_node(result, this, _, _) } /** Gets the location for this AST node */ cached @@ -58,11 +54,7 @@ abstract class AstNode extends AstNode_ { } /** Whether this contains `inner` syntactically */ - cached - predicate contains(AstNode inner) { - Stages::AST::ref() and - this.getAChildNode+() = inner - } + predicate contains(AstNode inner) { this.getAChildNode+() = inner } pragma[noinline] private predicate containsInScope(AstNode inner, Scope scope) { diff --git a/python/ql/lib/semmle/python/Flow.qll b/python/ql/lib/semmle/python/Flow.qll index 2d61b8e73c7..0a489e55326 100755 --- a/python/ql/lib/semmle/python/Flow.qll +++ b/python/ql/lib/semmle/python/Flow.qll @@ -194,9 +194,7 @@ class ControlFlowNode extends @py_flow_node { BasicBlock getBasicBlock() { result.contains(this) } /** Gets the scope containing this flow node */ - cached Scope getScope() { - Stages::AST::ref() and if this.getNode() instanceof Scope then /* Entry or exit node */ diff --git a/python/ql/lib/semmle/python/internal/CachedStages.qll b/python/ql/lib/semmle/python/internal/CachedStages.qll index 9f08394ed3d..65ed9cda6d6 100644 --- a/python/ql/lib/semmle/python/internal/CachedStages.qll +++ b/python/ql/lib/semmle/python/internal/CachedStages.qll @@ -76,10 +76,6 @@ module Stages { or exists(any(AstExtended::AstNode n).getParentNode()) or - any(AstExtended::AstNode n).contains(_) - or - exists(any(AstExtended::AstNode n).getAFlowNode()) - or exists(any(PyFlow::BasicBlock b).getImmediateDominator()) or any(PyFlow::BasicBlock b).strictlyDominates(_) @@ -170,8 +166,6 @@ module Stages { exists(any(Flow::ControlFlowNode c).toString()) or exists(any(ObjectInternal::ObjectInternal o).toString()) - or - exists(any(ObjectAPI::Value::named(_))) } } diff --git a/python/ql/lib/semmle/python/objects/ObjectAPI.qll b/python/ql/lib/semmle/python/objects/ObjectAPI.qll index c9857737734..f47244a74c2 100644 --- a/python/ql/lib/semmle/python/objects/ObjectAPI.qll +++ b/python/ql/lib/semmle/python/objects/ObjectAPI.qll @@ -10,7 +10,6 @@ private import semmle.python.pointsto.PointsTo private import semmle.python.pointsto.PointsToContext private import semmle.python.pointsto.MRO private import semmle.python.types.Builtins -private import semmle.python.internal.CachedStages /* * Use the term `ObjectSource` to refer to DB entity. Either a CFG node @@ -264,9 +263,7 @@ module Value { * object of that name. * For example `Value::named("len")` is the `Value` representing the `len` built-in function. */ - cached Value named(string name) { - Stages::DataFlow::ref() and exists(string modname, string attrname | name = modname + "." + attrname | result = Module::named(modname).attr(attrname) )