diff --git a/ql/src/codeql_ruby/ast/internal/Variable.qll b/ql/src/codeql_ruby/ast/internal/Variable.qll index fdbad09e68a..7177334f62e 100644 --- a/ql/src/codeql_ruby/ast/internal/Variable.qll +++ b/ql/src/codeql_ruby/ast/internal/Variable.qll @@ -5,7 +5,7 @@ private import codeql_ruby.ast.internal.Expr private import codeql_ruby.ast.internal.Method private import codeql_ruby.ast.internal.Pattern -private Generated::AstNode parentOf(Generated::AstNode n) { +Generated::AstNode parentOf(Generated::AstNode n) { exists(Generated::AstNode parent | parent = n.getParent() | if n = diff --git a/ql/src/codeql_ruby/controlflow/internal/ControlFlowGraphImpl.qll b/ql/src/codeql_ruby/controlflow/internal/ControlFlowGraphImpl.qll index 5207043e3c7..91272933774 100644 --- a/ql/src/codeql_ruby/controlflow/internal/ControlFlowGraphImpl.qll +++ b/ql/src/codeql_ruby/controlflow/internal/ControlFlowGraphImpl.qll @@ -33,6 +33,7 @@ private import codeql_ruby.ast.internal.TreeSitter::Generated private import AstNodes +private import codeql_ruby.ast.internal.Variable private import codeql_ruby.controlflow.ControlFlowGraph private import Completion private import SuccessorTypes @@ -146,7 +147,7 @@ module CfgScope { } private AstNode parent(AstNode n) { - result.getAFieldOrChild() = n and + result = parentOf(n) and not n instanceof CfgScope } @@ -1262,7 +1263,7 @@ cached private module Cached { /** Gets the CFG scope of node `n`. */ cached - CfgScope getCfgScope(AstNode n) { result = unique(CfgScope scope | scope = parent+(n)) } + CfgScope getCfgScope(AstNode n) { result = unique(CfgScope scope | scope = parent*(parentOf(n))) } private predicate isAbnormalExitType(SuccessorType t) { t instanceof RaiseSuccessor or t instanceof ExitSuccessor