Commit 2f774e7d authored by Philip Makedonski's avatar Philip Makedonski
Browse files

+ further improvement to handling of variable assignments, related to #72

parent 5736794b
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -67,6 +67,7 @@ import de.ugoe.cs.swe.tTCN3.SetDefNamed
import de.ugoe.cs.swe.tTCN3.SetOfDefNamed
import de.ugoe.cs.swe.tTCN3.UnionDefNamed
import de.ugoe.cs.swe.tTCN3.EnumDefNamed
import de.ugoe.cs.swe.tTCN3.TemplateBody

class DataFlowValidator extends AbstractDeclarativeValidator {
    val ConfigTools configTools = ConfigTools.getInstance;
@@ -636,6 +637,17 @@ class DataFlowValidator extends AbstractDeclarativeValidator {
        }
    }

    protected def void processBody(TemplateBody body, DataFlowHelper dfh) {
        if (body.simple !== null) {
            body.simple.expr.processExpression(dfh)
            if (body.extra !== null) {
                dfh.checkVariableStatus(body.extra.eAllOfType(ReferencedValue))
            }
        } else {
            dfh.checkVariableStatus(body.eAllOfType(ReferencedValue))
        }
    }
    
    protected def void processBasicStatement(BasicStatements basic, DataFlowHelper dfh) {
        if (basic.assign !== null) {
        
@@ -643,7 +655,8 @@ class DataFlowValidator extends AbstractDeclarativeValidator {
            if (basic.assign.expression !== null) {
                basic.assign.expression.processExpression(dfh)
            } else if (basic.assign.body !== null) {
                dfh.checkVariableStatus(basic.assign.body.eAllOfType(ReferencedValue))
                //dfh.checkVariableStatus(basic.assign.body.eAllOfType(ReferencedValue))
                basic.assign.body.processBody(dfh)
            }            
            
            if (basic.assign.extra !== null) {