create method from usage: create type params for static methods created in generics classes as class type params won't be accessible (IDEA-87688)

This commit is contained in:
anna
2012-07-05 16:13:21 +02:00
parent 7678df1cbb
commit d18b86df35
3 changed files with 55 additions and 5 deletions
@@ -65,10 +65,10 @@ public class JavaTemplateUtil {
if (!classes.isEmpty()) {
for (PsiClass aClass : classes) {
if (aClass instanceof PsiTypeParameter) {
if (((PsiTypeParameter)aClass).getOwner() instanceof PsiMethod) {
PsiElement element = file.findElementAt(segmentStart);
PsiMethod method = PsiTreeUtil.getParentOfType(element, PsiMethod.class);
if (method != null) {
PsiElement element = file.findElementAt(segmentStart);
PsiMethod method = PsiTreeUtil.getParentOfType(element, PsiMethod.class);
if (method != null) {
if (((PsiTypeParameter)aClass).getOwner() instanceof PsiMethod || method.hasModifierProperty(PsiModifier.STATIC)) {
PsiTypeParameterList paramList = method.getTypeParameterList();
PsiTypeParameter[] params = paramList != null ? paramList.getTypeParameters() : PsiTypeParameter.EMPTY_ARRAY;
for (PsiTypeParameter param : params) {
@@ -76,7 +76,8 @@ public class JavaTemplateUtil {
}
try {
if (paramList == null) {
final PsiTypeParameterList newList = JVMElementFactories.getFactory(method.getLanguage(), project).createTypeParameterList();
final PsiTypeParameterList newList =
JVMElementFactories.getFactory(method.getLanguage(), project).createTypeParameterList();
paramList = (PsiTypeParameterList)method.addAfter(newList, method.getModifierList());
}
paramList.add(aClass.copy());