/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.internal.gosu.parser;
import gw.lang.parser.TypeVarToTypeMap;
import gw.lang.reflect.IType;
import java.util.Map;
/**
*/
public class ReducedParameterizedDynamicPropertySymbol extends ReducedDynamicPropertySymbol
{
private ReducedDynamicPropertySymbol _delegate;
public ReducedParameterizedDynamicPropertySymbol(ReducedDynamicPropertySymbol delegate, DynamicPropertySymbol dpsDelegate)
{
super( dpsDelegate);
_delegate = delegate;
//setModifierInfo( dpsDelegate.getModifierInfo() );
// getGosuClass().getParseInfo().setModifierInfo(delegate._gosuPropertyInfo, dpsDelegate.getModifierInfo());
setType(getActualType( dpsDelegate.getType(), dpsDelegate.getGosuClass() ));
// setScriptPart( new ScriptPartId( owner, null ) );
}
public ReducedDynamicPropertySymbol getDelegate()
{
return _delegate;
}
private IType getActualType( IType propType, IGosuClassInternal ownerType )
{
if( ownerType.isParameterizedType() )
{
TypeVarToTypeMap actualParamByVarName =TypeLord.mapTypeByVarName( ownerType, ownerType, true );
propType = TypeLord.getActualType( propType, actualParamByVarName, true );
}
return propType;
}
}