diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/structure/JavaTypeParameter.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/structure/JavaTypeParameter.java index f0a5fa4d0d8..687f91be5fa 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/structure/JavaTypeParameter.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/structure/JavaTypeParameter.java @@ -35,6 +35,9 @@ public interface JavaTypeParameter extends JavaClassifier, JavaNamedElement { @Nullable JavaTypeParameterListOwner getOwner(); + @NotNull + JavaType getType(); + @NotNull JavaTypeProvider getTypeProvider(); } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/structure/JavaTypeParameterImpl.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/structure/JavaTypeParameterImpl.java index 0c63d9eb250..961396709a4 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/structure/JavaTypeParameterImpl.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/structure/JavaTypeParameterImpl.java @@ -16,10 +16,7 @@ package org.jetbrains.jet.lang.resolve.java.structure; -import com.intellij.psi.PsiClass; -import com.intellij.psi.PsiMethod; -import com.intellij.psi.PsiTypeParameter; -import com.intellij.psi.PsiTypeParameterListOwner; +import com.intellij.psi.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.resolve.name.Name; @@ -74,6 +71,12 @@ public class JavaTypeParameterImpl extends JavaClassifierImpl implements JavaTyp return null; } + @NotNull + @Override + public JavaType getType() { + return JavaTypeImpl.create(JavaPsiFacade.getInstance(getPsi().getProject()).getElementFactory().createType(getPsi())); + } + @Override @NotNull public JavaTypeProvider getTypeProvider() { diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/structure/JavaTypeSubstitutor.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/structure/JavaTypeSubstitutor.java index 65301ca77e8..ac8ef4c1b23 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/structure/JavaTypeSubstitutor.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/structure/JavaTypeSubstitutor.java @@ -16,14 +16,37 @@ package org.jetbrains.jet.lang.resolve.java.structure; -import com.intellij.psi.PsiSubstitutor; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collections; import java.util.Map; public interface JavaTypeSubstitutor { - JavaTypeSubstitutor EMPTY = new JavaTypeSubstitutorImpl(PsiSubstitutor.EMPTY); + JavaTypeSubstitutor EMPTY = new JavaTypeSubstitutor() { + @NotNull + @Override + public JavaType substitute(@NotNull JavaType type) { + return type; + } + + @Nullable + @Override + public JavaType substitute(@NotNull JavaTypeParameter typeParameter) { + return typeParameter.getType(); + } + + @NotNull + @Override + public Map getSubstitutionMap() { + return Collections.emptyMap(); + } + + @Override + public String toString() { + return "Empty JavaTypeSubstitutor"; + } + }; @NotNull JavaType substitute(@NotNull JavaType type);