public IUnboundExpr AcceptTransformer(IUnboundExprTransformer transformer) { Condition = Condition.AcceptTransformer(transformer); ThenBody = ThenBody.AcceptTransformer(transformer); ElseBody = (ElseBody == null) ? null : ElseBody.AcceptTransformer(transformer); return(transformer.Transform(this)); }
public override void ResolveNames(Scope scope, ErrorHandler errorHandler) { Condition.ResolveNames(scope, errorHandler); var newScope = new Scope(scope, this); Body.ResolveNames(newScope, errorHandler); ElseBody?.ResolveNames(newScope, errorHandler); }
public override void CheckTypes(ErrorHandler errorHandler) { if (!Condition.CanConvertTo(PrimTypeName.BOOL, errorHandler)) { errorHandler.AddMessage(Severity.Error, $"Condition must be a boolean", Token); } Body.CheckTypes(errorHandler); ElseBody?.CheckTypes(errorHandler); }
public override bool Equals(object other) { var otherNode = other as IfStmtNode; if (null == otherNode) { return(false); } return(IfExprNode.Equals(otherNode.IfExprNode) && otherNode != null && IfBody.SequenceEqual(otherNode.IfBody) && ElseIfList != null && ElseIfList.SequenceEqual(otherNode.ElseIfList) && ElseBody != null && ElseBody.SequenceEqual(otherNode.ElseBody)); }
public override void VisitChildren(IVisitor visitor) { Condition.Visit(visitor); IfBody.Visit(visitor); ElseBody.Visit(visitor); }