public override void VisitIfThen(ASTIfThen n) { CFlatType condType = CheckSubTree(n.Condition); if (condType is TypeBool) { CheckSubTree(n.Then); } else { ReportError(n.Location, "If statement must evaluate to boolean. Got type '{0}'", TypeToFriendlyName(condType)); } }
public override void VisitIfThen(ASTIfThen n) { Label skipLabel = _gen.DefineLabel(); //evaluate n.Condition.Visit(this); //skip on false _gen.Emit(OpCodes.Brfalse, skipLabel); //walk statements n.Then.Visit(this); //mark label _gen.MarkLabel(skipLabel); }