Java control flow: Don't allow extracting method if there's a potential side effect on the local variables in the case of exception thrown (IDEA-79444, IDEA-159916)

This commit is contained in:
Pavel Dolgov
2016-08-24 15:24:43 +03:00
parent 08a18bc8bd
commit 1a3605e4cb
23 changed files with 713 additions and 141 deletions
@@ -0,0 +1,28 @@
import java.io.IOException;
import java.sql.SQLException;
import java.util.concurrent.ThreadLocalRandom;
class A {
void f() {
int i = 0;
try {
i = 1;
try {
i = 2;
if (r()) throw new IOException();
<selection>i = 3;
if (r()) throw new SQLException();
i = 4;</selection>
System.out.println("ok");
} catch (IOException e) {
System.out.println("io " + i);
}
} catch (SQLException e) {
System.out.println("sql " + i);
}
}
private boolean r() {
return ThreadLocalRandom.current().nextBoolean();
}
}