/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.lang.parser;
import gw.lang.reflect.IType;
public interface IResolvingCoercer extends ICoercer
{
/**
* <p>This method should produce a more appropriately parameterized type for the given target type for this
* coercion. This allows a coercion to communicate type information through the coercion process. An example
* is the MetaType-to-Class coercion. MetaType<Foo> should be interpreted as Class<Foo> from a type inference
* perspective, so this give the coercer a chance to let the compiler know so.</p>
*
* <p>If no more appropriate inference type exists, this method should return the <b>source</b> type.</p>
*
* @param target type
* @param source
* @return a possibly more appropriately parameterized type or the source type if not
*/
IType resolveType( IType target, IType source );
}