From 6ebd6d9b4d69ddfe727d8bb166d555cdd1115e62 Mon Sep 17 00:00:00 2001 From: Pavel Dolgov Date: Thu, 1 Jun 2017 13:29:36 +0300 Subject: [PATCH] Java: Fixed conversion of constructor parameters for java.awt.Color (IDEA-172996) --- ...ertColorRepresentationIntentionAction.java | 25 ++++++++++++------- .../afterHexA2Rgba.java | 4 +-- .../afterRgba2Hex.java | 4 +-- .../beforeHexA2Rgba.java | 2 +- .../beforeRgba2Hex.java | 2 +- 5 files changed, 22 insertions(+), 15 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/ConvertColorRepresentationIntentionAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/ConvertColorRepresentationIntentionAction.java index b40372516c24..29d218bf3cc9 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/ConvertColorRepresentationIntentionAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/ConvertColorRepresentationIntentionAction.java @@ -141,7 +141,7 @@ public class ConvertColorRepresentationIntentionAction extends BaseColorIntentio @Nullable private static String[] createArguments(@NotNull PsiExpression rgbExpression) { - return createArguments(rgbExpression, 3); + return createArguments(rgbExpression, false); } @Nullable @@ -151,7 +151,7 @@ public class ConvertColorRepresentationIntentionAction extends BaseColorIntentio if (hasAlpha == null) { return null; } - return hasAlpha ? createArguments(rgbExpression, 4) : createArguments(rgbExpression); + return createArguments(rgbExpression, hasAlpha); } @Nullable @@ -167,7 +167,7 @@ public class ConvertColorRepresentationIntentionAction extends BaseColorIntentio @NotNull PsiExpression gExpression, @NotNull PsiExpression bExpression, @NotNull PsiExpression aExpression) { - final Integer value = createInt(computeInteger(rExpression), computeInteger(gExpression), computeInteger(bExpression), computeInteger(aExpression)); + final Integer value = createInt(computeInteger(aExpression), computeInteger(rExpression), computeInteger(gExpression), computeInteger(bExpression)); if (value == null) { return null; } @@ -180,15 +180,22 @@ public class ConvertColorRepresentationIntentionAction extends BaseColorIntentio @Nullable private static String[] createArguments(@NotNull PsiExpression rgbExpression, - int parts) { - final Integer rgb = computeInteger(rgbExpression); - if (rgb == null) { + boolean hasAlpha) { + final Integer argb = computeInteger(rgbExpression); + if (argb == null) { return null; } - final String[] result = new String[parts]; - for (int i = 0; i < result.length; i++) { - result[result.length - i - 1] = String.valueOf(rgb >> (i * Byte.SIZE) & 0xFF); + final String[] result; + if (hasAlpha) { + result = new String[4]; // (r, g, b, a) + result[3] = String.valueOf(argb >> (3 * Byte.SIZE) & 0xFF); + } + else { + result = new String[3]; // (r, g, b) + } + for (int i = 0; i < 3; i++) { + result[2 - i] = String.valueOf(argb >> (i * Byte.SIZE) & 0xFF); } return result; } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertColorRepresentation/afterHexA2Rgba.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertColorRepresentation/afterHexA2Rgba.java index 70171b80b283..7140ae6cf897 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertColorRepresentation/afterHexA2Rgba.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertColorRepresentation/afterHexA2Rgba.java @@ -1,9 +1,9 @@ -// "Convert to 'new Color(37, 100, 120, 140)'" "true" +// "Convert to 'new Color(100, 120, 140, 37)'" "true" package java.awt; class A { - private Color color = new Color(37, 100, 120, 140); + private Color color = new Color(100, 120, 140, 37); } class Color { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertColorRepresentation/afterRgba2Hex.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertColorRepresentation/afterRgba2Hex.java index 488f9401c649..a36503ca8a7d 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertColorRepresentation/afterRgba2Hex.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertColorRepresentation/afterRgba2Hex.java @@ -1,9 +1,9 @@ -// "Convert to 'new Color(0x2564788c,true)'" "true" +// "Convert to 'new Color(0x8c256478,true)'" "true" package java.awt; class A { - private Color color = new Color(0x2564788c, true); + private Color color = new Color(0x8c256478, true); } class Color { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertColorRepresentation/beforeHexA2Rgba.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertColorRepresentation/beforeHexA2Rgba.java index 39762cdfd810..90884b450d98 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertColorRepresentation/beforeHexA2Rgba.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertColorRepresentation/beforeHexA2Rgba.java @@ -1,4 +1,4 @@ -// "Convert to 'new Color(37, 100, 120, 140)'" "true" +// "Convert to 'new Color(100, 120, 140, 37)'" "true" package java.awt; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertColorRepresentation/beforeRgba2Hex.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertColorRepresentation/beforeRgba2Hex.java index cfe125593699..a137e66bcbc8 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertColorRepresentation/beforeRgba2Hex.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertColorRepresentation/beforeRgba2Hex.java @@ -1,4 +1,4 @@ -// "Convert to 'new Color(0x2564788c,true)'" "true" +// "Convert to 'new Color(0x8c256478,true)'" "true" package java.awt;