don't erase generics when choosing a new class name with tab (IDEA-50622)

This commit is contained in:
peter.gromov
2010-11-25 19:35:42 +03:00
parent 92e5c27617
commit 07795c4a42
5 changed files with 40 additions and 5 deletions
@@ -71,8 +71,15 @@ class JavaClassNameInsertHandler implements InsertHandler<JavaPsiClassReferenceE
if (position != null) {
PsiElement parent = position.getParent();
if (parent instanceof PsiJavaCodeReferenceElement && PsiTreeUtil.getParentOfType(position, PsiDocTag.class) != null) {
if (((PsiJavaCodeReferenceElement)parent).isReferenceTo(psiClass)) {
if (parent instanceof PsiJavaCodeReferenceElement) {
final PsiJavaCodeReferenceElement ref = (PsiJavaCodeReferenceElement)parent;
if (PsiTreeUtil.getParentOfType(position, PsiDocTag.class) != null) {
if (ref.isReferenceTo(psiClass)) {
return;
}
}
final PsiReferenceParameterList parameterList = ref.getParameterList();
if (parameterList != null && parameterList.getTextLength() > 0) {
return;
}
}
@@ -318,23 +318,27 @@ public class JavaCompletionUtil {
final PsiReference reference = file.findReferenceAt(selectionEndOffset);
if(reference != null) {
/*
if(reference instanceof PsiJavaCodeReferenceElement){
offsetMap.addOffset(CompletionInitializationContext.IDENTIFIER_END_OFFSET, element.getParent().getTextRange().getEndOffset());
}
else{
offsetMap.addOffset(CompletionInitializationContext.IDENTIFIER_END_OFFSET,
reference.getElement().getTextRange().getStartOffset() + reference.getRangeInElement().getEndOffset());
}
*/
offsetMap.addOffset(CompletionInitializationContext.IDENTIFIER_END_OFFSET,
reference.getElement().getTextRange().getStartOffset() + reference.getRangeInElement().getEndOffset());
element = file.findElementAt(offsetMap.getOffset(CompletionInitializationContext.IDENTIFIER_END_OFFSET));
}
else if (isWord(element)){
/*
if(element instanceof PsiIdentifier && element.getParent() instanceof PsiJavaCodeReferenceElement){
offsetMap.addOffset(CompletionInitializationContext.IDENTIFIER_END_OFFSET, element.getParent().getTextRange().getEndOffset());
}
else{
offsetMap.addOffset(CompletionInitializationContext.IDENTIFIER_END_OFFSET, element.getTextRange().getEndOffset());
}
*/
offsetMap.addOffset(CompletionInitializationContext.IDENTIFIER_END_OFFSET, element.getTextRange().getEndOffset());
element = file.findElementAt(offsetMap.getOffset(CompletionInitializationContext.IDENTIFIER_END_OFFSET));
if (element == null) return;
@@ -0,0 +1,9 @@
public class TestClass {
public TestClass create() {
final int value = 1;
return new Xx<caret>TexCompXxx<String>(value);
}
}
class Xxx { }
@@ -0,0 +1,9 @@
public class TestClass {
public TestClass create() {
final int value = 1;
return new Xxx<caret><String>(value);
}
}
class Xxx { }
@@ -747,6 +747,12 @@ public class NormalCompletionTest extends LightFixtureCompletionTestCase {
checkResult();
}
public void testClassNameWithGenericsTab() throws Throwable {
configure()
myFixture.type '\t'
checkResult();
}
public void testRightShift() throws Throwable {
configure()
assertStringItems("myField1", "myField2");