Beispiel #1
0
        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));
            }
        }
Beispiel #2
0
        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);
        }