Inlining action: show conflict if replacement variable changes before last read of original variable (IDEA-204546)

This commit is contained in:
Artemiy Sartakov
2019-01-14 15:37:30 +07:00
parent a0477eb7c7
commit d84df5cee5
8 changed files with 112 additions and 0 deletions
@@ -0,0 +1,15 @@
public class AssignedVarUpdatedAfterRead {
public void test() {
String replacement = "foo";
String <caret>original = replacement;
System.out.println(original);
replacement = "bar";
original = replacement;
System.out.println(original);
}
}
@@ -0,0 +1,15 @@
public class AssignedVarUpdatedAfterRead {
public void test() {
String replacement = "foo";
String original;
System.out.println(replacement);
replacement = "bar";
original = replacement;
System.out.println(original);
}
}
@@ -0,0 +1,17 @@
public class AssignedVarsUpdatedBeforeRead {
public void test(String p1, String p2) {
String <caret>f = foo(p1, p2);
p2 = "bar";
p1 = "baz";
p2 = "foo";
System.out.println(f);
}
public String foo(String p1, String p2) {
return p1;
}
}
@@ -0,0 +1,14 @@
public class AssignmentAndReassignmentInLoop {
public void test() {
for(int i = 0; i < 3; i++) {
String replacement = "foo";
String <caret>original = replacement;
replacement = "bar";
System.out.println(original);
}
}
}
@@ -0,0 +1,13 @@
public class LoopReassignment {
public void test() {
String replacement = "foo";
String <caret>original = replacement;
for (int i = 0; i < 10; i++) {
System.out.println(original);
replacement = "bar";
}
}
}
@@ -0,0 +1,15 @@
public class OuterLoopReassignment {
public void test() {
String replacement = "foo";
String <caret>original = replacement;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
System.out.println(original);
}
replacement = "bar";
}
}
}
@@ -0,0 +1,12 @@
public class UnusedReassignmentInLoop {
public void test() {
for(int i = 0; i < 3; i++) {
String replacement = "foo";
String <caret>original = replacement;
System.out.println(original);
replacement = "bar";
}
}
}
@@ -0,0 +1,11 @@
public class UnusedReassignmentInLoop {
public void test() {
for(int i = 0; i < 3; i++) {
String replacement = "foo";
System.out.println(replacement);
replacement = "bar";
}
}
}