From 19943e95438e6474597003683c5a75fa15368c0b Mon Sep 17 00:00:00 2001 From: "peter.gromov" Date: Fri, 26 Nov 2010 11:46:26 +0300 Subject: [PATCH] IDEA-50590 When completing a field with qualifier casting, caret is placed inside typecast --- .../codeInsight/completion/JavaCompletionUtil.java | 1 + .../completion/normal/FieldWithCastingCaret.java | 9 +++++++++ .../completion/normal/FieldWithCastingCaret_after.java | 9 +++++++++ .../codeInsight/completion/NormalCompletionTest.groovy | 2 ++ 4 files changed, 21 insertions(+) create mode 100644 java/java-tests/testData/codeInsight/completion/normal/FieldWithCastingCaret.java create mode 100644 java/java-tests/testData/codeInsight/completion/normal/FieldWithCastingCaret_after.java diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java index 1dfd584a8281..72914bc2a6c5 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java @@ -687,6 +687,7 @@ public class JavaCompletionUtil { document.insertString(exprStart, prefix + spaceWithin + ")" + spaceAfter); CompletionUtil.emulateInsertion(context, exprStart + prefix.length(), to); + context.getEditor().getCaretModel().moveToOffset(context.getTailOffset()); } } diff --git a/java/java-tests/testData/codeInsight/completion/normal/FieldWithCastingCaret.java b/java/java-tests/testData/codeInsight/completion/normal/FieldWithCastingCaret.java new file mode 100644 index 000000000000..1fc4dfbf3e54 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/FieldWithCastingCaret.java @@ -0,0 +1,9 @@ +public class TestClass { + int abc; + + public TestClass create(Object o) { + if (o instanceof TestClass) { + o.ab + } + } +} diff --git a/java/java-tests/testData/codeInsight/completion/normal/FieldWithCastingCaret_after.java b/java/java-tests/testData/codeInsight/completion/normal/FieldWithCastingCaret_after.java new file mode 100644 index 000000000000..e19a12a57922 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/FieldWithCastingCaret_after.java @@ -0,0 +1,9 @@ +public class TestClass { + int abc; + + public TestClass create(Object o) { + if (o instanceof TestClass) { + ((TestClass) o).abc + } + } +} diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy index fef0ecd876c4..5b847b30ec40 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy @@ -454,6 +454,8 @@ public class NormalCompletionTest extends LightFixtureCompletionTestCase { doTest(); } + public void testFieldWithCastingCaret() throws Throwable { doTest(); } + public void testMethodReturnType() throws Throwable { doTest(); }