Data Inflow: Show qualified assignments

#KT-19087 Fixed
This commit is contained in:
Alexey Sedunov
2017-11-09 15:29:04 +03:00
parent c06f72b73f
commit a333eb917b
7 changed files with 63 additions and 1 deletions
@@ -157,7 +157,8 @@ class InflowSlicer(
private fun KtDeclaration.processAssignments(accessSearchScope: SearchScope) {
processVariableAccesses(accessSearchScope, Access.Write) body@ {
val refExpression = it.element as? KtExpression ?: return@body
val rhs = KtPsiUtil.safeDeparenthesize(refExpression).getAssignmentByLHS()?.right ?: return@body
val rhs = KtPsiUtil.safeDeparenthesize(refExpression).getQualifiedExpressionForSelectorOrThis().getAssignmentByLHS()?.right
?: return@body
rhs.passToProcessorAsValue()
}
}
@@ -0,0 +1,16 @@
// FLOW: IN
class AClass(name1: String){
var name : String = name1
fun uses(){
name = "uses: bye"
this.name = "uses: after this"
println("And now my name is '$name'")
}
}
fun main(args: Array<String>) {
val a = AClass("main: hello")
a.name = "main: bye"
println("Now my name is '${a.<caret>name}'")
}
@@ -0,0 +1,8 @@
15 println("Now my name is '${a.<bold>name</bold>}'")
4 var <bold>name : String = name1</bold>
4 var name : String = <bold>name1</bold>
3 class AClass(<bold>name1: String</bold>){
13 val a = AClass(<bold>"main: hello"</bold>)
6 name = <bold>"uses: bye"</bold>
7 this.name = <bold>"uses: after this"</bold>
14 a.name = <bold>"main: bye"</bold>
@@ -0,0 +1,16 @@
// FLOW: IN
class AClass(name1: String){
var name : String = name1
fun uses(){
name = "uses: bye"
this.name = "uses: after this"
println("And now my name is '$<caret>name'")
}
}
fun main(args: Array<String>) {
val a = AClass("main: hello")
a.name = "main: bye"
println("Now my name is '${a.name}'")
}
@@ -0,0 +1,8 @@
8 println("And now my name is '$<bold>name</bold>'")
4 var <bold>name : String = name1</bold>
4 var name : String = <bold>name1</bold>
3 class AClass(<bold>name1: String</bold>){
13 val a = AClass(<bold>"main: hello"</bold>)
6 name = <bold>"uses: bye"</bold>
7 this.name = <bold>"uses: after this"</bold>
14 a.name = <bold>"main: bye"</bold>
+1
View File
@@ -3,3 +3,4 @@
23 val z = A(<bold>2</bold>).n
24 A(<bold>3</bold>).n = 2
16 n = <bold>1</bold>
24 A(3).n = <bold>2</bold>
@@ -270,6 +270,18 @@ public class SlicerTestGenerated extends AbstractSlicerTest {
doTest(fileName);
}
@TestMetadata("inflow/qualifiedAssignmentsForQualifiedRef.kt")
public void testInflow_QualifiedAssignmentsForQualifiedRef() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/slicer/inflow/qualifiedAssignmentsForQualifiedRef.kt");
doTest(fileName);
}
@TestMetadata("inflow/qualifiedAssignmentsForSimpleRef.kt")
public void testInflow_QualifiedAssignmentsForSimpleRef() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/slicer/inflow/qualifiedAssignmentsForSimpleRef.kt");
doTest(fileName);
}
@TestMetadata("inflow/safeCast.kt")
public void testInflow_SafeCast() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/slicer/inflow/safeCast.kt");