From a9725caf48bef7b2efce9152b47d99cc5fe96973 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Wed, 14 Jan 2015 17:25:50 +0100 Subject: [PATCH] preserve generics signature on inner class make static fix (IDEA-135223) --- .../memory/InnerClassMayBeStaticInspection.java | 6 ++++-- .../PreserveGenericSignature.after.java | 16 ++++++++++++++++ .../PreserveGenericSignature.java | 16 ++++++++++++++++ .../memory/InnerClassMayBeStaticFixTest.java | 6 ++---- 4 files changed, 38 insertions(+), 6 deletions(-) create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/memory/inner_class_static/PreserveGenericSignature.after.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/memory/inner_class_static/PreserveGenericSignature.java diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/memory/InnerClassMayBeStaticInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/memory/InnerClassMayBeStaticInspection.java index 6db808eb729d..751ce0a416f2 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/memory/InnerClassMayBeStaticInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/memory/InnerClassMayBeStaticInspection.java @@ -111,8 +111,10 @@ public class InnerClassMayBeStaticInspection extends BaseInspection { if (argumentList == null) { continue; } - final PsiExpression expression = - factory.createExpressionFromText("new " + classReference.getQualifiedName() + argumentList.getText(), innerClass); + final PsiReferenceParameterList parameterList = classReference.getParameterList(); + final String genericParameters = parameterList != null ? parameterList.getText() : ""; + final PsiExpression expression = factory + .createExpressionFromText("new " + classReference.getQualifiedName() + genericParameters + argumentList.getText(), innerClass); codeStyleManager.shortenClassReferences(newExpression.replace(expression)); } final PsiModifierList modifiers = innerClass.getModifierList(); diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/memory/inner_class_static/PreserveGenericSignature.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/memory/inner_class_static/PreserveGenericSignature.after.java new file mode 100644 index 000000000000..47e556e9804b --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/memory/inner_class_static/PreserveGenericSignature.after.java @@ -0,0 +1,16 @@ +class IdeaTest { + + public void test(){ + print(new InnerClass().foo(Integer.valueOf(1))); + } + + public void print(Integer foo){ + System.out.println(foo); + } + + static class InnerClass{ + public T foo(T bar){ + return bar; + } + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/memory/inner_class_static/PreserveGenericSignature.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/memory/inner_class_static/PreserveGenericSignature.java new file mode 100644 index 000000000000..30c074c91e8e --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/memory/inner_class_static/PreserveGenericSignature.java @@ -0,0 +1,16 @@ +class IdeaTest { + + public void test(){ + print(new InnerClass().foo(Integer.valueOf(1))); + } + + public void print(Integer foo){ + System.out.println(foo); + } + + class InnerClass{ + public T foo(T bar){ + return bar; + } + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/memory/InnerClassMayBeStaticFixTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/memory/InnerClassMayBeStaticFixTest.java index 49a855ed605f..465427174cc4 100644 --- a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/memory/InnerClassMayBeStaticFixTest.java +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/memory/InnerClassMayBeStaticFixTest.java @@ -33,8 +33,6 @@ public class InnerClassMayBeStaticFixTest extends IGQuickFixesTestCase { } public void testSimple() { doTest(); } - - public void testAnonymousInside() { - doTest(); - } + public void testAnonymousInside() { doTest(); } + public void testPreserveGenericSignature() { doTest(); } }