Untie JavaTypeSubstitutor.EMPTY from PsiSubstitutor

This commit is contained in:
Alexander Udalov
2013-08-19 19:32:25 +04:00
parent d14a7282ba
commit c64cfd7f76
3 changed files with 35 additions and 6 deletions
@@ -35,6 +35,9 @@ public interface JavaTypeParameter extends JavaClassifier, JavaNamedElement {
@Nullable
JavaTypeParameterListOwner getOwner();
@NotNull
JavaType getType();
@NotNull
JavaTypeProvider getTypeProvider();
}
@@ -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() {
@@ -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<JavaTypeParameter, JavaType> getSubstitutionMap() {
return Collections.emptyMap();
}
@Override
public String toString() {
return "Empty JavaTypeSubstitutor";
}
};
@NotNull
JavaType substitute(@NotNull JavaType type);