Minor. Change CompilationException parameter to @Nullable
A lot of call sites actally pass null as an element, so it's better to fail with original stack-trace instead of NPE caused by nullability check
This commit is contained in:
@@ -26,12 +26,12 @@ import org.jetbrains.kotlin.diagnostics.DiagnosticUtils;
|
|||||||
public class CompilationException extends RuntimeException {
|
public class CompilationException extends RuntimeException {
|
||||||
private final PsiElement element;
|
private final PsiElement element;
|
||||||
|
|
||||||
public CompilationException(@NotNull String message, @Nullable Throwable cause, @NotNull PsiElement element) {
|
public CompilationException(@NotNull String message, @Nullable Throwable cause, @Nullable PsiElement element) {
|
||||||
super(getMessage(message, cause, element), cause);
|
super(getMessage(message, cause, element), cause);
|
||||||
this.element = element;
|
this.element = element;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@Nullable
|
||||||
public PsiElement getElement() {
|
public PsiElement getElement() {
|
||||||
return element;
|
return element;
|
||||||
}
|
}
|
||||||
@@ -45,7 +45,7 @@ public class CompilationException extends RuntimeException {
|
|||||||
return "unknown";
|
return "unknown";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getMessage(@NotNull final String message, @Nullable final Throwable cause, @NotNull final PsiElement element) {
|
public static String getMessage(@NotNull final String message, @Nullable final Throwable cause, @Nullable final PsiElement element) {
|
||||||
return ApplicationManager.getApplication().runReadAction(new Computable<String>() {
|
return ApplicationManager.getApplication().runReadAction(new Computable<String>() {
|
||||||
@Override
|
@Override
|
||||||
public String compute() {
|
public String compute() {
|
||||||
@@ -55,8 +55,14 @@ public class CompilationException extends RuntimeException {
|
|||||||
String causeMessage = cause.getMessage();
|
String causeMessage = cause.getMessage();
|
||||||
result.append("Cause: ").append(causeMessage == null ? cause.toString() : causeMessage).append("\n");
|
result.append("Cause: ").append(causeMessage == null ? cause.toString() : causeMessage).append("\n");
|
||||||
}
|
}
|
||||||
result.append("File being compiled and position: ").append(DiagnosticUtils.atLocation(element)).append("\n");
|
if (element != null) {
|
||||||
result.append("PsiElement: ").append(element.getText()).append("\n");
|
result.append("File being compiled and position: ").append(DiagnosticUtils.atLocation(element)).append("\n");
|
||||||
|
result.append("PsiElement: ").append(element.getText()).append("\n");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
result.append("Element is unknown");
|
||||||
|
}
|
||||||
|
|
||||||
if (cause != null) {
|
if (cause != null) {
|
||||||
result.append("The root cause was thrown at: ").append(where(cause));
|
result.append("The root cause was thrown at: ").append(where(cause));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,8 @@ public class MessageUtil {
|
|||||||
private MessageUtil() {}
|
private MessageUtil() {}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static CompilerMessageLocation psiElementToMessageLocation(@NotNull PsiElement element) {
|
public static CompilerMessageLocation psiElementToMessageLocation(@Nullable PsiElement element) {
|
||||||
|
if (element == null) return CompilerMessageLocation.NO_LOCATION;
|
||||||
PsiFile file = element.getContainingFile();
|
PsiFile file = element.getContainingFile();
|
||||||
return psiFileToMessageLocation(file, "<no path>", DiagnosticUtils.getLineAndColumnInPsiFile(file, element.getTextRange()));
|
return psiFileToMessageLocation(file, "<no path>", DiagnosticUtils.getLineAndColumnInPsiFile(file, element.getTextRange()));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user