diff --git a/idea/src/org/jetbrains/kotlin/idea/hierarchy/KotlinTypeHierarchyProvider.kt b/idea/src/org/jetbrains/kotlin/idea/hierarchy/KotlinTypeHierarchyProvider.kt index 72735f115af..27d6a09a7a8 100644 --- a/idea/src/org/jetbrains/kotlin/idea/hierarchy/KotlinTypeHierarchyProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/hierarchy/KotlinTypeHierarchyProvider.kt @@ -37,6 +37,7 @@ import org.jetbrains.kotlin.idea.util.ProjectRootsUtil import org.jetbrains.kotlin.idea.util.module import org.jetbrains.kotlin.platform.JavaToKotlinClassMap import org.jetbrains.kotlin.psi.KtClassOrObject +import org.jetbrains.kotlin.psi.KtConstructor import org.jetbrains.kotlin.psi.KtNamedFunction import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType import org.jetbrains.kotlin.renderer.DescriptorRenderer @@ -66,6 +67,7 @@ class KotlinTypeHierarchyProvider : JavaTypeHierarchyProvider() { return when (target) { is PsiClass -> target + is KtConstructor<*> -> getOriginalPsiClassOrCreateLightClass(target.getContainingClassOrObject(), module) is KtClassOrObject -> getOriginalPsiClassOrCreateLightClass(target, module) is KtNamedFunction -> { // Factory methods val functionName = target.name diff --git a/idea/testData/hierarchy/class/sub/ConstructorCallCaretAfter/ConstructorCallCaretAfter_verification.xml b/idea/testData/hierarchy/class/sub/ConstructorCallCaretAfter/ConstructorCallCaretAfter_verification.xml new file mode 100644 index 00000000000..10f8965bcd8 --- /dev/null +++ b/idea/testData/hierarchy/class/sub/ConstructorCallCaretAfter/ConstructorCallCaretAfter_verification.xml @@ -0,0 +1,4 @@ + + + + diff --git a/idea/testData/hierarchy/class/sub/ConstructorCallCaretAfter/main.kt b/idea/testData/hierarchy/class/sub/ConstructorCallCaretAfter/main.kt new file mode 100644 index 00000000000..9d8af7a4e16 --- /dev/null +++ b/idea/testData/hierarchy/class/sub/ConstructorCallCaretAfter/main.kt @@ -0,0 +1,4 @@ +open class A constructor(a: Int) + +class B: A(1) +class C: A(1) \ No newline at end of file diff --git a/idea/testData/hierarchy/class/sub/ConstructorCallCaretBefore/ConstructorCallCaretBefore_verification.xml b/idea/testData/hierarchy/class/sub/ConstructorCallCaretBefore/ConstructorCallCaretBefore_verification.xml new file mode 100644 index 00000000000..10f8965bcd8 --- /dev/null +++ b/idea/testData/hierarchy/class/sub/ConstructorCallCaretBefore/ConstructorCallCaretBefore_verification.xml @@ -0,0 +1,4 @@ + + + + diff --git a/idea/testData/hierarchy/class/sub/ConstructorCallCaretBefore/main.kt b/idea/testData/hierarchy/class/sub/ConstructorCallCaretBefore/main.kt new file mode 100644 index 00000000000..d23598adcf0 --- /dev/null +++ b/idea/testData/hierarchy/class/sub/ConstructorCallCaretBefore/main.kt @@ -0,0 +1,4 @@ +open class A constructor(a: Int) + +class B: A(1) +class C: A(1) \ No newline at end of file diff --git a/idea/testData/hierarchy/class/sub/SecondaryConstructorCallCaretAfter/SecondaryConstructorCallCaretAfter_verification.xml b/idea/testData/hierarchy/class/sub/SecondaryConstructorCallCaretAfter/SecondaryConstructorCallCaretAfter_verification.xml new file mode 100644 index 00000000000..10f8965bcd8 --- /dev/null +++ b/idea/testData/hierarchy/class/sub/SecondaryConstructorCallCaretAfter/SecondaryConstructorCallCaretAfter_verification.xml @@ -0,0 +1,4 @@ + + + + diff --git a/idea/testData/hierarchy/class/sub/SecondaryConstructorCallCaretAfter/main.kt b/idea/testData/hierarchy/class/sub/SecondaryConstructorCallCaretAfter/main.kt new file mode 100644 index 00000000000..c8fdd8d0a5b --- /dev/null +++ b/idea/testData/hierarchy/class/sub/SecondaryConstructorCallCaretAfter/main.kt @@ -0,0 +1,6 @@ +open class A { + constructor(a: Int) +} + +class B: A(1) +class C: A(1) \ No newline at end of file diff --git a/idea/testData/hierarchy/class/sub/SecondaryConstructorCallCaretBefore/SecondaryConstructorCallCaretBefore_verification.xml b/idea/testData/hierarchy/class/sub/SecondaryConstructorCallCaretBefore/SecondaryConstructorCallCaretBefore_verification.xml new file mode 100644 index 00000000000..10f8965bcd8 --- /dev/null +++ b/idea/testData/hierarchy/class/sub/SecondaryConstructorCallCaretBefore/SecondaryConstructorCallCaretBefore_verification.xml @@ -0,0 +1,4 @@ + + + + diff --git a/idea/testData/hierarchy/class/sub/SecondaryConstructorCallCaretBefore/main.kt b/idea/testData/hierarchy/class/sub/SecondaryConstructorCallCaretBefore/main.kt new file mode 100644 index 00000000000..07a2c5b73c2 --- /dev/null +++ b/idea/testData/hierarchy/class/sub/SecondaryConstructorCallCaretBefore/main.kt @@ -0,0 +1,6 @@ +open class A { + constructor(a: Int) +} + +class B: A(1) +class C: A(1) \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/hierarchy/HierarchyTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/hierarchy/HierarchyTestGenerated.java index 6fd63e8fcd1..4462e406a62 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/hierarchy/HierarchyTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/hierarchy/HierarchyTestGenerated.java @@ -267,6 +267,18 @@ public class HierarchyTestGenerated extends AbstractHierarchyTest { doSubClassHierarchyTest(fileName); } + @TestMetadata("ConstructorCallCaretAfter") + public void testConstructorCallCaretAfter() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/hierarchy/class/sub/ConstructorCallCaretAfter/"); + doSubClassHierarchyTest(fileName); + } + + @TestMetadata("ConstructorCallCaretBefore") + public void testConstructorCallCaretBefore() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/hierarchy/class/sub/ConstructorCallCaretBefore/"); + doSubClassHierarchyTest(fileName); + } + @TestMetadata("MultiTypeAlias") public void testMultiTypeAlias() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/hierarchy/class/sub/MultiTypeAlias/"); @@ -285,6 +297,18 @@ public class HierarchyTestGenerated extends AbstractHierarchyTest { doSubClassHierarchyTest(fileName); } + @TestMetadata("SecondaryConstructorCallCaretAfter") + public void testSecondaryConstructorCallCaretAfter() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/hierarchy/class/sub/SecondaryConstructorCallCaretAfter/"); + doSubClassHierarchyTest(fileName); + } + + @TestMetadata("SecondaryConstructorCallCaretBefore") + public void testSecondaryConstructorCallCaretBefore() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/hierarchy/class/sub/SecondaryConstructorCallCaretBefore/"); + doSubClassHierarchyTest(fileName); + } + @TestMetadata("TraitFromClass") public void testTraitFromClass() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/hierarchy/class/sub/TraitFromClass/");