diff --git a/AlgebraicDataflowArchitectureModel/models/RefBug.model b/AlgebraicDataflowArchitectureModel/models/RefBug.model new file mode 100644 index 0000000..e421f6b --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/models/RefBug.model @@ -0,0 +1,19 @@ +init { + constant := 10 + variable := 10 + ans := 20 +} + +channel changeVar { + out variable(cur: Int, change(next: Int)) = next +} + +channel changeConst { + out constant(const: Int, change(next: Int)) = next +} + +channel calcAns { + in variable(curVar: Int, calc(const: Int, nextVar: Int)) = nextVar + ref constant(const: Int, calc(const: Int, var: Int)) + out ans(curAns: Int, calc(const: Int, var: Int)) = var + const +} diff --git a/AlgebraicDataflowArchitectureModel/src/models/dataFlowModel/DataTransferChannel.java b/AlgebraicDataflowArchitectureModel/src/models/dataFlowModel/DataTransferChannel.java index 15e3194..ec3c6f2 100644 --- a/AlgebraicDataflowArchitectureModel/src/models/dataFlowModel/DataTransferChannel.java +++ b/AlgebraicDataflowArchitectureModel/src/models/dataFlowModel/DataTransferChannel.java @@ -1,13 +1,12 @@ package models.dataFlowModel; import java.util.AbstractMap; -import java.util.AbstractMap.SimpleEntry; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Set; import java.util.Map.Entry; +import java.util.Set; import models.algebra.Constant; import models.algebra.Expression; @@ -19,7 +18,9 @@ import models.algebra.UnificationFailed; import models.algebra.ValueUndefined; import models.algebra.Variable; -import models.dataConstraintModel.*; +import models.dataConstraintModel.Channel; +import models.dataConstraintModel.ChannelMember; +import models.dataConstraintModel.ResourcePath; public class DataTransferChannel extends Channel { protected Set inputChannelMembers = null; @@ -506,11 +507,11 @@ Set substitutedPositionsInMessage = new HashSet<>(); Expression messageTerm = referenceMember.getStateTransition().getMessageExpression(); Expression curStateTerm = referenceMember.getStateTransition().getCurStateExpression(); - Expression nextStateTerm = referenceMember.getStateTransition().getNextStateExpression(); +// Expression nextStateTerm = referenceMember.getStateTransition().getNextStateExpression(); HashMap messageVars = messageTerm.getVariables(); for (Entry varEnt: messageVars.entrySet()) { Variable var = varEnt.getValue(); - if (curStateTerm.getVariables().values().contains(var) || nextStateTerm.getVariables().values().contains(var)) { + if (curStateTerm.getVariables().values().contains(var)) { if (messageTerm instanceof Term) { substitutedPositionsInMessage.add(varEnt.getKey()); } else if (messageTerm instanceof Variable) {