protected override ICode VisitIsInst(ExprIsInst e)
        {
            var ctx     = e.Ctx;
            var mIsInst = ctx.Module.Import(((Func <object, Type, object>)InternalFunctions.IsInst).Method);
            var eType   = new ExprJsTypeVarName(ctx, e.Type);
            var expr    = new ExprCall(ctx, e.Type, mIsInst, null, e.Expr, eType);

            return(expr);
        }
        protected virtual ICode VisitIsInst(ExprIsInst e)
        {
            this.ThrowOnNoOverride();
            var expr = (Expr)this.Visit(e.Expr);

            if (expr != e.Expr)
            {
                return(new ExprIsInst(e.Ctx, expr, e.Type));
            }
            else
            {
                return(e);
            }
        }
Example #3
0
        private Stmt IsInst(TypeReference toType)
        {
            var expr = new ExprIsInst(this.ctx, this.stack.Pop(), toType);

            return(this.SsaLocalAssignment(expr));
        }
Example #4
0
 protected override ICode VisitIsInst(ExprIsInst e)
 {
     throw new InvalidOperationException("This should never occur");
 }
 protected override ICode VisitIsInst(ExprIsInst e)
 {
     this.code.AppendFormat("({0}?)", e.Type);
     this.Visit(e.Expr);
     return(e);
 }