DotNetWebToolkit.Cil2Js.Output.VisitorJsRewriteSealedVCalls.VisitCall C# (CSharp) Method

VisitCall() protected method

protected VisitCall ( ExprCall e ) : ICode
e DotNetWebToolkit.Cil2Js.Ast.ExprCall
return ICode
        protected override ICode VisitCall(ExprCall e) {
            if (e.IsVirtualCall) {
                var objType = e.Obj.Type.FullResolve(e.Ctx);
                if (objType.Resolve().IsSealed) {
                    // Virtual calls to sealed classes can be rewritten as instance calls
                    var methods = objType.EnumResolvedMethods().ToArray();
                    var instMethod = methods.FirstOrDefault(x => x.MatchMethodOnly(e.CallMethod));
                    if (instMethod != null) {
                        var expr = new ExprCall(e.Ctx, instMethod, e.Obj, e.Args, false);
                        return expr;
                    }
                }
            }
            return base.VisitCall(e);
        }
VisitorJsRewriteSealedVCalls