don't show run "Class not found" run configuration validation errors in dumb mode (IDEA-194201)

This commit is contained in:
peter
2018-07-04 17:05:27 +02:00
parent 55a1985da0
commit 9d64a3aa5e
3 changed files with 17 additions and 1 deletions
@@ -81,7 +81,12 @@ public class JavaRunConfigurationModule extends RunConfigurationModule {
final PsiClass psiClass = findClass(className);
if (psiClass == null) {
throw new RuntimeConfigurationWarning(
ExecutionBundle.message("class.not.found.in.module.error.message", className, getModuleName()));
ExecutionBundle.message("class.not.found.in.module.error.message", className, getModuleName())) {
@Override
public boolean shouldShowInDumbMode() {
return false;
}
};
}
return psiClass;
}
@@ -26,6 +26,7 @@ import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.options.SettingsEditor;
import com.intellij.openapi.options.SettingsEditorListener;
import com.intellij.openapi.project.DumbService;
import com.intellij.openapi.util.Comparing;
import com.intellij.ui.DocumentAdapter;
import com.intellij.ui.components.JBCheckBox;
@@ -202,6 +203,8 @@ public final class SingleConfigurationConfigurable<Config extends RunConfigurati
}
private ValidationResult createValidationResult(RunnerAndConfigurationSettings snapshot, ConfigurationException e) {
if (!e.shouldShowInDumbMode() && DumbService.isDumb(getConfiguration().getProject())) return null;
return new ValidationResult(
e.getLocalizedMessage(),
e instanceof RuntimeConfigurationException ? e.getTitle() : ExecutionBundle.message("invalid.data.dialog.title"),
@@ -68,4 +68,12 @@ public class ConfigurationException extends Exception {
public void setOriginator(Configurable originator) {
myOriginator = originator;
}
/**
* @return whether this error should be shown when index isn't complete. Override and return false for errors that
* might be caused by inability to find some PSI due to index absence.
*/
public boolean shouldShowInDumbMode() {
return true;
}
}