diff --git a/plugins/IntentionPowerPak/src/com/siyeh/ipp/functional/ExtractToMethodReferenceIntention.java b/plugins/IntentionPowerPak/src/com/siyeh/ipp/functional/ExtractToMethodReferenceIntention.java index 065bfd5899af..294f6f5074e9 100644 --- a/plugins/IntentionPowerPak/src/com/siyeh/ipp/functional/ExtractToMethodReferenceIntention.java +++ b/plugins/IntentionPowerPak/src/com/siyeh/ipp/functional/ExtractToMethodReferenceIntention.java @@ -130,7 +130,7 @@ public class ExtractToMethodReferenceIntention extends BaseElementAtCaretIntenti targetMethodName + parameters, targetClass); PsiCodeBlock targetMethodBody = emptyMethod.getBody(); LOG.assertTrue(targetMethodBody != null); - targetMethodBody.addRange(elements[0], elements[elements.length - 1]); + if (elements.length > 0) targetMethodBody.addRange(elements[0], elements[elements.length - 1]); PsiMethod method = (PsiMethod)CodeStyleManager.getInstance(project).reformat(JavaCodeStyleManager.getInstance(project).shortenClassReferences(targetClass.add(emptyMethod))); PsiMethodReferenceExpression methodReference = diff --git a/plugins/IntentionPowerPak/test/com/siyeh/ipp/functional/extractToMethodReference/EmptyCodeBlock.java b/plugins/IntentionPowerPak/test/com/siyeh/ipp/functional/extractToMethodReference/EmptyCodeBlock.java new file mode 100644 index 000000000000..bf1787f705eb --- /dev/null +++ b/plugins/IntentionPowerPak/test/com/siyeh/ipp/functional/extractToMethodReference/EmptyCodeBlock.java @@ -0,0 +1,5 @@ +class B { + { + Runnable r = () -> {} ; + } +} \ No newline at end of file diff --git a/plugins/IntentionPowerPak/test/com/siyeh/ipp/functional/extractToMethodReference/EmptyCodeBlock_after.java b/plugins/IntentionPowerPak/test/com/siyeh/ipp/functional/extractToMethodReference/EmptyCodeBlock_after.java new file mode 100644 index 000000000000..8ab95092e18a --- /dev/null +++ b/plugins/IntentionPowerPak/test/com/siyeh/ipp/functional/extractToMethodReference/EmptyCodeBlock_after.java @@ -0,0 +1,8 @@ +class B { + { + Runnable r = B::run; + } + + private static void run() { + } +} \ No newline at end of file diff --git a/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/functional/ExtractToMethodReferenceTest.java b/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/functional/ExtractToMethodReferenceTest.java index 5be4b04af3bf..c594a70339ac 100644 --- a/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/functional/ExtractToMethodReferenceTest.java +++ b/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/functional/ExtractToMethodReferenceTest.java @@ -54,6 +54,10 @@ public class ExtractToMethodReferenceTest extends IPPTestCase { assertIntentionNotAvailable(); } + public void testEmptyCodeBlock() throws Exception { + doTest(); + } + public void testUsedLocalVariables() throws Exception { assertIntentionNotAvailable(); }