diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/performance/LongQualifierChainInsideLambdaWithOverloads.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/performance/LongQualifierChainInsideLambdaWithOverloads.java new file mode 100644 index 000000000000..46c3f31d5098 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/performance/LongQualifierChainInsideLambdaWithOverloads.java @@ -0,0 +1,34 @@ +import java.util.*; +import java.util.stream.Collectors; + +class MyTest { + static class Builder { + Builder put(int i) { return this;} + Builder put(long i) { return this;} + Builder put(short i) { return this;} + Builder put(double i) { return this;} + Builder put(float i) { return this;} + Builder put(boolean i) { return this;} + Builder put(byte i) { return this;} + Builder put(String i) { return this;} + Builder put(Object i) { return this;} + } + + void addAll(Object o) {} + List addAll(List l) { return l;} + + void m(List list){ + addAll(list.stream().map(it -> new Builder() + .put(it.getBar()) + .put(it.getBar()) + .put(it.getBar()) + .put(it.getBar())) + .collect(Collectors.toList())); + } + + static class Foo { + String getBar() { + return ""; + } + } +} diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/lambda/InferencePerformanceTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/lambda/InferencePerformanceTest.java index ce21ece99ec6..e2604544ffe8 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/lambda/InferencePerformanceTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/lambda/InferencePerformanceTest.java @@ -20,6 +20,8 @@ import com.intellij.codeInspection.redundantCast.RedundantCastInspection; import com.intellij.openapi.projectRoots.JavaSdkVersion; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.PsiManager; +import com.intellij.psi.PsiMethodCallExpression; +import com.intellij.psi.util.PsiTreeUtil; import com.intellij.testFramework.IdeaTestUtil; import com.intellij.testFramework.PlatformTestUtil; import one.util.streamex.IntStreamEx; @@ -72,6 +74,17 @@ public class InferencePerformanceTest extends LightDaemonAnalyzerTestCase { public void testLongQualifierChainInsideLambda() { PlatformTestUtil.startPerformanceTest("long qualifier chain", 12000, this::doTest).usesAllCPUCores().assertTiming(); } + + public void _testLongQualifierChainInsideLambdaWithOverloads() { + PlatformTestUtil.startPerformanceTest("long qualifier chain", 12000, () -> { + configureByFile(BASE_PATH + "/" + getTestName(false) + ".java"); + PsiMethodCallExpression callExpression = + PsiTreeUtil.getParentOfType(getFile().findElementAt(getEditor().getCaretModel().getOffset()), PsiMethodCallExpression.class); + assertNotNull(callExpression); + assertNotNull(callExpression.getText(), callExpression.getType()); + }).usesAllCPUCores().assertTiming(); + } + public void testLongQualifierChainInsideLambdaInTypeCast() { enableInspectionTool(new RedundantCastInspection()); @Language("JAVA")