mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
java completion: don't overwrite whole anonymous class
search for reference at `BaseClassRe|f`, not `BaseClassRef() { ... }.call()`
This commit is contained in:
+1
-1
@@ -81,7 +81,7 @@ public class ConstructorInsertHandler implements InsertHandler<LookupElementDeco
|
||||
if (delegate instanceof PsiTypeLookupItem) {
|
||||
if (context.getDocument().getTextLength() > context.getTailOffset() &&
|
||||
context.getDocument().getCharsSequence().charAt(context.getTailOffset()) == '<') {
|
||||
PsiJavaCodeReferenceElement ref = JavaClassNameInsertHandler.findJavaReference(context.getFile(), context.getTailOffset());
|
||||
PsiJavaCodeReferenceElement ref = JavaClassNameInsertHandler.findJavaReference(context.getFile(), context.getTailOffset() - 1);
|
||||
if (ref != null) {
|
||||
PsiReferenceParameterList parameterList = ref.getParameterList();
|
||||
if (parameterList != null && context.getTailOffset() == parameterList.getTextRange().getStartOffset()) {
|
||||
|
||||
+1
-1
@@ -136,7 +136,7 @@ class JavaClassNameInsertHandler implements InsertHandler<JavaPsiClassReferenceE
|
||||
|
||||
static void overwriteTopmostReference(InsertionContext context) {
|
||||
context.commitDocument();
|
||||
PsiJavaCodeReferenceElement ref = findJavaReference(context.getFile(), context.getTailOffset());
|
||||
PsiJavaCodeReferenceElement ref = findJavaReference(context.getFile(), context.getTailOffset() - 1);
|
||||
if (ref != null) {
|
||||
while (ref.getParent() instanceof PsiJavaCodeReferenceElement) ref = (PsiJavaCodeReferenceElement)ref.getParent();
|
||||
context.getDocument().deleteString(context.getTailOffset(), ref.getTextRange().getEndOffset());
|
||||
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
class Bar {
|
||||
void v() {
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
new Foo()<caret> {
|
||||
@Override
|
||||
public void run() {
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
}.run();
|
||||
}
|
||||
}
|
||||
|
||||
class Foo {
|
||||
Foo() {}
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
class Bar {
|
||||
void v() {
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
new Fo<caret>o() {
|
||||
@Override
|
||||
public void run() {
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
}.run();
|
||||
}
|
||||
}
|
||||
|
||||
class Foo {
|
||||
Foo() {}
|
||||
}
|
||||
+12
-7
@@ -294,18 +294,20 @@ public class ClassNameCompletionTest extends LightFixtureCompletionTestCase {
|
||||
checkResultByFile(path + "/varType-result.java");
|
||||
}
|
||||
|
||||
public void testExtraSpace() { doJavaTest(); }
|
||||
public void testExtraSpace() { doJavaTest('\n'); }
|
||||
|
||||
public void testAnnotation() { doJavaTest(); }
|
||||
public void testAnnotation() { doJavaTest('\n'); }
|
||||
|
||||
public void testInStaticImport() { doJavaTest(); }
|
||||
public void testInStaticImport() { doJavaTest('\n'); }
|
||||
|
||||
public void testInCommentWithPackagePrefix() { doJavaTest(); }
|
||||
public void testInCommentWithPackagePrefix() { doJavaTest('\n'); }
|
||||
|
||||
private void doJavaTest() {
|
||||
public void testNestedAnonymousTab() { doJavaTest('\t');}
|
||||
|
||||
private void doJavaTest(char toType) {
|
||||
final String path = "/nameCompletion/java";
|
||||
myFixture.configureByFile(path + "/" + getTestName(false) + "-source.java");
|
||||
performAction();
|
||||
performAction(toType);
|
||||
checkResultByFile(path + "/" + getTestName(false) + "-result.java");
|
||||
}
|
||||
|
||||
@@ -315,9 +317,12 @@ public class ClassNameCompletionTest extends LightFixtureCompletionTestCase {
|
||||
}
|
||||
|
||||
private void performAction() {
|
||||
performAction('\n');
|
||||
}
|
||||
private void performAction(char toType) {
|
||||
complete();
|
||||
if (LookupManager.getActiveLookup(myFixture.getEditor()) != null) {
|
||||
myFixture.type('\n');
|
||||
myFixture.type(toType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user