Skip to content
Snippets Groups Projects
Commit d27b3ab4 authored by René Schöne's avatar René Schöne
Browse files

still wip, but build succeeds now.

- removed calls to parameterized constructor of CfgEntry (looks like a bug in relast: the constructor without relations is not generated)
parent 394d7e5d
Branches
No related tags found
No related merge requests found
......@@ -13,6 +13,7 @@ CfgException : CfgNode;
CfgMarker : CfgNode;
rel CfgNode.successor* <-> CfgNode.predecessor* ;
rel CfgNode.stmt -> Stmt ;
// ==== legacy stuff ====
/** The CFG entry node. */
......
......@@ -65,7 +65,7 @@ aspect PrintCfgTest {
Set<CfgNode> visited,
Map<CfgNode, String> vars,
Map<String, Integer> nextIds) {
Set<? extends CfgNode> successors = successors();
Collection<? extends CfgNode> successors = successors();
if (successors.size() == 1) {
CfgNode succ = successors.iterator().next();
String nodeName = nextVarName(succ.varName(), nextIds);
......
......@@ -26,8 +26,8 @@ aspect ReusableCfg {
first.cfgSuccessors().forEach(succ -> todo.put(result, succ));
while (!todo.isEmpty()) {
// Stmt current = todo.pop(); // this should be an tuple (node, successor). to set the relation
CfgNode cfgNodeForPredecessor = todo.entrySet().iterator().next();
Stmt current = todo.remove(predecessor);
CfgNode cfgNodeForPredecessor = todo.entrySet().iterator().next().getKey();
Stmt current = todo.remove(cfgNodeForPredecessor);
CfgNode cfgNodeForCurrent;
if (cfgNodes.containsKey(current)) {
......
......@@ -88,18 +88,28 @@ aspect SimpleCFG {
/**
* The entry node in a filtered CFG.
*/
syn lazy CfgEntry BodyDecl.entry() = new CfgEntry(exit());
// syn lazy CfgEntry BodyDecl.entry() = new CfgEntry(exit());
//
// eq MethodDecl.entry() =
// hasBlock()
// ? new CfgEntry(getBlock().entry())
// : new CfgEntry(exit());
//
// eq ConstructorDecl.entry() = new CfgEntry(getBlock().entry());
//
// eq InstanceInitializer.entry() = new CfgEntry(getBlock().entry());
//
// eq StaticInitializer.entry() = new CfgEntry(getBlock().entry());
eq MethodDecl.entry() =
hasBlock()
? new CfgEntry(getBlock().entry())
: new CfgEntry(exit());
syn lazy CfgEntry BodyDecl.entry() = new CfgEntry();
eq ConstructorDecl.entry() = new CfgEntry(getBlock().entry());
eq MethodDecl.entry() = new CfgEntry();
eq InstanceInitializer.entry() = new CfgEntry(getBlock().entry());
eq ConstructorDecl.entry() = new CfgEntry();
eq StaticInitializer.entry() = new CfgEntry(getBlock().entry());
eq InstanceInitializer.entry() = new CfgEntry();
eq StaticInitializer.entry() = new CfgEntry();
/**
* The exit node in a filtered CFG.
......@@ -526,8 +536,10 @@ aspect SimpleCFG {
}
syn lazy CfgEntry LambdaBody.entry();
eq BlockLambdaBody.entry() = new CfgEntry(getBlock().entry());
eq ExprLambdaBody.entry() = new CfgEntry(getExpr().entry());
// eq BlockLambdaBody.entry() = new CfgEntry(getBlock().entry());
// eq ExprLambdaBody.entry() = new CfgEntry(getExpr().entry());
eq BlockLambdaBody.entry() = new CfgEntry();
eq ExprLambdaBody.entry() = new CfgEntry();
syn nta CfgExit LambdaBody.exit() = new CfgExit();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment