protected bool PerformTransformation( Method.Builder builder, Rewriter <TypeLowering <TType> > rewriter) { var typeConverter = CreateLoweringConverter(builder); // Use a static rewriter phase bool canRewriteBody = rewriter.TryBeginRewrite( builder.Method.Blocks, builder, typeConverter, out var rewriting); // Update return type if (typeConverter.IsTypeDependent(builder.Method.ReturnType)) { builder.UpdateReturnType(typeConverter); } // Update parameter types builder.UpdateParameterTypes(typeConverter); // Apply the lowering logic return(canRewriteBody && rewriting.Rewrite()); }
/// <summary> /// Updates all return types of all affected methods. /// </summary> /// <param name="builder">The current builder.</param> protected sealed override void PrePerformTransformation(Method.Builder builder) { var typeConverter = CreateLoweringConverter(builder); // Update return type if (typeConverter.IsTypeDependent(builder.Method.ReturnType)) { builder.UpdateReturnType(typeConverter); } }