summaryrefslogtreecommitdiff
path: root/platform/lang-api
diff options
context:
space:
mode:
Diffstat (limited to 'platform/lang-api')
-rw-r--r--platform/lang-api/src/com/intellij/execution/RunProfileStarter.java17
-rw-r--r--platform/lang-api/src/com/intellij/execution/configuration/EnvironmentVariablesComponent.java142
-rw-r--r--platform/lang-api/src/com/intellij/execution/configuration/EnvironmentVariablesTextFieldWithBrowseButton.java144
-rw-r--r--platform/lang-api/src/com/intellij/execution/configuration/RunConfigurationExtensionsManager.java3
-rw-r--r--platform/lang-api/src/com/intellij/execution/configurations/RunConfigurationsSettings.java3
-rw-r--r--platform/lang-api/src/com/intellij/execution/configurations/SimpleProgramParameters.java4
-rw-r--r--platform/lang-api/src/com/intellij/execution/runners/AsyncGenericProgramRunner.java41
-rw-r--r--platform/lang-api/src/com/intellij/execution/runners/BaseProgramRunner.java7
-rw-r--r--platform/lang-api/src/com/intellij/execution/runners/ExecutionUtil.java17
-rw-r--r--platform/lang-api/src/com/intellij/execution/runners/GenericProgramRunner.java31
-rw-r--r--platform/lang-api/src/com/intellij/ide/util/projectWizard/ModuleBuilder.java14
-rw-r--r--platform/lang-api/src/com/intellij/lang/documentation/AbstractDocumentationProvider.java9
-rw-r--r--platform/lang-api/src/com/intellij/lang/documentation/CompositeDocumentationProvider.java86
-rw-r--r--platform/lang-api/src/com/intellij/lang/documentation/DocumentationProviderEx.java6
-rw-r--r--platform/lang-api/src/com/intellij/lexer/CompositeLexer.java12
-rw-r--r--platform/lang-api/src/com/intellij/openapi/roots/ui/OrderRootTypeUIFactory.java2
-rw-r--r--platform/lang-api/src/com/intellij/psi/codeStyle/LegacyCodeStyleSettingsManager.java1
-rw-r--r--platform/lang-api/src/com/intellij/psi/codeStyle/arrangement/match/ArrangementSectionRule.java12
-rw-r--r--platform/lang-api/src/com/intellij/psi/util/PsiUtilBase.java2
19 files changed, 133 insertions, 420 deletions
diff --git a/platform/lang-api/src/com/intellij/execution/RunProfileStarter.java b/platform/lang-api/src/com/intellij/execution/RunProfileStarter.java
index 163031f956f9..00c87576ecfd 100644
--- a/platform/lang-api/src/com/intellij/execution/RunProfileStarter.java
+++ b/platform/lang-api/src/com/intellij/execution/RunProfileStarter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2010 JetBrains s.r.o.
+ * Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -28,8 +28,19 @@ import org.jetbrains.annotations.Nullable;
* @author nik
*/
public abstract class RunProfileStarter {
+ @SuppressWarnings("UnusedParameters")
+ @Deprecated
@Nullable
- public abstract RunContentDescriptor execute(@NotNull Project project, @NotNull Executor executor, @NotNull RunProfileState state,
- @Nullable RunContentDescriptor contentToReuse, @NotNull ExecutionEnvironment environment) throws ExecutionException;
+ /**
+ * @deprecated to remove in IDEA 15
+ */
+ public RunContentDescriptor execute(@NotNull Project project, @NotNull Executor executor, @NotNull RunProfileState state,
+ @Nullable RunContentDescriptor contentToReuse, @NotNull ExecutionEnvironment environment) throws ExecutionException {
+ return execute(state, environment);
+ }
+ @Nullable
+ public RunContentDescriptor execute(@NotNull RunProfileState state, @NotNull ExecutionEnvironment environment) throws ExecutionException {
+ throw new AbstractMethodError();
+ }
}
diff --git a/platform/lang-api/src/com/intellij/execution/configuration/EnvironmentVariablesComponent.java b/platform/lang-api/src/com/intellij/execution/configuration/EnvironmentVariablesComponent.java
deleted file mode 100644
index 21c7deabff9f..000000000000
--- a/platform/lang-api/src/com/intellij/execution/configuration/EnvironmentVariablesComponent.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Copyright 2000-2012 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * User: anna
- * Date: 14-May-2007
- */
-package com.intellij.execution.configuration;
-
-import com.intellij.execution.ExecutionBundle;
-import com.intellij.openapi.ui.LabeledComponent;
-import com.intellij.openapi.ui.TextFieldWithBrowseButton;
-import com.intellij.openapi.util.Comparing;
-import com.intellij.ui.UserActivityProviderComponent;
-import com.intellij.util.ArrayUtil;
-import org.jdom.Element;
-import org.jetbrains.annotations.NonNls;
-import org.jetbrains.annotations.NotNull;
-
-import javax.swing.event.ChangeListener;
-import java.io.File;
-import java.util.HashMap;
-import java.util.Map;
-
-public class EnvironmentVariablesComponent extends LabeledComponent<TextFieldWithBrowseButton> implements UserActivityProviderComponent {
- @NonNls private static final String ENVS = "envs";
- @NonNls public static final String ENV = "env";
- @NonNls public static final String NAME = "name";
- @NonNls public static final String VALUE = "value";
- @NonNls private static final String OPTION = "option";
- @NonNls private static final String ENV_VARIABLES = "ENV_VARIABLES";
-
- private final EnvironmentVariablesTextFieldWithBrowseButton myEnvVars;
-
- public EnvironmentVariablesComponent() {
- super();
- myEnvVars = new EnvironmentVariablesTextFieldWithBrowseButton();
- setComponent(myEnvVars);
- setText(ExecutionBundle.message("environment.variables.component.title"));
- }
-
- public void setEnvs(@NotNull Map<String, String> envs) {
- myEnvVars.setEnvs(envs);
- }
-
- @NotNull
- public Map<String, String> getEnvs() {
- return myEnvVars.getEnvs();
- }
-
- public boolean isPassParentEnvs() {
- return myEnvVars.isPassParentEnvs();
- }
-
- public void setPassParentEnvs(final boolean passParentEnvs) {
- myEnvVars.setPassParentEnvs(passParentEnvs);
- }
-
- public static void readExternal(Element element, Map<String, String> envs) {
- final Element envsElement = element.getChild(ENVS);
- if (envsElement != null) {
- for (Object o : envsElement.getChildren(ENV)) {
- Element envElement = (Element)o;
- final String envName = envElement.getAttributeValue(NAME);
- final String envValue = envElement.getAttributeValue(VALUE);
- if (envName != null && envValue != null) {
- envs.put(envName, envValue);
- }
- }
- } else { //compatibility with prev version
- for (Object o : element.getChildren(OPTION)) {
- if (Comparing.strEqual(((Element)o).getAttributeValue(NAME), ENV_VARIABLES)) {
- splitVars(envs, ((Element)o).getAttributeValue(VALUE));
- break;
- }
- }
- }
- }
-
- private static void splitVars(final Map<String, String> envs, final String val) {
- if (val != null) {
- final String[] envVars = val.split(";");
- for (String envVar : envVars) {
- final int idx = envVar.indexOf('=');
- if (idx > -1) {
- envs.put(envVar.substring(0, idx), idx < envVar.length() - 1 ? envVar.substring(idx + 1) : "");
- }
- }
- }
- }
-
- public static void writeExternal(Element element, Map<String, String> envs) {
- final Element envsElement = new Element(ENVS);
- for (String envName : envs.keySet()) {
- final Element envElement = new Element(ENV);
- envElement.setAttribute(NAME, envName);
- envElement.setAttribute(VALUE, envs.get(envName));
- envsElement.addContent(envElement);
- }
- element.addContent(envsElement);
- }
-
- public static void inlineParentOccurrences(final Map<String, String> envs) {
- final Map<String, String> parentParams = new HashMap<String, String>(System.getenv());
- for (String envKey : envs.keySet()) {
- final String val = envs.get(envKey);
- if (val != null) {
- final String parentVal = parentParams.get(envKey);
- if (parentVal != null && containsEnvKeySubstitution(envKey, val)) {
- envs.put(envKey, val.replace("$" + envKey + "$", parentVal));
- }
- }
- }
- }
-
- public static boolean containsEnvKeySubstitution(final String envKey, final String val) {
- return ArrayUtil.find(val.split(File.pathSeparator), "$" + envKey + "$") != -1;
- }
-
- @Override
- public void addChangeListener(final ChangeListener changeListener) {
- myEnvVars.addChangeListener(changeListener);
- }
-
- @Override
- public void removeChangeListener(final ChangeListener changeListener) {
- myEnvVars.removeChangeListener(changeListener);
- }
-}
diff --git a/platform/lang-api/src/com/intellij/execution/configuration/EnvironmentVariablesTextFieldWithBrowseButton.java b/platform/lang-api/src/com/intellij/execution/configuration/EnvironmentVariablesTextFieldWithBrowseButton.java
deleted file mode 100644
index 0fe445371186..000000000000
--- a/platform/lang-api/src/com/intellij/execution/configuration/EnvironmentVariablesTextFieldWithBrowseButton.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright 2000-2014 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.intellij.execution.configuration;
-
-import com.intellij.execution.ExecutionBundle;
-import com.intellij.execution.util.EnvVariablesTable;
-import com.intellij.execution.util.EnvironmentVariable;
-import com.intellij.openapi.ui.DialogWrapper;
-import com.intellij.openapi.ui.TextFieldWithBrowseButton;
-import com.intellij.util.containers.ContainerUtil;
-import gnu.trove.THashMap;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import javax.swing.*;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-import java.awt.*;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.*;
-import java.util.List;
-
-public class EnvironmentVariablesTextFieldWithBrowseButton extends TextFieldWithBrowseButton {
-
- private final Map<String, String> myEnvs = new THashMap<String, String>();
- private boolean myPassParentEnvs;
- private final List<ChangeListener> myListeners = ContainerUtil.createLockFreeCopyOnWriteList();
-
- public EnvironmentVariablesTextFieldWithBrowseButton() {
- super();
- setEditable(false);
- addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(final ActionEvent e) {
- new MyEnvironmentVariablesDialog().show();
- }
- });
- }
-
- @NotNull
- public Map<String, String> getEnvs() {
- return myEnvs;
- }
-
- public void setEnvs(@NotNull Map<String, String> envs) {
- myEnvs.clear();
- myEnvs.putAll(envs);
- String envsStr = stringifyEnvs(myEnvs);
- setText(envsStr);
- }
-
- @NotNull
- private static String stringifyEnvs(@NotNull Map<String, String> envs) {
- if (envs.isEmpty()) {
- return "";
- }
- StringBuilder buf = new StringBuilder();
- for (Map.Entry<String, String> entry : envs.entrySet()) {
- if (buf.length() > 0) {
- buf.append(";");
- }
- buf.append(entry.getKey()).append("=").append(entry.getValue());
- }
- return buf.toString();
- }
-
- public boolean isPassParentEnvs() {
- return myPassParentEnvs;
- }
-
- public void setPassParentEnvs(boolean passParentEnvs) {
- if (myPassParentEnvs != passParentEnvs) {
- myPassParentEnvs = passParentEnvs;
- fireStateChanged();
- }
- }
-
- public void addChangeListener(ChangeListener changeListener) {
- myListeners.add(changeListener);
- }
-
- public void removeChangeListener(ChangeListener changeListener) {
- myListeners.remove(changeListener);
- }
-
- private void fireStateChanged() {
- for (ChangeListener listener : myListeners) {
- listener.stateChanged(new ChangeEvent(this));
- }
- }
-
- private class MyEnvironmentVariablesDialog extends DialogWrapper {
- private final EnvVariablesTable myEnvVariablesTable;
- private final JCheckBox myUseDefaultCb = new JCheckBox(ExecutionBundle.message("env.vars.checkbox.title"));
- private final JPanel myWholePanel = new JPanel(new BorderLayout());
-
- protected MyEnvironmentVariablesDialog() {
- super(EnvironmentVariablesTextFieldWithBrowseButton.this, true);
- myEnvVariablesTable = new EnvVariablesTable();
- List<EnvironmentVariable> envVariables = ContainerUtil.newArrayList();
- for (Map.Entry<String, String> entry : myEnvs.entrySet()) {
- envVariables.add(new EnvironmentVariable(entry.getKey(), entry.getValue(), false));
- }
- myEnvVariablesTable.setValues(envVariables);
- myUseDefaultCb.setSelected(isPassParentEnvs());
- myWholePanel.add(myEnvVariablesTable.getComponent(), BorderLayout.CENTER);
- myWholePanel.add(myUseDefaultCb, BorderLayout.SOUTH);
- setTitle(ExecutionBundle.message("environment.variables.dialog.title"));
- init();
- }
-
- @Override
- @Nullable
- protected JComponent createCenterPanel() {
- return myWholePanel;
- }
-
- @Override
- protected void doOKAction() {
- myEnvVariablesTable.stopEditing();
- final Map<String, String> envs = new LinkedHashMap<String, String>();
- for (EnvironmentVariable variable : myEnvVariablesTable.getEnvironmentVariables()) {
- envs.put(variable.getName(), variable.getValue());
- }
- setEnvs(envs);
- setPassParentEnvs(myUseDefaultCb.isSelected());
- super.doOKAction();
- }
- }
-}
diff --git a/platform/lang-api/src/com/intellij/execution/configuration/RunConfigurationExtensionsManager.java b/platform/lang-api/src/com/intellij/execution/configuration/RunConfigurationExtensionsManager.java
index c52f6c9da729..b42cd249ca8e 100644
--- a/platform/lang-api/src/com/intellij/execution/configuration/RunConfigurationExtensionsManager.java
+++ b/platform/lang-api/src/com/intellij/execution/configuration/RunConfigurationExtensionsManager.java
@@ -16,6 +16,7 @@ import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.WriteExternalException;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.StringInterner;
+import com.intellij.util.containers.WeakStringInterner;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -33,7 +34,7 @@ public class RunConfigurationExtensionsManager<U extends RunConfigurationBase, T
private static final String EXT_ID_ATTR = "ID";
private static final String EXTENSION_ROOT_ATTR = "EXTENSION";
protected final ExtensionPointName<T> myExtensionPointName;
- private final StringInterner myInterner = new StringInterner();
+ private final StringInterner myInterner = new WeakStringInterner();
public RunConfigurationExtensionsManager(ExtensionPointName<T> extensionPointName) {
myExtensionPointName = extensionPointName;
diff --git a/platform/lang-api/src/com/intellij/execution/configurations/RunConfigurationsSettings.java b/platform/lang-api/src/com/intellij/execution/configurations/RunConfigurationsSettings.java
index 732976cf73a7..259fd4e7484c 100644
--- a/platform/lang-api/src/com/intellij/execution/configurations/RunConfigurationsSettings.java
+++ b/platform/lang-api/src/com/intellij/execution/configurations/RunConfigurationsSettings.java
@@ -17,11 +17,12 @@ package com.intellij.execution.configurations;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.options.UnnamedConfigurable;
+import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;
public interface RunConfigurationsSettings {
ExtensionPointName<RunConfigurationsSettings> EXTENSION_POINT = ExtensionPointName.create("com.intellij.runConfigurationsSettings");
@NotNull
- UnnamedConfigurable createConfigurable();
+ UnnamedConfigurable createConfigurable(@NotNull Project project);
} \ No newline at end of file
diff --git a/platform/lang-api/src/com/intellij/execution/configurations/SimpleProgramParameters.java b/platform/lang-api/src/com/intellij/execution/configurations/SimpleProgramParameters.java
index 15bd92cfcf8c..b157d6ba7852 100644
--- a/platform/lang-api/src/com/intellij/execution/configurations/SimpleProgramParameters.java
+++ b/platform/lang-api/src/com/intellij/execution/configurations/SimpleProgramParameters.java
@@ -16,7 +16,7 @@
package com.intellij.execution.configurations;
-import com.intellij.execution.configuration.EnvironmentVariablesComponent;
+import com.intellij.util.EnvironmentUtil;
import gnu.trove.THashMap;
import org.jetbrains.annotations.NotNull;
@@ -70,7 +70,7 @@ public class SimpleProgramParameters {
public void setupEnvs(Map<String, String> envs, boolean passDefault) {
if (!envs.isEmpty()) {
final HashMap<String, String> map = new HashMap<String, String>(envs);
- EnvironmentVariablesComponent.inlineParentOccurrences(map);
+ EnvironmentUtil.inlineParentOccurrences(map);
setEnv(map);
setPassParentEnvs(passDefault);
}
diff --git a/platform/lang-api/src/com/intellij/execution/runners/AsyncGenericProgramRunner.java b/platform/lang-api/src/com/intellij/execution/runners/AsyncGenericProgramRunner.java
index aeaaf58eda65..ce7145adeaf9 100644
--- a/platform/lang-api/src/com/intellij/execution/runners/AsyncGenericProgramRunner.java
+++ b/platform/lang-api/src/com/intellij/execution/runners/AsyncGenericProgramRunner.java
@@ -17,16 +17,12 @@ package com.intellij.execution.runners;
import com.intellij.execution.ExecutionException;
import com.intellij.execution.ExecutionManager;
-import com.intellij.execution.Executor;
import com.intellij.execution.RunProfileStarter;
import com.intellij.execution.configurations.RunProfileState;
import com.intellij.execution.configurations.RunnerSettings;
import com.intellij.execution.ui.RunContentDescriptor;
-import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.AsyncResult;
import com.intellij.util.Consumer;
-import com.intellij.util.NullableConsumer;
-import com.intellij.util.ObjectUtils;
import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -38,30 +34,19 @@ public abstract class AsyncGenericProgramRunner<Settings extends RunnerSettings>
@Override
protected final void execute(@NotNull final ExecutionEnvironment environment,
@Nullable final Callback callback,
- @NotNull final Project project,
@NotNull final RunProfileState state) throws ExecutionException {
- prepare(project, environment, state).doWhenDone(new Consumer<RunProfileStarter>() {
+ prepare(environment, state).doWhenDone(new Consumer<RunProfileStarter>() {
@Override
public void consume(@Nullable final RunProfileStarter result) {
UIUtil.invokeLaterIfNeeded(new Runnable() {
@Override
public void run() {
- if (!project.isDisposed()) {
- startRunProfile(project, environment, state, callback, result);
+ if (!environment.getProject().isDisposed()) {
+ startRunProfile(environment, state, callback, result);
}
}
});
}
- }).doWhenRejected(new NullableConsumer<String>() {
- @Override
- public void consume(@Nullable String errorMessage) {
- if (project.isDisposed()) {
- return;
- }
-
- ExecutionUtil.handleExecutionError(project, environment.getExecutor().getToolWindowId(), environment.getRunProfile(),
- new ExecutionException(ObjectUtils.chooseNotNull(errorMessage, "Internal error")));
- }
});
}
@@ -69,29 +54,23 @@ public abstract class AsyncGenericProgramRunner<Settings extends RunnerSettings>
* Makes all the needed preparations for the further execution. Although this method is called in EDT,
* these preparations can be performed in a background thread.
*
- * @param project Project instance
+ * You must call {@link ExecutionUtil#handleExecutionError} in case of error
+ *
* @param environment ExecutionEnvironment instance
* @param state RunProfileState instance
* @return RunProfileStarter async result
*/
@NotNull
- protected abstract AsyncResult<RunProfileStarter> prepare(@NotNull Project project,
- @NotNull ExecutionEnvironment environment,
- @NotNull RunProfileState state) throws ExecutionException;
+ protected abstract AsyncResult<RunProfileStarter> prepare(@NotNull ExecutionEnvironment environment, @NotNull RunProfileState state) throws ExecutionException;
- private static void startRunProfile(@NotNull Project project,
- @NotNull ExecutionEnvironment environment,
+ private static void startRunProfile(@NotNull ExecutionEnvironment environment,
@NotNull RunProfileState state,
@Nullable final Callback callback,
@Nullable final RunProfileStarter starter) {
- ExecutionManager.getInstance(project).startRunProfile(new RunProfileStarter() {
+ ExecutionManager.getInstance(environment.getProject()).startRunProfile(new RunProfileStarter() {
@Override
- public RunContentDescriptor execute(@NotNull Project project,
- @NotNull Executor executor,
- @NotNull RunProfileState state,
- @Nullable RunContentDescriptor contentToReuse,
- @NotNull ExecutionEnvironment environment) throws ExecutionException {
- return postProcess(environment, starter == null ? null : starter.execute(project, executor, state, contentToReuse, environment), callback);
+ public RunContentDescriptor execute(@NotNull RunProfileState state, @NotNull ExecutionEnvironment environment) throws ExecutionException {
+ return postProcess(environment, starter == null ? null : starter.execute(state, environment), callback);
}
}, state, environment);
}
diff --git a/platform/lang-api/src/com/intellij/execution/runners/BaseProgramRunner.java b/platform/lang-api/src/com/intellij/execution/runners/BaseProgramRunner.java
index 29c9e5be0767..a2028185089b 100644
--- a/platform/lang-api/src/com/intellij/execution/runners/BaseProgramRunner.java
+++ b/platform/lang-api/src/com/intellij/execution/runners/BaseProgramRunner.java
@@ -23,7 +23,6 @@ import com.intellij.execution.RunManager;
import com.intellij.execution.configurations.*;
import com.intellij.execution.ui.RunContentDescriptor;
import com.intellij.openapi.options.SettingsEditor;
-import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -61,14 +60,12 @@ abstract class BaseProgramRunner<Settings extends RunnerSettings> implements Pro
return;
}
- Project project = environment.getProject();
- RunManager.getInstance(project).refreshUsagesList(environment.getRunProfile());
- execute(environment, callback, project, state);
+ RunManager.getInstance(environment.getProject()).refreshUsagesList(environment.getRunProfile());
+ execute(environment, callback, state);
}
protected abstract void execute(@NotNull ExecutionEnvironment environment,
@Nullable Callback callback,
- @NotNull Project project,
@NotNull RunProfileState state) throws ExecutionException;
@Nullable
diff --git a/platform/lang-api/src/com/intellij/execution/runners/ExecutionUtil.java b/platform/lang-api/src/com/intellij/execution/runners/ExecutionUtil.java
index 0d15a272498c..b6c300c3f7e2 100644
--- a/platform/lang-api/src/com/intellij/execution/runners/ExecutionUtil.java
+++ b/platform/lang-api/src/com/intellij/execution/runners/ExecutionUtil.java
@@ -31,6 +31,7 @@ import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.MessageType;
+import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.wm.ToolWindowManager;
import com.intellij.ui.content.Content;
import com.intellij.util.ObjectUtils;
@@ -65,18 +66,19 @@ public class ExecutionUtil {
@NotNull final String toolWindowId,
@NotNull String taskName,
@NotNull ExecutionException e) {
- if (e instanceof RunCanceledByUserException) return;
+ if (e instanceof RunCanceledByUserException) {
+ return;
+ }
LOG.debug(e);
String description = e.getMessage();
- HyperlinkListener listener = null;
-
if (description == null) {
LOG.warn("Execution error without description", e);
description = "Unknown error";
}
+ HyperlinkListener listener = null;
if ((description.contains("87") || description.contains("111") || description.contains("206")) &&
e instanceof ProcessNotCreatedException &&
!PropertiesComponent.getInstance(project).isTrueValue("dynamic.classpath")) {
@@ -110,7 +112,14 @@ public class ExecutionUtil {
UIUtil.invokeLaterIfNeeded(new Runnable() {
@Override
public void run() {
- ToolWindowManager.getInstance(project).notifyByBalloon(toolWindowId, MessageType.ERROR, fullMessage, null, finalListener);
+ ToolWindowManager toolWindowManager = ToolWindowManager.getInstance(project);
+ if (toolWindowManager.canShowNotification(toolWindowId)) {
+ //noinspection SSBasedInspection
+ toolWindowManager.notifyByBalloon(toolWindowId, MessageType.ERROR, fullMessage, null, finalListener);
+ }
+ else {
+ Messages.showErrorDialog(project, fullMessage, "");
+ }
NotificationListener notificationListener = ObjectUtils.tryCast(finalListener, NotificationListener.class);
ourNotificationGroup.createNotification(title, finalDescription, NotificationType.ERROR, notificationListener).notify(project);
}
diff --git a/platform/lang-api/src/com/intellij/execution/runners/GenericProgramRunner.java b/platform/lang-api/src/com/intellij/execution/runners/GenericProgramRunner.java
index adbd04e822e6..3c59227eb85a 100644
--- a/platform/lang-api/src/com/intellij/execution/runners/GenericProgramRunner.java
+++ b/platform/lang-api/src/com/intellij/execution/runners/GenericProgramRunner.java
@@ -18,7 +18,6 @@ package com.intellij.execution.runners;
import com.intellij.execution.ExecutionException;
import com.intellij.execution.ExecutionManager;
-import com.intellij.execution.Executor;
import com.intellij.execution.RunProfileStarter;
import com.intellij.execution.configurations.RunProfileState;
import com.intellij.execution.configurations.RunnerSettings;
@@ -36,24 +35,30 @@ public abstract class GenericProgramRunner<Settings extends RunnerSettings> exte
public static final String CONTENT_TO_REUSE = CONTENT_TO_REUSE_DATA_KEY.getName();
@Override
- protected void execute(@NotNull ExecutionEnvironment environment, @Nullable final Callback callback, @NotNull Project project, @NotNull RunProfileState state)
+ protected void execute(@NotNull ExecutionEnvironment environment, @Nullable final Callback callback, @NotNull RunProfileState state)
throws ExecutionException {
- ExecutionManager.getInstance(project).startRunProfile(new RunProfileStarter() {
+ ExecutionManager.getInstance(environment.getProject()).startRunProfile(new RunProfileStarter() {
@Override
- public RunContentDescriptor execute(@NotNull Project project,
- @NotNull Executor executor,
- @NotNull RunProfileState state,
- @Nullable RunContentDescriptor contentToReuse,
- @NotNull ExecutionEnvironment environment) throws ExecutionException {
- return postProcess(environment, doExecute(project, state, contentToReuse, environment), callback);
+ public RunContentDescriptor execute(@NotNull RunProfileState state, @NotNull ExecutionEnvironment environment) throws ExecutionException {
+ return postProcess(environment, doExecute(state, environment), callback);
}
}, state, environment);
}
@Nullable
- protected abstract RunContentDescriptor doExecute(@NotNull Project project,
- @NotNull RunProfileState state,
- @Nullable RunContentDescriptor contentToReuse,
- @NotNull ExecutionEnvironment environment) throws ExecutionException;
+ protected RunContentDescriptor doExecute(@NotNull RunProfileState state, @NotNull ExecutionEnvironment environment) throws ExecutionException {
+ return doExecute(environment.getProject(), state, environment.getContentToReuse(), environment);
+ }
+ @Deprecated
+ @Nullable
+ /**
+ * @deprecated to remove in IDEA 16
+ */
+ protected RunContentDescriptor doExecute(@NotNull Project project,
+ @NotNull RunProfileState state,
+ @Nullable RunContentDescriptor contentToReuse,
+ @NotNull ExecutionEnvironment environment) throws ExecutionException {
+ throw new AbstractMethodError();
+ }
}
diff --git a/platform/lang-api/src/com/intellij/ide/util/projectWizard/ModuleBuilder.java b/platform/lang-api/src/com/intellij/ide/util/projectWizard/ModuleBuilder.java
index d72a0640c595..fddb2b2f50b7 100644
--- a/platform/lang-api/src/com/intellij/ide/util/projectWizard/ModuleBuilder.java
+++ b/platform/lang-api/src/com/intellij/ide/util/projectWizard/ModuleBuilder.java
@@ -32,6 +32,7 @@ import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.roots.ui.configuration.ModulesProvider;
import com.intellij.openapi.startup.StartupManager;
import com.intellij.openapi.ui.Messages;
+import com.intellij.openapi.util.Condition;
import com.intellij.openapi.util.InvalidDataException;
import com.intellij.openapi.util.ThrowableComputable;
import com.intellij.openapi.util.io.FileUtil;
@@ -39,6 +40,7 @@ import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.EventDispatcher;
+import com.intellij.util.containers.ContainerUtil;
import org.jdom.JDOMException;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
@@ -70,7 +72,17 @@ public abstract class ModuleBuilder extends AbstractModuleBuilder {
for (ModuleBuilderFactory factory : EP_NAME.getExtensions()) {
result.add(factory.createBuilder());
}
- return result;
+ return ContainerUtil.filter(result, new Condition<ModuleBuilder>() {
+
+ @Override
+ public boolean value(ModuleBuilder moduleBuilder) {
+ return moduleBuilder.isAvailable();
+ }
+ });
+ }
+
+ protected boolean isAvailable() {
+ return true;
}
@Nullable
diff --git a/platform/lang-api/src/com/intellij/lang/documentation/AbstractDocumentationProvider.java b/platform/lang-api/src/com/intellij/lang/documentation/AbstractDocumentationProvider.java
index f57190e5725e..9a80bf72ed6d 100644
--- a/platform/lang-api/src/com/intellij/lang/documentation/AbstractDocumentationProvider.java
+++ b/platform/lang-api/src/com/intellij/lang/documentation/AbstractDocumentationProvider.java
@@ -15,15 +15,6 @@
*/
package com.intellij.lang.documentation;
-import com.intellij.openapi.editor.Editor;
-import com.intellij.psi.PsiElement;
-import com.intellij.psi.PsiFile;
-import com.intellij.psi.PsiManager;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.List;
-
/**
* @author Dmitry Avdeev
*/
diff --git a/platform/lang-api/src/com/intellij/lang/documentation/CompositeDocumentationProvider.java b/platform/lang-api/src/com/intellij/lang/documentation/CompositeDocumentationProvider.java
index 17bc66f8ada2..14a7c4b99a94 100644
--- a/platform/lang-api/src/com/intellij/lang/documentation/CompositeDocumentationProvider.java
+++ b/platform/lang-api/src/com/intellij/lang/documentation/CompositeDocumentationProvider.java
@@ -22,13 +22,11 @@ import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiManager;
+import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
+import java.util.*;
public class CompositeDocumentationProvider extends DocumentationProviderEx implements ExternalDocumentationProvider, ExternalDocumentationHandler {
@@ -53,14 +51,21 @@ public class CompositeDocumentationProvider extends DocumentationProviderEx impl
myProviders = providers;
}
+ @NotNull
+ public List<DocumentationProvider> getAllProviders() {
+ return ContainerUtil.concat(getProviders(), Arrays.asList(Extensions.getExtensions(EP_NAME)));
+ }
+
+ @NotNull
public List<DocumentationProvider> getProviders() {
return myProviders;
}
@Override
public boolean handleExternal(PsiElement element, PsiElement originalElement) {
- for (DocumentationProvider provider : myProviders) {
- if (provider instanceof ExternalDocumentationHandler && ((ExternalDocumentationHandler)provider).handleExternal(element, originalElement)) {
+ for (DocumentationProvider provider : getAllProviders()) {
+ if (provider instanceof ExternalDocumentationHandler &&
+ ((ExternalDocumentationHandler)provider).handleExternal(element, originalElement)) {
return true;
}
}
@@ -70,8 +75,9 @@ public class CompositeDocumentationProvider extends DocumentationProviderEx impl
@Override
public boolean handleExternalLink(PsiManager psiManager, String link, PsiElement context) {
- for (DocumentationProvider provider : myProviders) {
- if (provider instanceof ExternalDocumentationHandler && ((ExternalDocumentationHandler)provider).handleExternalLink(psiManager, link, context)) {
+ for (DocumentationProvider provider : getAllProviders()) {
+ if (provider instanceof ExternalDocumentationHandler &&
+ ((ExternalDocumentationHandler)provider).handleExternalLink(psiManager, link, context)) {
return true;
}
}
@@ -81,7 +87,7 @@ public class CompositeDocumentationProvider extends DocumentationProviderEx impl
@Override
public boolean canFetchDocumentationLink(String link) {
- for (DocumentationProvider provider : myProviders) {
+ for (DocumentationProvider provider : getAllProviders()) {
if (provider instanceof ExternalDocumentationHandler && ((ExternalDocumentationHandler)provider).canFetchDocumentationLink(link)) {
return true;
}
@@ -93,7 +99,7 @@ public class CompositeDocumentationProvider extends DocumentationProviderEx impl
@NotNull
@Override
public String fetchExternalDocumentation(@NotNull String link, @Nullable PsiElement element) {
- for (DocumentationProvider provider : myProviders) {
+ for (DocumentationProvider provider : getAllProviders()) {
if (provider instanceof ExternalDocumentationHandler && ((ExternalDocumentationHandler)provider).canFetchDocumentationLink(link)) {
return ((ExternalDocumentationHandler)provider).fetchExternalDocumentation(link, element);
}
@@ -104,12 +110,8 @@ public class CompositeDocumentationProvider extends DocumentationProviderEx impl
@Override
public String getQuickNavigateInfo(PsiElement element, PsiElement originalElement) {
- for ( DocumentationProvider provider : myProviders ) {
+ for (DocumentationProvider provider : getAllProviders()) {
String result = provider.getQuickNavigateInfo(element, originalElement);
- if ( result != null ) return result;
- }
- for (DocumentationProvider provider : Extensions.getExtensions(EP_NAME)) {
- final String result = provider.getQuickNavigateInfo(element, originalElement);
if (result != null) return result;
}
return null;
@@ -117,14 +119,8 @@ public class CompositeDocumentationProvider extends DocumentationProviderEx impl
@Override
public List<String> getUrlFor(PsiElement element, PsiElement originalElement) {
- for ( DocumentationProvider provider : myProviders ) {
- List<String> result = provider.getUrlFor(element,originalElement);
- if ( result != null ) {
- return result;
- }
- }
- for (DocumentationProvider provider : Extensions.getExtensions(EP_NAME)) {
- final List<String> result = provider.getUrlFor(element, originalElement);
+ for (DocumentationProvider provider : getAllProviders()) {
+ List<String> result = provider.getUrlFor(element, originalElement);
if (result != null) {
return result;
}
@@ -134,14 +130,8 @@ public class CompositeDocumentationProvider extends DocumentationProviderEx impl
@Override
public String generateDoc(PsiElement element, PsiElement originalElement) {
- for ( DocumentationProvider provider : myProviders ) {
- String result = provider.generateDoc(element,originalElement);
- if ( result != null ) {
- return result;
- }
- }
- for (DocumentationProvider provider : Extensions.getExtensions(EP_NAME)) {
- final String result = provider.generateDoc(element, originalElement);
+ for (DocumentationProvider provider : getAllProviders()) {
+ String result = provider.generateDoc(element, originalElement);
if (result != null) {
return result;
}
@@ -151,14 +141,8 @@ public class CompositeDocumentationProvider extends DocumentationProviderEx impl
@Override
public PsiElement getDocumentationElementForLookupItem(PsiManager psiManager, Object object, PsiElement element) {
- for ( DocumentationProvider provider : myProviders ) {
- PsiElement result = provider.getDocumentationElementForLookupItem(psiManager,object,element);
- if ( result != null ) {
- return result;
- }
- }
- for (DocumentationProvider provider : Extensions.getExtensions(EP_NAME)) {
- final PsiElement result = provider.getDocumentationElementForLookupItem(psiManager, object, element);
+ for (DocumentationProvider provider : getAllProviders()) {
+ PsiElement result = provider.getDocumentationElementForLookupItem(psiManager, object, element);
if (result != null) {
return result;
}
@@ -168,12 +152,8 @@ public class CompositeDocumentationProvider extends DocumentationProviderEx impl
@Override
public PsiElement getDocumentationElementForLink(PsiManager psiManager, String link, PsiElement context) {
- for ( DocumentationProvider provider : myProviders ) {
- PsiElement result = provider.getDocumentationElementForLink(psiManager,link,context);
- if ( result != null ) return result;
- }
- for (DocumentationProvider provider : Extensions.getExtensions(EP_NAME)) {
- final PsiElement result = provider.getDocumentationElementForLink(psiManager, link, context);
+ for (DocumentationProvider provider : getAllProviders()) {
+ PsiElement result = provider.getDocumentationElementForLink(psiManager, link, context);
if (result != null) return result;
}
return null;
@@ -182,7 +162,7 @@ public class CompositeDocumentationProvider extends DocumentationProviderEx impl
@Nullable
public CodeDocumentationProvider getFirstCodeDocumentationProvider() {
- for (DocumentationProvider provider : myProviders) {
+ for (DocumentationProvider provider : getAllProviders()) {
if (provider instanceof CodeDocumentationProvider) {
return (CodeDocumentationProvider)provider;
}
@@ -192,7 +172,7 @@ public class CompositeDocumentationProvider extends DocumentationProviderEx impl
@Override
public String fetchExternalDocumentation(Project project, PsiElement element, List<String> docUrls) {
- for (DocumentationProvider provider : myProviders) {
+ for (DocumentationProvider provider : getAllProviders()) {
if (provider instanceof ExternalDocumentationProvider) {
final String doc = ((ExternalDocumentationProvider)provider).fetchExternalDocumentation(project, element, docUrls);
if (doc != null) {
@@ -205,9 +185,9 @@ public class CompositeDocumentationProvider extends DocumentationProviderEx impl
@Override
public boolean hasDocumentationFor(PsiElement element, PsiElement originalElement) {
- for (DocumentationProvider provider : myProviders) {
+ for (DocumentationProvider provider : getAllProviders()) {
if (provider instanceof ExternalDocumentationProvider) {
- if (((ExternalDocumentationProvider) provider).hasDocumentationFor(element, originalElement)) return true;
+ if (((ExternalDocumentationProvider)provider).hasDocumentationFor(element, originalElement)) return true;
}
else {
if (hasUrlsFor(provider, element, originalElement)) return true;
@@ -218,7 +198,7 @@ public class CompositeDocumentationProvider extends DocumentationProviderEx impl
@Override
public boolean canPromptToConfigureDocumentation(PsiElement element) {
- for (DocumentationProvider provider : myProviders) {
+ for (DocumentationProvider provider : getAllProviders()) {
if (provider instanceof ExternalDocumentationProvider &&
((ExternalDocumentationProvider)provider).canPromptToConfigureDocumentation(element)) {
return true;
@@ -229,7 +209,7 @@ public class CompositeDocumentationProvider extends DocumentationProviderEx impl
@Override
public void promptToConfigureDocumentation(PsiElement element) {
- for (DocumentationProvider provider : myProviders) {
+ for (DocumentationProvider provider : getAllProviders()) {
if (provider instanceof ExternalDocumentationProvider &&
((ExternalDocumentationProvider)provider).canPromptToConfigureDocumentation(element)) {
((ExternalDocumentationProvider)provider).promptToConfigureDocumentation(element);
@@ -249,7 +229,7 @@ public class CompositeDocumentationProvider extends DocumentationProviderEx impl
public PsiElement getCustomDocumentationElement(@NotNull Editor editor,
@NotNull PsiFile file,
@Nullable PsiElement contextElement) {
- for (DocumentationProvider provider : myProviders) {
+ for (DocumentationProvider provider : getAllProviders()) {
if (provider instanceof DocumentationProviderEx) {
PsiElement element = ((DocumentationProviderEx)provider).getCustomDocumentationElement(editor, file, contextElement);
if (element != null) {
@@ -262,6 +242,6 @@ public class CompositeDocumentationProvider extends DocumentationProviderEx impl
@Override
public String toString() {
- return myProviders.toString();
+ return getProviders().toString();
}
}
diff --git a/platform/lang-api/src/com/intellij/lang/documentation/DocumentationProviderEx.java b/platform/lang-api/src/com/intellij/lang/documentation/DocumentationProviderEx.java
index 5ae5af91bac0..8b9143a0d995 100644
--- a/platform/lang-api/src/com/intellij/lang/documentation/DocumentationProviderEx.java
+++ b/platform/lang-api/src/com/intellij/lang/documentation/DocumentationProviderEx.java
@@ -22,6 +22,7 @@ import com.intellij.psi.PsiManager;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import java.awt.*;
import java.util.List;
/**
@@ -57,4 +58,9 @@ public class DocumentationProviderEx implements DocumentationProvider {
public PsiElement getCustomDocumentationElement(@NotNull final Editor editor, @NotNull final PsiFile file, @Nullable PsiElement contextElement) {
return null;
}
+
+ @Nullable
+ public Image getLocalImageForElement(@NotNull PsiElement element, @NotNull String imageSpec) {
+ return null;
+ }
}
diff --git a/platform/lang-api/src/com/intellij/lexer/CompositeLexer.java b/platform/lang-api/src/com/intellij/lexer/CompositeLexer.java
index d728aff0e823..af456e0074ac 100644
--- a/platform/lang-api/src/com/intellij/lexer/CompositeLexer.java
+++ b/platform/lang-api/src/com/intellij/lexer/CompositeLexer.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2013 JetBrains s.r.o.
+ * Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,6 +18,16 @@ package com.intellij.lexer;
import com.intellij.psi.tree.IElementType;
import org.jetbrains.annotations.NotNull;
+/**
+ * Naive implementation of lexer that able to combine element types of two other lexers.
+ *
+ * The implementation doesn't give any guarantees about valid points of 'incremental relexing',
+ * because it returns start/end-offsets not for token that was used but for the shortest one.
+ *
+ * Also it reduces state size to 16 bits for nested lexer.
+ *
+ * @deprecated use {@link com.intellij.psi.templateLanguages.TemplateBlackAndWhiteLexer} or {@link com.intellij.lexer.LayeredLexer} instead
+ */
public abstract class CompositeLexer extends LexerBase {
private final Lexer myLexer1;
private final Lexer myLexer2;
diff --git a/platform/lang-api/src/com/intellij/openapi/roots/ui/OrderRootTypeUIFactory.java b/platform/lang-api/src/com/intellij/openapi/roots/ui/OrderRootTypeUIFactory.java
index 021c055dd70f..c9a0053619ce 100644
--- a/platform/lang-api/src/com/intellij/openapi/roots/ui/OrderRootTypeUIFactory.java
+++ b/platform/lang-api/src/com/intellij/openapi/roots/ui/OrderRootTypeUIFactory.java
@@ -23,6 +23,7 @@ import com.intellij.openapi.projectRoots.ui.SdkPathEditor;
import com.intellij.openapi.roots.OrderRootType;
import com.intellij.openapi.util.KeyedExtensionFactory;
import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
import javax.swing.*;
@@ -41,6 +42,7 @@ public interface OrderRootTypeUIFactory {
}
};
+ @Nullable
SdkPathEditor createPathEditor(Sdk sdk);
Icon getIcon();
diff --git a/platform/lang-api/src/com/intellij/psi/codeStyle/LegacyCodeStyleSettingsManager.java b/platform/lang-api/src/com/intellij/psi/codeStyle/LegacyCodeStyleSettingsManager.java
index c6d4c738c1fd..fdc9a662df1d 100644
--- a/platform/lang-api/src/com/intellij/psi/codeStyle/LegacyCodeStyleSettingsManager.java
+++ b/platform/lang-api/src/com/intellij/psi/codeStyle/LegacyCodeStyleSettingsManager.java
@@ -31,7 +31,6 @@ import org.jdom.Element;
}
)
public class LegacyCodeStyleSettingsManager implements PersistentStateComponent<Element> {
-
private Element myState;
@Override
diff --git a/platform/lang-api/src/com/intellij/psi/codeStyle/arrangement/match/ArrangementSectionRule.java b/platform/lang-api/src/com/intellij/psi/codeStyle/arrangement/match/ArrangementSectionRule.java
index 9e9e9c0caa0f..2f7249f9d22d 100644
--- a/platform/lang-api/src/com/intellij/psi/codeStyle/arrangement/match/ArrangementSectionRule.java
+++ b/platform/lang-api/src/com/intellij/psi/codeStyle/arrangement/match/ArrangementSectionRule.java
@@ -53,7 +53,7 @@ public class ArrangementSectionRule implements Cloneable {
}
public static ArrangementSectionRule create(@Nullable String start, @Nullable String end, @NotNull StdArrangementMatchRule... rules) {
- return create(start, end, ContainerUtil.newArrayList(rules));
+ return create(start, end, rules.length == 0 ? ContainerUtil.<StdArrangementMatchRule>emptyList() : ContainerUtil.newArrayList(rules));
}
public static ArrangementSectionRule create(@Nullable String start, @Nullable String end, @NotNull List<StdArrangementMatchRule> rules) {
@@ -68,14 +68,10 @@ public class ArrangementSectionRule implements Cloneable {
return new ArrangementSectionRule(start, end, matchRules);
}
- @Nullable
- private static StdArrangementMatchRule createSectionRule(@Nullable String comment, @NotNull ArrangementSettingsToken token) {
- if (StringUtil.isEmpty(comment)) {
- return null;
- }
- final ArrangementAtomMatchCondition type = new ArrangementAtomMatchCondition(token);
+ @NotNull
+ private static StdArrangementMatchRule createSectionRule(@NotNull String comment, @NotNull ArrangementSettingsToken token) {
final ArrangementAtomMatchCondition text = new ArrangementAtomMatchCondition(StdArrangementTokens.Regexp.TEXT, comment);
- final ArrangementMatchCondition condition = ArrangementUtil.combine(type, text);
+ final ArrangementMatchCondition condition = ArrangementUtil.combine(new ArrangementAtomMatchCondition(token), text);
return new StdArrangementMatchRule(new StdArrangementEntryMatcher(condition));
}
diff --git a/platform/lang-api/src/com/intellij/psi/util/PsiUtilBase.java b/platform/lang-api/src/com/intellij/psi/util/PsiUtilBase.java
index 13f84cb1dc4f..4565832c310b 100644
--- a/platform/lang-api/src/com/intellij/psi/util/PsiUtilBase.java
+++ b/platform/lang-api/src/com/intellij/psi/util/PsiUtilBase.java
@@ -46,7 +46,7 @@ public class PsiUtilBase extends PsiUtilCore implements PsiEditorUtil {
private static final Logger LOG = Logger.getInstance("#com.intellij.psi.util.PsiUtilBase");
public static final Comparator<Language> LANGUAGE_COMPARATOR = new Comparator<Language>() {
@Override
- public int compare(Language o1, Language o2) {
+ public int compare(@NotNull Language o1, @NotNull Language o2) {
return o1.getID().compareTo(o2.getID());
}
};