From 698660b9c6ee0a34c25f847ab934cf0406411c4c Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Tue, 20 Sep 2016 16:49:22 +0300 Subject: [PATCH] Find Usages: Add special type for usages inside of type aliases #KT-13955 Fixed --- ChangeLog.md | 1 + .../org/jetbrains/kotlin/idea/findUsages/UsageTypeUtils.kt | 4 ++++ .../kotlin/idea/findUsages/KotlinUsageTypeProvider.kt | 2 ++ .../findUsages/kotlin/findClassUsages/usageInTypeAlias.0.kt | 5 +++++ .../kotlin/findClassUsages/usageInTypeAlias.results.txt | 1 + .../kotlin/findUsages/FindUsagesTestGenerated.java | 6 ++++++ 6 files changed, 19 insertions(+) create mode 100644 idea/testData/findUsages/kotlin/findClassUsages/usageInTypeAlias.0.kt create mode 100644 idea/testData/findUsages/kotlin/findClassUsages/usageInTypeAlias.results.txt diff --git a/ChangeLog.md b/ChangeLog.md index 158b711e321..5aeb3df30a9 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -19,6 +19,7 @@ - [`KT-13385`](https://youtrack.jetbrains.com/issue/KT-13385) Move: Quote package name (if necessary) when moving declarations to new file - [`KT-13395`](https://youtrack.jetbrains.com/issue/KT-13395) Introduce Property: Fix duplicate count in popup window - [`KT-13611`](https://youtrack.jetbrains.com/issue/KT-13611) Go to Class: Fix presentation of type aliases +- [`KT-13955`](https://youtrack.jetbrains.com/issue/KT-13955) Find Usages: Add special type for usages inside of type aliases ## 1.1-M01 (EAP-1) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/findUsages/UsageTypeUtils.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/findUsages/UsageTypeUtils.kt index 80fc6a1d570..bb3566cab03 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/findUsages/UsageTypeUtils.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/findUsages/UsageTypeUtils.kt @@ -112,6 +112,9 @@ object UsageTypeUtils { refExpr.getParentOfTypeAndBranch(){ superTypeQualifier } != null -> SUPER_TYPE_QUALIFIER + refExpr.getParentOfTypeAndBranch { getTypeReference() } != null -> + TYPE_ALIAS + else -> null } } @@ -217,6 +220,7 @@ enum class UsageTypeEnum { COMPANION_OBJECT_ACCESS, EXTENSION_RECEIVER_TYPE, SUPER_TYPE_QUALIFIER, + TYPE_ALIAS, FUNCTION_CALL, IMPLICIT_GET, diff --git a/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinUsageTypeProvider.kt b/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinUsageTypeProvider.kt index 06b3f081ae7..dd65466b1c9 100644 --- a/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinUsageTypeProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinUsageTypeProvider.kt @@ -46,6 +46,7 @@ object KotlinUsageTypeProvider : UsageTypeProviderEx { COMPANION_OBJECT_ACCESS -> KotlinUsageTypes.COMPANION_OBJECT_ACCESS EXTENSION_RECEIVER_TYPE -> KotlinUsageTypes.EXTENSION_RECEIVER_TYPE SUPER_TYPE_QUALIFIER -> KotlinUsageTypes.SUPER_TYPE_QUALIFIER + TYPE_ALIAS -> KotlinUsageTypes.TYPE_ALIAS FUNCTION_CALL -> KotlinUsageTypes.FUNCTION_CALL IMPLICIT_GET -> KotlinUsageTypes.IMPLICIT_GET @@ -89,6 +90,7 @@ object KotlinUsageTypes { val COMPANION_OBJECT_ACCESS = UsageType(KotlinBundle.message("usageType.companion.object")) val EXTENSION_RECEIVER_TYPE = UsageType(KotlinBundle.message("usageType.extension.receiver.type")) val SUPER_TYPE_QUALIFIER = UsageType(KotlinBundle.message("usageType.super.type.qualifier")) + val TYPE_ALIAS = UsageType("Type alias") // functions val FUNCTION_CALL = UsageType(KotlinBundle.message("usageType.function.call")) diff --git a/idea/testData/findUsages/kotlin/findClassUsages/usageInTypeAlias.0.kt b/idea/testData/findUsages/kotlin/findClassUsages/usageInTypeAlias.0.kt new file mode 100644 index 00000000000..c3f123860fc --- /dev/null +++ b/idea/testData/findUsages/kotlin/findClassUsages/usageInTypeAlias.0.kt @@ -0,0 +1,5 @@ +// PSI_ELEMENT: org.jetbrains.kotlin.psi.KtClass +// OPTIONS: usages +class A + +typealias B = A \ No newline at end of file diff --git a/idea/testData/findUsages/kotlin/findClassUsages/usageInTypeAlias.results.txt b/idea/testData/findUsages/kotlin/findClassUsages/usageInTypeAlias.results.txt new file mode 100644 index 00000000000..3acfd13b01c --- /dev/null +++ b/idea/testData/findUsages/kotlin/findClassUsages/usageInTypeAlias.results.txt @@ -0,0 +1 @@ +Type alias 5 typealias B = A \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/findUsages/FindUsagesTestGenerated.java b/idea/tests/org/jetbrains/kotlin/findUsages/FindUsagesTestGenerated.java index d5cdf27d3d4..054797ae64e 100644 --- a/idea/tests/org/jetbrains/kotlin/findUsages/FindUsagesTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/findUsages/FindUsagesTestGenerated.java @@ -623,6 +623,12 @@ public class FindUsagesTestGenerated extends AbstractFindUsagesTest { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/findUsages/kotlin/findClassUsages/primaryConstructorWithDefaultParams.0.kt"); doTest(fileName); } + + @TestMetadata("usageInTypeAlias.0.kt") + public void testUsageInTypeAlias() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/findUsages/kotlin/findClassUsages/usageInTypeAlias.0.kt"); + doTest(fileName); + } } @TestMetadata("idea/testData/findUsages/kotlin/findFunctionUsages")