mirror of
https://github.com/github/codeql.git
synced 2026-02-20 00:43:44 +01:00
Make ModuleDeclarationTree post-order
This commit is contained in:
@@ -603,7 +603,7 @@ module Trees {
|
||||
private class CharacterTree extends LeafTree, CharacterLiteral { }
|
||||
|
||||
private class ClassDeclarationTree extends BodyStmtPostOrderTree, ClassDeclaration {
|
||||
override predicate first(AstNode first) {
|
||||
final override predicate first(AstNode first) {
|
||||
this.firstInner(first)
|
||||
or
|
||||
not exists(this.getAChild(_)) and
|
||||
@@ -952,12 +952,26 @@ module Trees {
|
||||
}
|
||||
}
|
||||
|
||||
private class ModuleDeclarationTree extends BodyStmtPreOrderTree, ModuleDeclaration {
|
||||
private class ModuleDeclarationTree extends BodyStmtPostOrderTree, ModuleDeclaration {
|
||||
final override predicate first(AstNode first) {
|
||||
this.firstInner(first)
|
||||
or
|
||||
not exists(this.getAChild(_)) and
|
||||
first = this
|
||||
}
|
||||
|
||||
final override predicate succ(AstNode pred, AstNode succ, Completion c) {
|
||||
BodyStmtPostOrderTree.super.succ(pred, succ, c)
|
||||
or
|
||||
succ = this and
|
||||
this.lastInner(pred, c)
|
||||
}
|
||||
|
||||
/** Gets the `i`th child in the body of this block. */
|
||||
final override AstNode getBodyChild(int i, boolean rescuable) {
|
||||
result = this.getScopeExpr() and i = 0 and rescuable = false
|
||||
or
|
||||
result = BodyStmtPreOrderTree.super.getBodyChild(i - count(this.getScopeExpr()), rescuable)
|
||||
result = BodyStmtPostOrderTree.super.getBodyChild(i - count(this.getScopeExpr()), rescuable)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user