Shared: Use shared SuccessorType in shared Cfg and BasicBlock libs.

This commit is contained in:
Anders Schack-Mulligen
2025-08-28 11:03:45 +02:00
parent 4685b4f8a9
commit 144e34c669
22 changed files with 101 additions and 131 deletions

View File

@@ -301,13 +301,9 @@ private class BasicBlockAlias = BasicBlock;
private class EntryBasicBlockAlias = EntryBasicBlock;
private class SuccessorTypeAlias = SuccessorType;
module Cfg implements BB::CfgSig<Location> {
class ControlFlowNode = CfgNode;
class SuccessorType = SuccessorTypeAlias;
class BasicBlock = BasicBlockAlias;
class EntryBasicBlock = EntryBasicBlockAlias;

View File

@@ -46,19 +46,10 @@ private module CfgInput implements CfgShared::InputSig<Location> {
scope.(Impl::CfgScopeImpl).exit(last, c)
}
class SuccessorType = Cfg::SuccessorType;
private class SuccessorType = Cfg::SuccessorType;
SuccessorType getAMatchingSuccessorType(Completion c) { result = c.getAMatchingSuccessorType() }
predicate successorTypeIsSimple(SuccessorType t) { t instanceof Cfg::DirectSuccessor }
predicate successorTypeIsCondition(SuccessorType t) { t instanceof Cfg::ConditionalSuccessor }
predicate isAbnormalExitType(SuccessorType t) {
t instanceof Cfg::ExceptionSuccessor or
t instanceof Cfg::ExitSuccessor
}
private predicate id(Ruby::AstNode node1, Ruby::AstNode node2) { node1 = node2 }
private predicate idOf(Ruby::AstNode node, int id) = equivalenceRelation(id/2)(node, id)