CollapseIntoLoopAction: disable when expression refers to written variable

Also, EquivalenceChecker.getComplexElementDecision fixed

GitOrigin-RevId: 6848a57ddc1cf4992030fff614c246a6316f4807
This commit is contained in:
Tagir Valeev
2020-06-16 18:16:46 +07:00
committed by intellij-monorepo-bot
parent 51cd561f79
commit 0322598dbc
6 changed files with 55 additions and 11 deletions

View File

@@ -0,0 +1,10 @@
// "Collapse into loop" "true"
class X {
public int hashCode() {
int result = super.hashCode();
for (int i : new int[]{field != null ? field.hashCode() : 0, field2 != null ? field2.hashCode() : 0, field3 != null ? field3.hashCode() : 0, field4 != null ? field4.hashCode() : 0, field5 != null ? field5.hashCode() : 0}) {
result = 31 * result + (i);
}
return result;
}
}

View File

@@ -0,0 +1,12 @@
// "Collapse into loop" "true"
class X {
public int hashCode() {
int result = super.hashCode();
<selection>result = 31 * result + (field != null ? field.hashCode() : 0);
result = 31 * result + (field2 != null ? field2.hashCode() : 0);
result = 31 * result + (field3 != null ? field3.hashCode() : 0);
result = 31 * result + (field4 != null ? field4.hashCode() : 0);
result = 31 * result + (field5 != null ? field5.hashCode() : 0);</selection>
return result;
}
}

View File

@@ -0,0 +1,10 @@
// "Collapse into loop" "false"
class X {
public int hashCode() {
int result = 1;
int other = 3;
<selection>result = 2 + other;
result = 2 + result;</selection>
return result;
}
}