/* * Copyright 2013 Guidewire Software, Inc. */ package gw.plugin.ij.lang.psi.impl.resolvers; import com.intellij.psi.PsiElement; import gw.lang.reflect.IPropertyInfo; import gw.lang.reflect.IShadowingType; import gw.lang.reflect.IType; import gw.plugin.ij.lang.psi.api.AbstractFeatureResolver; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class ShadowedFeatureResolver extends AbstractFeatureResolver { @Nullable @Override public PsiElement resolve(@NotNull IPropertyInfo propertyInfo, @NotNull PsiElement context) { IType ownersType = propertyInfo.getOwnersType(); if (ownersType instanceof IShadowingType) { for (IType shadowedType : ((IShadowingType) ownersType).getShadowedTypes()) { PsiElement psiElement = GosuFeatureResolver.resolveProperty(shadowedType, propertyInfo.getName(), context); if (psiElement != null) { return psiElement; } } } return null; } }