mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-07 13:39:36 +07:00
IDEA-105064 Is it possible to have even smarter code completion in case of Logger.getLogger(Class)?
This commit is contained in:
@@ -1122,6 +1122,8 @@ public class ExpectedTypesProvider {
|
||||
});
|
||||
if (type != null) return type;
|
||||
}
|
||||
|
||||
final PsiElementFactory factory = JavaPsiFacade.getElementFactory(containingClass.getProject());
|
||||
if ("equals".equals(name)) {
|
||||
final PsiType type = checkMethod(method, CommonClassNames.JAVA_LANG_OBJECT, new NullableFunction<PsiClass, PsiType>() {
|
||||
@Override
|
||||
@@ -1135,7 +1137,7 @@ public class ExpectedTypesProvider {
|
||||
}
|
||||
final PsiClass aClass = PsiTreeUtil.getContextOfType(parent, PsiClass.class, true);
|
||||
if (aClass != null) {
|
||||
return JavaPsiFacade.getInstance(aClass.getProject()).getElementFactory().createType(aClass);
|
||||
return factory.createType(aClass);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
@@ -1156,6 +1158,16 @@ public class ExpectedTypesProvider {
|
||||
}
|
||||
}
|
||||
}
|
||||
if ("Logger".equals(containingClass.getName()) || "Log".equals(containingClass.getName())) {
|
||||
if (parameterType instanceof PsiClassType &&
|
||||
parameterType.equalsToText(CommonClassNames.JAVA_LANG_CLASS)) {
|
||||
PsiClass placeClass = PsiTreeUtil.getContextOfType(argument, PsiClass.class);
|
||||
PsiClass classClass = ((PsiClassType)parameterType).resolve();
|
||||
if (placeClass != null && classClass != null) {
|
||||
return factory.createType(classClass, factory.createType(placeClass));
|
||||
}
|
||||
}
|
||||
}
|
||||
return parameterType;
|
||||
}
|
||||
|
||||
|
||||
@@ -39,6 +39,12 @@ public class ClassLiteralGetter {
|
||||
}
|
||||
|
||||
PsiType classParameter = PsiUtil.substituteTypeParameter(expectedType, CommonClassNames.JAVA_LANG_CLASS, 0, false);
|
||||
if (classParameter == null) {
|
||||
PsiType defaultType = parameters.getDefaultType();
|
||||
if (InheritanceUtil.isInheritor(defaultType, CommonClassNames.JAVA_LANG_CLASS)) {
|
||||
classParameter = PsiUtil.substituteTypeParameter(defaultType, CommonClassNames.JAVA_LANG_CLASS, 0, false);
|
||||
}
|
||||
}
|
||||
|
||||
boolean addInheritors = false;
|
||||
PsiElement position = parameters.getPosition();
|
||||
|
||||
Reference in New Issue
Block a user