Skip to content

Fix warnings for NullPointerException in flutter-idea/src/io/flutter/editor/ExpressionParsingUtils.java #7922

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Feb 4, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 26 additions & 10 deletions flutter-idea/src/io/flutter/editor/ExpressionParsingUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,16 @@
*/
package io.flutter.editor;

import org.jetbrains.annotations.Nullable;

import java.awt.*;

public class ExpressionParsingUtils {
public static Integer parseNumberFromCallParam(String callText, String prefix) {
if (callText.startsWith(prefix) && callText.endsWith(")")) {
public static @Nullable Integer parseNumberFromCallParam(String callText, String prefix) {
if (prefix == null) {
return null;
}
if (callText != null && callText.startsWith(prefix) && callText.endsWith(")")) {
String val = callText.substring(prefix.length(), callText.length() - 1).trim();
final int index = val.indexOf(',');
if (index != -1) {
Expand All @@ -23,32 +28,40 @@ public static Integer parseNumberFromCallParam(String callText, String prefix) {
catch (NumberFormatException ignored) {
}
}

return null;
}

public static Color parseColor(String text) {
public static @Nullable Color parseColor(String text) {
if (text == null) {
return null;
}
final Color color = parseColor(text, "const Color(");
if (color != null) return color;

return parseColor(text, "Color(");
}

public static Color parseColor(String text, String colorText) {
public static @Nullable Color parseColor(String text, String colorText) {
if (text == null || colorText == null) {
return null;
}
final Integer val = parseNumberFromCallParam(text, colorText);
if (val == null) return null;

try {
final int value = val;
//noinspection UseJBColor
return new Color((int)(value >> 16) & 0xFF, (int)(value >> 8) & 0xFF, (int)value & 0xFF, (int)(value >> 24) & 0xFF);
return new Color((value >> 16) & 0xFF, (value >> 8) & 0xFF, value & 0xFF, (value >> 24) & 0xFF);
}
catch (IllegalArgumentException e) {
return null;
}
}

public static Color parseColorComponents(String callText, String prefix, boolean isARGB) {
public static @Nullable Color parseColorComponents(String callText, String prefix, boolean isARGB) {
if (callText == null || prefix == null) {
return null;
}
if (callText.startsWith(prefix) && callText.endsWith(")")) {
final String colorString = callText.substring(prefix.length(), callText.length() - 1).trim();
final String[] maybeNumbers = colorString.split(",");
Expand All @@ -60,8 +73,8 @@ public static Color parseColorComponents(String callText, String prefix, boolean
return null;
}

private static Color parseARGBColorComponents(String[] maybeNumbers) {
if (maybeNumbers.length < 4) {
private static @Nullable Color parseARGBColorComponents(String[] maybeNumbers) {
if (maybeNumbers == null || maybeNumbers.length < 4) {
return null;
}

Expand Down Expand Up @@ -90,7 +103,10 @@ private static Color parseARGBColorComponents(String[] maybeNumbers) {
}
}

private static Color parseRGBOColorComponents(String[] maybeNumbers) {
private static @Nullable Color parseRGBOColorComponents(String[] maybeNumbers) {
if (maybeNumbers == null) {
return null;
}
final float[] rgbo = new float[4];
for (int i = 0; i < 4; ++i) {
final String maybeNumber = maybeNumbers[i].trim();
Expand Down