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); } }
private Stmt IsInst(TypeReference toType) { var expr = new ExprIsInst(this.ctx, this.stack.Pop(), toType); return(this.SsaLocalAssignment(expr)); }
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); }