From 60d4f4236373d786eb911804413215b2479264c1 Mon Sep 17 00:00:00 2001 From: anna Date: Mon, 26 Dec 2011 18:26:39 +0100 Subject: [PATCH] constructor parameters from fields: sort params in fields order --- .../CreateConstructorParameterFromFieldFix.java | 13 ++++++++++--- .../afterMultipleFields.java | 6 +++--- .../afterMultipleFieldsNoConstructorNoUsages.java | 6 +++--- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateConstructorParameterFromFieldFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateConstructorParameterFromFieldFix.java index 216a3c44afdc..3eff28e67732 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateConstructorParameterFromFieldFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateConstructorParameterFromFieldFix.java @@ -152,8 +152,15 @@ public class CreateConstructorParameterFromFieldFix implements IntentionAction { } } - - addParameterToConstructor(project, file, editor, constructor, constrs.size() == constructors.length ? fields.toArray(new PsiField[fields.size()]) : new PsiField[]{getField()}); + Collections.sort(fields, new Comparator() { + @Override + public int compare(PsiField o1, PsiField o2) { + return o1.getTextOffset() - o2.getTextOffset(); + } + }); + addParameterToConstructor(project, file, editor, constructor, constrs.size() == constructors.length + ? fields.toArray(new PsiField[fields.size()]) + : new PsiField[]{getField()}); fieldsToFix.clear(); } } @@ -217,7 +224,7 @@ public class CreateConstructorParameterFromFieldFix implements IntentionAction { expressions[i++] = factory.createExpressionFromText(field.getName(), constructor); } if (constructor.isVarArgs()) { - ArrayUtil.swap(expressions, parameters.length - 1, expressions.length - 1); + ArrayUtil.rotateLeft(expressions, parameters.length - 1, expressions.length - 1); } final SmartPointerManager manager = SmartPointerManager.getInstance(project); final SmartPsiElementPointer constructorPointer = manager.createSmartPsiElementPointer(constructor); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/afterMultipleFields.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/afterMultipleFields.java index db50428a883e..79a6f917ba56 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/afterMultipleFields.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/afterMultipleFields.java @@ -3,10 +3,10 @@ class A { private final int field; private final Object o; private final Runnable runnable; - A(int field, Runnable runnable, Object o, String... strs) { - this.field = field; - this.runnable = runnable; + A(int field, Object o, Runnable runnable, String... strs) { + this.field = field; this.o = o; + this.runnable = runnable; } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/afterMultipleFieldsNoConstructorNoUsages.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/afterMultipleFieldsNoConstructorNoUsages.java index e142c903f5ff..97b2c31c0350 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/afterMultipleFieldsNoConstructorNoUsages.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/afterMultipleFieldsNoConstructorNoUsages.java @@ -4,9 +4,9 @@ public class A { private final Object o; private final Runnable runnable; - public A(Runnable runnable, Object o, int field) { - this.runnable = runnable; + public A(int field, Object o, Runnable runnable) { + this.field = field; this.o = o; - this.field = field; + this.runnable = runnable; } }