mirror of
https://github.com/github/codeql.git
synced 2026-02-09 03:31:06 +01:00
improve performance of module resolution
This commit is contained in:
committed by
GitHub
parent
b3e23bcc31
commit
4bbd06f51f
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user