Java: Fixed conversion of constructor parameters for java.awt.Color (IDEA-172996)

This commit is contained in:
Pavel Dolgov
2017-06-01 13:30:14 +03:00
parent bbd50aea32
commit 6ebd6d9b4d
5 changed files with 22 additions and 15 deletions
@@ -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;
}
@@ -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 {
@@ -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 {
@@ -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;
@@ -1,4 +1,4 @@
// "Convert to 'new Color(0x2564788c,true)'" "true"
// "Convert to 'new Color(0x8c256478,true)'" "true"
package java.awt;