private EventPattern VisitEventPattern(EventPattern ep)
{
if (ep == null) return null;
if (!currentSelectStatement.visible)
{
this.HandleError(ep, Error.InvalidEventPattern);
return null;
}
ep.direction = this.VisitExpression(ep.direction);
if (ep.direction != null && ep.direction.Type != SystemTypes.Boolean)
{
this.HandleError(ep.direction, Error.BooleanExpressionRequired);
return null;
}
ep.channelNumber = this.VisitExpression(ep.channelNumber);
if (ep.channelNumber != null)
{
if (ep.channelNumber.Type == SystemTypes.UInt8)
{
ep.channelNumber = new BinaryExpression(ep.channelNumber, new MemberBinding(null, SystemTypes.Int32),
NodeType.Castclass, ep.channelNumber.SourceContext);
ep.channelNumber.Type = SystemTypes.Int32;
}
else if (ep.channelNumber.Type != SystemTypes.Int32)
{
this.HandleError(ep.channelNumber, Error.IntegerExpressionRequired);
return null;
}
}
ep.messageType = this.VisitExpression(ep.messageType);
if (ep.messageType != null)
{
if (ep.messageType.Type == SystemTypes.UInt8)
{
ep.messageType = new BinaryExpression(ep.messageType, new MemberBinding(null, SystemTypes.Int32),
NodeType.Castclass, ep.messageType.SourceContext);
ep.messageType.Type = SystemTypes.Int32;
}
else if (ep.messageType.Type != SystemTypes.Int32)
{
this.HandleError(ep.messageType, Error.IntegerExpressionRequired);
return null;
}
}
return ep;
}