diff --git a/idea/idea-analysis/idea-analysis.iml b/idea/idea-analysis/idea-analysis.iml
index 44f8b46113b..04f68a6cfe5 100644
--- a/idea/idea-analysis/idea-analysis.iml
+++ b/idea/idea-analysis/idea-analysis.iml
@@ -31,5 +31,6 @@
+
\ No newline at end of file
diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ShortenReferences.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ShortenReferences.kt
index d6ef3c69caa..07494cb753f 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ShortenReferences.kt
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ShortenReferences.kt
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.idea.util
import com.intellij.openapi.util.TextRange
import com.intellij.psi.PsiDocumentManager
import com.intellij.psi.PsiElement
+import com.intellij.psi.impl.source.PostprocessReformattingAspect
import com.intellij.psi.util.PsiTreeUtil
import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor
@@ -235,10 +236,16 @@ class ShortenReferences(val options: (KtElement) -> Options = { Options.DEFAULT
fun shortenElements(elementSetToUpdate: MutableSet) {
for (element in elementsToShorten) {
if (!element.isValid) continue
- val newElement = shortenElement(element)
+
+ var newElement: KtElement? = null
+ // we never want any reformatting to happen because sometimes it causes strange effects (see KT-11633)
+ PostprocessReformattingAspect.getInstance(element.project).disablePostprocessFormattingInside {
+ newElement = shortenElement(element)
+ }
+
if (element in elementSetToUpdate && newElement != element) {
elementSetToUpdate.remove(element)
- elementSetToUpdate.add(newElement)
+ elementSetToUpdate.add(newElement!!)
}
}
}
diff --git a/idea/idea-completion/testData/handlers/basic/KT11633.kt b/idea/idea-completion/testData/handlers/basic/KT11633.kt
new file mode 100644
index 00000000000..7cc35d44477
--- /dev/null
+++ b/idea/idea-completion/testData/handlers/basic/KT11633.kt
@@ -0,0 +1,11 @@
+import java.util.Date
+
+data class Test(
+ @Deprecated("Other")
+ val some: Int? = 1,
+ val other: Date = Date,
+ val test: Int
+)
+
+// ELEMENT: Date
+// TAIL_TEXT: "(...) (java.util)"
diff --git a/idea/idea-completion/testData/handlers/basic/KT11633.kt.after b/idea/idea-completion/testData/handlers/basic/KT11633.kt.after
new file mode 100644
index 00000000000..6139dc5c825
--- /dev/null
+++ b/idea/idea-completion/testData/handlers/basic/KT11633.kt.after
@@ -0,0 +1,11 @@
+import java.util.Date
+
+data class Test(
+ @Deprecated("Other")
+ val some: Int? = 1,
+ val other: Date = Date(),
+ val test: Int
+)
+
+// ELEMENT: Date
+// TAIL_TEXT: "(...) (java.util)"
diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/BasicCompletionHandlerTestGenerated.java b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/BasicCompletionHandlerTestGenerated.java
index a1ceee80296..213111aa6b2 100644
--- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/BasicCompletionHandlerTestGenerated.java
+++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/BasicCompletionHandlerTestGenerated.java
@@ -113,6 +113,12 @@ public class BasicCompletionHandlerTestGenerated extends AbstractBasicCompletion
doTest(fileName);
}
+ @TestMetadata("KT11633.kt")
+ public void testKT11633() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/handlers/basic/KT11633.kt");
+ doTest(fileName);
+ }
+
@TestMetadata("NestedTypeArg.kt")
public void testNestedTypeArg() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/handlers/basic/NestedTypeArg.kt");
diff --git a/idea/testData/shortenRefs/KT11633.kt b/idea/testData/shortenRefs/KT11633.kt
new file mode 100644
index 00000000000..62261081be4
--- /dev/null
+++ b/idea/testData/shortenRefs/KT11633.kt
@@ -0,0 +1,11 @@
+import java.util.Date
+
+data class Test(
+ @Deprecated("Other")
+ val some: Int? = 1,
+ val other: Date = java.util.Date(),
+ val test: Int
+)
+
+// ELEMENT: Date
+// TAIL_TEXT: "(...) (java.util)"
diff --git a/idea/testData/shortenRefs/kt11633.kt.after b/idea/testData/shortenRefs/kt11633.kt.after
new file mode 100644
index 00000000000..f1d180396d3
--- /dev/null
+++ b/idea/testData/shortenRefs/kt11633.kt.after
@@ -0,0 +1,11 @@
+import java.util.Date
+
+data class Test(
+ @Deprecated("Other")
+ val some: Int? = 1,
+ val other: Date = Date(),
+ val test: Int
+)
+
+// ELEMENT: Date
+// TAIL_TEXT: "(...) (java.util)"
diff --git a/idea/tests/org/jetbrains/kotlin/shortenRefs/ShortenRefsTestGenerated.java b/idea/tests/org/jetbrains/kotlin/shortenRefs/ShortenRefsTestGenerated.java
index e3fd73f4497..6ecc4cbd5dc 100644
--- a/idea/tests/org/jetbrains/kotlin/shortenRefs/ShortenRefsTestGenerated.java
+++ b/idea/tests/org/jetbrains/kotlin/shortenRefs/ShortenRefsTestGenerated.java
@@ -71,6 +71,12 @@ public class ShortenRefsTestGenerated extends AbstractShortenRefsTest {
doTest(fileName);
}
+ @TestMetadata("kt11633.kt")
+ public void testKt11633() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/shortenRefs/kt11633.kt");
+ doTest(fileName);
+ }
+
@TestMetadata("noShortening.kt")
public void testNoShortening() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/shortenRefs/noShortening.kt");