IDEA-221376 IntelliJ generates unnecessary cast with raw type

GitOrigin-RevId: 47578006a2766c17c6af8833085419a463a0e3c9
This commit is contained in:
peter
2019-09-30 11:19:45 +02:00
committed by intellij-monorepo-bot
parent bb7a79b54a
commit 9dc70cc524
4 changed files with 23 additions and 5 deletions

View File

@@ -30,10 +30,7 @@ import com.intellij.psi.search.PsiElementProcessorAdapter;
import com.intellij.psi.search.SearchScope;
import com.intellij.psi.search.searches.ClassInheritorsSearch;
import com.intellij.psi.search.searches.ReferencesSearch;
import com.intellij.psi.util.CachedValueProvider;
import com.intellij.psi.util.CachedValuesManager;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtil;
import com.intellij.psi.util.*;
import com.intellij.util.ArrayUtil;
import com.intellij.util.BitUtil;
import com.intellij.util.containers.ContainerUtil;
@@ -358,7 +355,7 @@ public class GuessManagerImpl extends GuessManager {
PsiClass typeClass = PsiUtil.resolveClassInType(t);
return typeClass == null || PsiUtil.isAccessible(typeClass, expr, null);
});
if (result.equals(Collections.singletonList(expr.getType()))) {
if (result.equals(Collections.singletonList(TypeConversionUtil.erasure(expr.getType())))) {
return Collections.emptyList();
}
return result;

View File

@@ -0,0 +1,10 @@
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Future;
class Foo {
{
List<? extends List<? extends Future<?>>> list = new ArrayList<>();
list.stream().map(l -> l.stream().map(f -> f.isD<caret>
}
}

View File

@@ -0,0 +1,10 @@
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Future;
class Foo {
{
List<? extends List<? extends Future<?>>> list = new ArrayList<>();
list.stream().map(l -> l.stream().map(f -> f.isDone()<caret>
}
}

View File

@@ -71,6 +71,7 @@ class NormalCompletionDfaTest extends NormalCompletionTestCase {
void testInstanceOfDisjunctionDeep() { doTest() }
void testInstanceOfDisjunctionCircular() { doTest() }
void testAfterGetClass() { doTest() }
void testNoCastForCompatibleCapture() { doTest() }
void testComplexInstanceOfDfa() {
configureByTestName()
myFixture.assertPreferredCompletionItems 0, 'methodFromX', 'methodFromX2', 'methodFromY', 'methodFromY2'