append qualifier type args in canonical text, e.g. IDEA-60166

This commit is contained in:
Anna Kozlova
2012-11-01 19:08:15 +01:00
parent b4ed390aa7
commit 94f33a1358
4 changed files with 25 additions and 2 deletions
@@ -18,6 +18,7 @@ package com.intellij.psi.impl.source;
import com.intellij.lang.ASTNode;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.util.TextRange;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
import com.intellij.psi.codeStyle.JavaCodeStyleSettingsFacade;
@@ -292,7 +293,13 @@ public class PsiJavaCodeReferenceElementImpl extends CompositePsiElement impleme
name = aClass.getName(); //?
}
final PsiType[] types = getTypeParameters();
if (types.length == 0) return name;
if (types.length == 0) {
final PsiElement qualifier = getQualifier();
if (qualifier instanceof PsiJavaCodeReferenceElement) {
return StringUtil.getQualifiedName(((PsiJavaCodeReferenceElement)qualifier).getCanonicalText(), aClass.getName());
}
return name;
}
final StringBuilder buf = new StringBuilder();
buf.append(name);
@@ -0,0 +1,15 @@
class Node<E> {
public class Details {
public E data;
}
public Details addNode(Node<E> <warning descr="Parameter 'child' is never used">child</warning>) {
return new Details();
}
}
class Test5_1 {
static Node<String>.Details details;
public static void main(String[] args) {
Node<String> stringNode = new Node<String>();
details = <warning descr="Unchecked assignment: 'Node.Details' to 'Node<java.lang.String>.Details'">(Node.Details)stringNode.addNode(new Node<String>())</warning>;
}
}
@@ -20,7 +20,7 @@ class UncheckedCastFalsePositive1<T> {
UncheckedCastFalsePositive1<T> outer = ( UncheckedCastFalsePositive1<T> ) one;
System.out.println(outer);
UncheckedCastFalsePositive1<T>.InnerClass inner = <warning descr="Unchecked cast: 'java.lang.Object' to 'UncheckedCastFalsePositive1.InnerClass'">( UncheckedCastFalsePositive1<T>.InnerClass ) two</warning>;
UncheckedCastFalsePositive1<T>.InnerClass inner = <warning descr="Unchecked cast: 'java.lang.Object' to 'UncheckedCastFalsePositive1<T>.InnerClass'">( UncheckedCastFalsePositive1<T>.InnerClass ) two</warning>;
System.out.println(inner);
}
@@ -167,4 +167,5 @@ public class LightAdvHighlightingJdk7Test extends LightDaemonAnalyzerTestCase {
public void testUncheckedWarning() throws Exception { doTest(true, false); }
public void testUncheckedWarningIDEA59290() throws Exception { doTest(true, false); }
public void testUncheckedWarningIDEA70620() throws Exception { doTest(true, false); }
public void testUncheckedWarningIDEA60166() throws Exception { doTest(true, false); }
}