From af40fe88a626ed36a2da5ed89938722afccf13e1 Mon Sep 17 00:00:00 2001 From: Dmitry Batkovich Date: Tue, 3 Jun 2014 19:54:25 +0400 Subject: [PATCH] DataPointHolderConversionIntention not supports fields without initializer for conflicts escapings --- .../DataPointHolderConversionIntention.java | 23 +++++++------------ .../junit/dataPointHolders/afterField.java | 2 +- .../junit/dataPointHolders/beforeField.java | 2 +- 3 files changed, 10 insertions(+), 17 deletions(-) diff --git a/plugins/IntentionPowerPak/src/com/siyeh/ipp/junit/DataPointHolderConversionIntention.java b/plugins/IntentionPowerPak/src/com/siyeh/ipp/junit/DataPointHolderConversionIntention.java index 6a5131b2d6b2..841ccab4fb91 100644 --- a/plugins/IntentionPowerPak/src/com/siyeh/ipp/junit/DataPointHolderConversionIntention.java +++ b/plugins/IntentionPowerPak/src/com/siyeh/ipp/junit/DataPointHolderConversionIntention.java @@ -92,24 +92,17 @@ public class DataPointHolderConversionIntention extends PsiElementBaseIntentionA final PsiMethod method = elementFactory.createMethod(codeStyleManager.variableNameToPropertyName(field.getName(), VariableKind.STATIC_FIELD), field.getType()); PsiCodeBlock body = method.getBody(); - if (body == null) { - body = elementFactory.createCodeBlock(); - method.add(body); - } + assert body != null; - if (!(field.getType() instanceof PsiPrimitiveType) || fieldInitializer != null) { - final PsiStatement methodCode = elementFactory - .createStatementFromText(PsiKeyword.RETURN + " " + (fieldInitializer == null ? PsiKeyword.NULL : fieldInitializer.getText()) + ";", - null); - body.add(methodCode); - } + final PsiStatement methodCode = elementFactory.createStatementFromText(PsiKeyword.RETURN + " " + fieldInitializer.getText() + ";", null); + body.add(methodCode); return method; } @Override public boolean isAvailable(@NotNull final Project project, final Editor editor, @NotNull final PsiElement element) { final Pair dataPointsHolder = extractDataPointsHolder(element); - if (dataPointsHolder != null && isConvertibleIfMethod(dataPointsHolder.getFirst())) { + if (dataPointsHolder != null && isConvertible(dataPointsHolder.getFirst())) { final String replaceType = dataPointsHolder.getFirst() instanceof PsiMethod ? "field" : "method"; final String annotation = StringUtil.getShortName(dataPointsHolder.getSecond().getQualifiedName()); setText(String.format(REPLACE_BY_TEMPLATE, annotation, replaceType)); @@ -131,11 +124,11 @@ public class DataPointHolderConversionIntention extends PsiElementBaseIntentionA return annotation == null ? null : Pair.create(holder, annotation); } - private static boolean isConvertibleIfMethod(@NotNull final PsiMember maybeMethod) { - if (!(maybeMethod instanceof PsiMethod)) { - return true; + private static boolean isConvertible(@NotNull final PsiMember member) { + if (!(member instanceof PsiMethod)) { + return ((PsiField)member).getInitializer() != null; } - final PsiMethod method = (PsiMethod)maybeMethod; + final PsiMethod method = (PsiMethod)member; final PsiType returnType = method.getReturnType(); if (returnType == null || returnType.equals(PsiType.VOID) || method.getParameterList().getParametersCount() != 0) { return false; diff --git a/plugins/IntentionPowerPak/test/com/siyeh/ipp/junit/dataPointHolders/afterField.java b/plugins/IntentionPowerPak/test/com/siyeh/ipp/junit/dataPointHolders/afterField.java index b17e1c7263c3..d91f8515a145 100644 --- a/plugins/IntentionPowerPak/test/com/siyeh/ipp/junit/dataPointHolders/afterField.java +++ b/plugins/IntentionPowerPak/test/com/siyeh/ipp/junit/dataPointHolders/afterField.java @@ -3,7 +3,7 @@ class Foo { @org.junit.experimental.theories.DataPoints public static int[] myData() { - return null; + return new int[]{0, 1}; } } \ No newline at end of file diff --git a/plugins/IntentionPowerPak/test/com/siyeh/ipp/junit/dataPointHolders/beforeField.java b/plugins/IntentionPowerPak/test/com/siyeh/ipp/junit/dataPointHolders/beforeField.java index b39c75997ef9..fdefc478caab 100644 --- a/plugins/IntentionPowerPak/test/com/siyeh/ipp/junit/dataPointHolders/beforeField.java +++ b/plugins/IntentionPowerPak/test/com/siyeh/ipp/junit/dataPointHolders/beforeField.java @@ -2,6 +2,6 @@ class Foo { @org.junit.experimental.theories.DataPoints - public static int[] qweMyDataasd; + public static int[] qweMyDataasd = new int[] {0, 1}; } \ No newline at end of file