fix bad loop IDEA-117644 ("Move initializer to constructor" intention breaks code)

This commit is contained in:
Bas Leijdekkers
2013-12-05 12:31:05 +01:00
parent 633834f23f
commit fe3cabd3cc
3 changed files with 28 additions and 7 deletions

View File

@@ -65,16 +65,12 @@ public class MoveInitializerToConstructorAction extends BaseMoveInitializerToMet
@NotNull
private static Collection<PsiMethod> removeChainedConstructors(@NotNull Collection<PsiMethod> constructors) {
final List<PsiMethod> result = new ArrayList<PsiMethod>(constructors);
final Iterator<PsiMethod> iterator = result.iterator();
//noinspection ForLoopThatDoesntUseLoopVariable
for (PsiMethod constructor = iterator.next(); iterator.hasNext(); constructor = iterator.next()) {
final List<PsiMethod> chained = JavaHighlightUtil.getChainedConstructors(constructor);
if (chained != null) {
for (Iterator<PsiMethod> iterator = result.iterator(); iterator.hasNext(); ) {
final PsiMethod constructor = iterator.next();
if (JavaHighlightUtil.getChainedConstructors(constructor) != null) {
iterator.remove();
}
}
return result;
}

View File

@@ -0,0 +1,13 @@
// "Move initializer to constructor" "true"
class X {
final String s;
final String t;
X(String s) {
this.s = s;
t = "t";
}
X() {
this("s");
}
}

View File

@@ -0,0 +1,12 @@
// "Move initializer to constructor" "true"
class X {
final String s;
final String t = <caret>"t";
X(String s) {
this.s = s;
}
X() {
this("s");
}
}