From 7687c1646b1bb565af92e0089960701ac183980e Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Thu, 25 Aug 2016 22:59:07 +0300 Subject: [PATCH] Supported "is" in when entry condition --- .../usagesSearch/destructuringDeclarationUsages.kt | 6 ++++++ .../kotlin/conventions/components/dataClass.2.kt | 12 ++++++++++++ .../conventions/components/dataClass.results.txt | 1 + 3 files changed, 19 insertions(+) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/usagesSearch/destructuringDeclarationUsages.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/usagesSearch/destructuringDeclarationUsages.kt index f1ab44baa94..4d912b1ba2f 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/usagesSearch/destructuringDeclarationUsages.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/usagesSearch/destructuringDeclarationUsages.kt @@ -238,6 +238,12 @@ private class Processor( return true } + is KtWhenConditionIsPattern -> { + //TODO: smart cast is possible outside of when or inside other branches! + usePlainSearch(typeRefParent.parent as KtWhenEntry) + return true + } + is KtBinaryExpressionWithTypeRHS -> { processSuspiciousExpression(typeRefParent) return true diff --git a/idea/testData/findUsages/kotlin/conventions/components/dataClass.2.kt b/idea/testData/findUsages/kotlin/conventions/components/dataClass.2.kt index 446eaa5c8f7..ca264aa0766 100644 --- a/idea/testData/findUsages/kotlin/conventions/components/dataClass.2.kt +++ b/idea/testData/findUsages/kotlin/conventions/components/dataClass.2.kt @@ -32,3 +32,15 @@ fun y(o: Any) { val list = o as List val (x, y) = list[0] } + +fun z(o: Any) { + when (o) { + is A -> { + val (x, y) = o + } + + is String -> TODO() + + else -> return + } +} diff --git a/idea/testData/findUsages/kotlin/conventions/components/dataClass.results.txt b/idea/testData/findUsages/kotlin/conventions/components/dataClass.results.txt index 9b805eb8b3d..0b2e7cce5cd 100644 --- a/idea/testData/findUsages/kotlin/conventions/components/dataClass.results.txt +++ b/idea/testData/findUsages/kotlin/conventions/components/dataClass.results.txt @@ -10,6 +10,7 @@ [dataClass.2.kt] Value read 26 val (x, y) = o [dataClass.2.kt] Value read 27 val (x1, y1) = A(1, "", "") [dataClass.2.kt] Value read 33 val (x, y) = list[0] +[dataClass.2.kt] Value read 39 val (x, y) = o [dataClass.2.kt] Value read 5 a.n [dataClass.2.kt] Value read 8 val (x, y, z) = a [dataClass.2.kt] Value read 9 val (x1, y1, z1) = f()