From 268a6149e3fe4536e4cb17323fc5a5c861a03296 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Tue, 13 Jun 2017 22:03:41 +0300 Subject: [PATCH 1/3] remove paragraph symbol (IDEA-CR-21844) --- .../src/com/intellij/psi/PsiFunctionalExpression.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/java-psi-api/src/com/intellij/psi/PsiFunctionalExpression.java b/java/java-psi-api/src/com/intellij/psi/PsiFunctionalExpression.java index 727e3cfbfe90..48d80d3f083a 100644 --- a/java/java-psi-api/src/com/intellij/psi/PsiFunctionalExpression.java +++ b/java/java-psi-api/src/com/intellij/psi/PsiFunctionalExpression.java @@ -52,7 +52,7 @@ public interface PsiFunctionalExpression extends PsiExpression, Iconable, Naviga * * When a generic functional interface is parameterized by wildcards, there are many different instantiations that could satisfy the wildcard * and produce different function types. Sometimes, it is possible to known from the context, such as the parameter types of a lambda expression, - * which function type is intended (ยง15.27.3). Other times, it is necessary to pick one; in these circumstances, the bounds are used. + * which function type is intended (15.27.3). Other times, it is necessary to pick one; in these circumstances, the bounds are used. */ @Nullable PsiType getGroundTargetType(PsiType functionalInterfaceType); From 3dff91600a5600d58391075cd00aa9e015b7c9e3 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Wed, 14 Jun 2017 11:48:31 +0300 Subject: [PATCH 2/3] redundant code block: compare same overload resolution (IDEA-174288) instead of trying with cast afterwards, don't suggest to remove the block at the first place --- .../codeInspection/RedundantLambdaCodeBlockInspection.java | 5 +++-- .../quickFix/anonymous2lambda/afterSameOverload.java | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/RedundantLambdaCodeBlockInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/RedundantLambdaCodeBlockInspection.java index 0812914d95d3..829872f2010d 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/RedundantLambdaCodeBlockInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/RedundantLambdaCodeBlockInspection.java @@ -87,7 +87,8 @@ public class RedundantLambdaCodeBlockInspection extends BaseJavaBatchLocalInspec if (psiExpression != null && !findCommentsOutsideExpression(body, psiExpression)) { if (LambdaUtil.isExpressionStatementExpression(psiExpression)) { final PsiCall call = LambdaUtil.treeWalkUp(body); - if (call != null && call.resolveMethod() != null) { + PsiMethod oldTarget; + if (call != null && (oldTarget = call.resolveMethod()) != null) { final int offsetInTopCall = body.getTextRange().getStartOffset() - call.getTextRange().getStartOffset(); PsiCall copyCall = LambdaUtil.copyTopLevelCall(call); if (copyCall == null) return null; @@ -96,7 +97,7 @@ public class RedundantLambdaCodeBlockInspection extends BaseJavaBatchLocalInspec final PsiElement parent = codeBlock.getParent(); if (parent instanceof PsiLambdaExpression) { codeBlock.replace(psiExpression); - if (copyCall.resolveMethod() == null || ((PsiLambdaExpression)parent).getFunctionalInterfaceType() == null) { + if (copyCall.resolveMethod() != oldTarget || ((PsiLambdaExpression)parent).getFunctionalInterfaceType() == null) { return null; } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/afterSameOverload.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/afterSameOverload.java index 41c66a5d0019..095483069464 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/afterSameOverload.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/afterSameOverload.java @@ -9,6 +9,8 @@ class A { } public static void main(String[] args) { - submit((Runnable) () -> new A()); + submit(() -> { + new A(); + }); } } \ No newline at end of file From 651767c5f01454475ec4cffb6c46dfb65368706c Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Wed, 14 Jun 2017 12:07:53 +0300 Subject: [PATCH 3/3] diff: fix test follow-up: b6a5faf9a04fb35b0cf64500613754e36ace8839 --- .../intellij/diff/tools/util/BaseSyncScrollable.java | 7 +++---- .../tests/com/intellij/diff/HeavyDiffTestCase.kt | 11 +++++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/platform/diff-impl/src/com/intellij/diff/tools/util/BaseSyncScrollable.java b/platform/diff-impl/src/com/intellij/diff/tools/util/BaseSyncScrollable.java index b70e744515a6..427bcd6ef25f 100644 --- a/platform/diff-impl/src/com/intellij/diff/tools/util/BaseSyncScrollable.java +++ b/platform/diff-impl/src/com/intellij/diff/tools/util/BaseSyncScrollable.java @@ -31,6 +31,8 @@ public abstract class BaseSyncScrollable implements SyncScrollSupport.SyncScroll @Override public int transfer(@NotNull Side baseSide, int line) { + if (line < 0) return -1; + ScrollHelper helper = new ScrollHelper(baseSide, line); processHelper(helper); @@ -43,10 +45,7 @@ public abstract class BaseSyncScrollable implements SyncScrollSupport.SyncScroll if (master2 == line) return slave2; if (master2 < line) return (line - master2) + slave2; - assert master1 != master2; - - return Math.min(slave1 + (line - master1), slave2); // old - //return (line - master1) * (slave2 - slave1) / (master2 - master1) + slave1; // new + return Math.min(slave1 + (line - master1), slave2); } protected static class ScrollHelper { diff --git a/platform/diff-impl/tests/com/intellij/diff/HeavyDiffTestCase.kt b/platform/diff-impl/tests/com/intellij/diff/HeavyDiffTestCase.kt index 281498dce723..d03a7fc3d75d 100644 --- a/platform/diff-impl/tests/com/intellij/diff/HeavyDiffTestCase.kt +++ b/platform/diff-impl/tests/com/intellij/diff/HeavyDiffTestCase.kt @@ -33,10 +33,13 @@ abstract class HeavyDiffTestCase : DiffTestCase() { } override fun tearDown() { - projectFixture?.tearDown() - project = null - - super.tearDown() + try { + project = null + projectFixture?.tearDown() + } + finally { + super.tearDown() + } } override fun runBare() {