mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
java create class from usage: setup super ref for created nested class (IDEA-257288)
GitOrigin-RevId: c5a37a119f50aa3468c74ce621108e00e1168852
This commit is contained in:
committed by
intellij-monorepo-bot
parent
faea4ac0f3
commit
f535bd830e
+6
-2
@@ -328,7 +328,7 @@ public final class CreateFromUsageUtils {
|
||||
if (qualifierElement instanceof PsiClass) {
|
||||
if (!FileModificationService.getInstance().preparePsiElementForWrite(qualifierElement)) return null;
|
||||
|
||||
return WriteAction.compute(() -> createClassInQualifier((PsiClass)qualifierElement, classKind, name, referenceElement));
|
||||
return WriteAction.compute(() -> createClassInQualifier((PsiClass)qualifierElement, classKind, name, referenceElement, superClassName));
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -393,7 +393,8 @@ public final class CreateFromUsageUtils {
|
||||
private static PsiClass createClassInQualifier(PsiClass psiClass,
|
||||
CreateClassKind classKind,
|
||||
String name,
|
||||
PsiJavaCodeReferenceElement referenceElement) {
|
||||
PsiJavaCodeReferenceElement referenceElement,
|
||||
@Nullable String superClassName) {
|
||||
PsiManager manager = psiClass.getManager();
|
||||
PsiElementFactory elementFactory = JavaPsiFacade.getElementFactory(manager.getProject());
|
||||
PsiClass result = classKind == CreateClassKind.INTERFACE ? elementFactory.createInterface(name) :
|
||||
@@ -403,6 +404,9 @@ public final class CreateFromUsageUtils {
|
||||
elementFactory.createEnum(name);
|
||||
CreateFromUsageBaseFix.setupGenericParameters(result, referenceElement);
|
||||
result = (PsiClass)CodeStyleManager.getInstance(manager.getProject()).reformat(result);
|
||||
if (!StringUtil.isEmpty(superClassName)) {
|
||||
setupSuperClassReference(result, superClassName);
|
||||
}
|
||||
return (PsiClass) psiClass.add(result);
|
||||
}
|
||||
|
||||
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
// "Create class 'Foo'" "true"
|
||||
class MyTest {
|
||||
{
|
||||
Class<? extends Throwable> c = Bar.Foo.class;
|
||||
}
|
||||
}
|
||||
|
||||
class Bar {
|
||||
public class Foo extends Throwable {
|
||||
}
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
// "Create class 'Foo'" "true"
|
||||
class MyTest {
|
||||
{
|
||||
Class<? extends Throwable> c = Bar.Fo<caret>o.class;
|
||||
}
|
||||
}
|
||||
|
||||
class Bar {}
|
||||
Reference in New Issue
Block a user