mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
ensure type parameters contain fully qualified names (IDEA-127714)
This commit is contained in:
@@ -34,6 +34,7 @@ import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.VisibilityUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -253,8 +254,9 @@ public class PsiDiamondTypeImpl extends PsiDiamondType {
|
||||
PsiTypeParameter[] params,
|
||||
PsiJavaCodeReferenceElement reference) {
|
||||
final StringBuilder buf = new StringBuilder();
|
||||
buf.append(constructor != null ? constructor.getModifierList().getText() : containingClass.getModifierList().getText());
|
||||
if (buf.length() > 0) {
|
||||
final String modifier = VisibilityUtil.getVisibilityModifier(constructor != null ? constructor.getModifierList() : containingClass.getModifierList());
|
||||
if (!PsiModifier.PACKAGE_LOCAL.equals(modifier)) {
|
||||
buf.append(modifier);
|
||||
buf.append(" ");
|
||||
}
|
||||
buf.append("static ");
|
||||
@@ -262,8 +264,20 @@ public class PsiDiamondTypeImpl extends PsiDiamondType {
|
||||
buf.append(StringUtil.join(params, new Function<PsiTypeParameter, String>() {
|
||||
@Override
|
||||
public String fun(PsiTypeParameter psiTypeParameter) {
|
||||
final String extendsList = psiTypeParameter.getLanguage().isKindOf(JavaLanguage.INSTANCE) ? psiTypeParameter.getExtendsList().getText() : null;
|
||||
return psiTypeParameter.getName() + (StringUtil.isEmpty(extendsList) ? "" : " " + extendsList);
|
||||
String extendsList = "";
|
||||
if (psiTypeParameter.getLanguage().isKindOf(JavaLanguage.INSTANCE)) {
|
||||
final PsiClassType[] extendsListTypes = psiTypeParameter.getExtendsListTypes();
|
||||
if (extendsListTypes.length > 0) {
|
||||
final Function<PsiClassType, String> canonicalTypePresentationFun = new Function<PsiClassType, String>() {
|
||||
@Override
|
||||
public String fun(PsiClassType type) {
|
||||
return type.getCanonicalText();
|
||||
}
|
||||
};
|
||||
extendsList = " extends " + StringUtil.join(extendsListTypes, canonicalTypePresentationFun, "&");
|
||||
}
|
||||
}
|
||||
return psiTypeParameter.getName() + extendsList;
|
||||
}
|
||||
}, ", "));
|
||||
buf.append(">");
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
import a.A;
|
||||
|
||||
class IDEA127714 {
|
||||
{
|
||||
A<E, String> strings = new A<>(E.class);
|
||||
}
|
||||
}
|
||||
|
||||
enum E {}
|
||||
Binary file not shown.
@@ -20,6 +20,8 @@ import com.intellij.pom.java.LanguageLevel;
|
||||
public class ClsGenerics18HighlightingTest extends ClsGenericsHighlightingTest {
|
||||
public void testIDEA121866() { doTest(); }
|
||||
|
||||
public void testIDEA127714() { doTest(); }
|
||||
|
||||
@Override
|
||||
protected LanguageLevel getLanguageLevel() {
|
||||
return LanguageLevel.JDK_1_8;
|
||||
|
||||
Reference in New Issue
Block a user