@@ -1026,7 +1027,11 @@ class PCSendExpression extends PCExpression
throw({"line":@line,"column":@column,"wholeFile":false,"name":"InvalidType","message":"Values of type #{right} can't be sent over channels for #{left.channelledType}"})ifnotleft.channelledType.isEqual(right)
right
usesSendOrReceiveOperator:->true
usedSendOrReceiveOperators:->
sum=0
forchildin@children
sum+=child.usedSendOrReceiveOperators()
sum+1
###
# @brief Representation of an expression containing a conditional expression.
throw({"line":@line,"column":@column,"wholeFile":false,"name":"InvalidType","message":"Expression to receive from must have a channeled type, not #{type}"})ifnot(typeinstanceofPCTChannelType)
type.channelledType
usesSendOrReceiveOperator:->true
usedSendOrReceiveOperators:->
sum=0
forchildin@children
sum+=child.usedSendOrReceiveOperators()
sum+1
###
# @brief Representation of an expression containing an procedure call.
...
...
@@ -1770,7 +1779,7 @@ class PCCase extends PCNode
###
_getType:(env)->
child.getType(env)forchildin@children
throw({"line":@line,"column":@column,"wholeFile":false,"name":"InvalidType","message":"case condition requires at least one send or receive operation."})if@children.length>1andnot@children[1].usesSendOrReceiveOperator()
throw({"line":@line,"column":@column,"wholeFile":false,"name":"InvalidType","message":"Case condition requires exactly one send or receive operation!"})if@children.length>1and@children[1].usedSendOrReceiveOperators()!=1