CFG: fix BEGIN and END blocks

This commit is contained in:
Arthur Baars
2020-12-16 09:49:19 +01:00
parent f2fd1c7931
commit 81c907a87a
3 changed files with 22 additions and 8 deletions

View File

@@ -23,10 +23,26 @@ private module CfgScope {
private class BeginBlockScope extends Range, Generated::BeginBlock {
final override string getName() { result = "BEGIN block" }
final override predicate entry(Generated::AstNode first) {
first(this.(Trees::BeginBlockTree).getFirstChildNode(), first)
}
final override predicate exit(Generated::AstNode last, Completion c) {
last(this.(Trees::BeginBlockTree).getLastChildNode(), last, c)
}
}
private class EndBlockScope extends Range, Generated::EndBlock {
final override string getName() { result = "END block" }
final override predicate entry(Generated::AstNode first) {
first(this.(Trees::EndBlockTree).getFirstChildNode(), first)
}
final override predicate exit(Generated::AstNode last, Completion c) {
last(this.(Trees::EndBlockTree).getLastChildNode(), last, c)
}
}
private class MethodScope extends Range, Generated::AstNode {

View File

@@ -274,7 +274,7 @@ module Trees {
override predicate isHidden() { any() }
}
private class BeginBlockTree extends StandardPreOrderTree, BeginBlock {
class BeginBlockTree extends PreOrderTree, PostOrderTree, StandardNode, BeginBlock {
final override AstNode getChildNode(int i) { result = this.getChild(i) }
}
@@ -456,7 +456,7 @@ module Trees {
private class EmptyStatementTree extends LeafTree, EmptyStatement { }
private class EndBlockTree extends StandardPreOrderTree, EndBlock {
class EndBlockTree extends StandardNode, PreOrderTree, PostOrderTree, EndBlock {
final override AstNode getChildNode(int i) { result = this.getChild(i) }
}