diff --git a/ql/src/codeql_ql/ast/internal/Module.qll b/ql/src/codeql_ql/ast/internal/Module.qll index 210e7f6b352..2a3eeaeca20 100644 --- a/ql/src/codeql_ql/ast/internal/Module.qll +++ b/ql/src/codeql_ql/ast/internal/Module.qll @@ -186,13 +186,21 @@ private module Cached { predicate resolveModuleExpr(ModuleExpr me, FileOrModule m) { not m = TFile(any(File f | f.getExtension() = "ql")) and not exists(me.getQualifier()) and - definesModule(getEnclosingModule(me).getEnclosing*(), me.getName(), m, _) + exists(ContainerOrModule enclosing, string name | resolveModuleExprHelper(me, enclosing, name) | + definesModule(enclosing.getEnclosing*(), name, m, _) + ) or exists(FileOrModule mid | resolveModuleExpr(me.getQualifier(), mid) and definesModule(mid, me.getName(), m, true) ) } + + pragma[noinline] + private predicate resolveModuleExprHelper(ModuleExpr me, ContainerOrModule enclosing, string name) { + enclosing = getEnclosingModule(me) and + name = me.getName() + } } import Cached