/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.lang.reflect;
import gw.lang.parser.IScriptPartId;
import gw.util.Pair;
public interface IFunctionType extends IInvocableType
{
public IType getReturnType();
public IType[] getParameterTypes();
/**
* An associated IMethodInfo. Optional.
*/
public IMethodInfo getMethodInfo();
public IFeatureInfo getMethodOrConstructorInfo();
/**
* Formatted signature of the form "<function> ( param-list )"
*/
public String getParamSignature();
public String getParamSignatureForCurrentModule();
public IFunctionType inferParameterizedTypeFromArgTypesAndContextType(IType[] eArgs, IType ctxType);
boolean areParamsCompatible( IFunctionType rhsFunctionType );
IScriptPartId getScriptPart();
/**
* @return a new copy of this IFunctionType with the given parameter and return types
*/
IType newInstance( IType[] paramTypes, IType returnType );
Pair<Long, String> getRetainedMemory();
}