package methodfunc

import (
	"reflect"

	"github.com/kataras/iris/context"
)

// buildMethodCall builds the method caller.
// We have repeated code here but it's the only way
// to support more than one input arguments without performance cost compared to previous implementation.
// so it's hard-coded written to check the length of input args and their types.
func buildMethodCall(a *ast) func(ctx context.Context, f reflect.Value) {
	// if func input arguments are more than one then
	// use the Call method (slower).
	return func(ctx context.Context, f reflect.Value) {
		DispatchFuncResult(ctx, f.Call(a.paramValues(ctx)))
	}
}