Data Inflow: Show qualified assignments
#KT-19087 Fixed
This commit is contained in:
@@ -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>
|
||||
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user