diff options
author | Tor Norbye <tnorbye@google.com> | 2013-08-13 20:05:21 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2013-08-13 20:05:21 +0000 |
commit | 2178bcb2e403a8f0a11a1d724f56174bc5f3de5a (patch) | |
tree | 72354ec24788bcbdcafc9141f98bfc89b32377dd /java | |
parent | d8c42e00b86935ac7ab5e60d3f40e1923bc168de (diff) | |
parent | 64efd6ae489fe89e97a659999c87e1e41eea8e79 (diff) | |
download | idea-2178bcb2e403a8f0a11a1d724f56174bc5f3de5a.tar.gz |
Merge "Snapshot 7e2655e04684ed009ba5dfe0caa809c5cabc6157 from master branch of git://git.jetbrains.org/idea/community.git"
Diffstat (limited to 'java')
30 files changed, 168 insertions, 112 deletions
diff --git a/java/compiler/impl/src/com/intellij/openapi/compiler/util/InspectionValidatorWrapper.java b/java/compiler/impl/src/com/intellij/openapi/compiler/util/InspectionValidatorWrapper.java index 1a42de2c551c..88fe95c643cb 100644 --- a/java/compiler/impl/src/com/intellij/openapi/compiler/util/InspectionValidatorWrapper.java +++ b/java/compiler/impl/src/com/intellij/openapi/compiler/util/InspectionValidatorWrapper.java @@ -8,6 +8,8 @@ import com.intellij.codeInsight.daemon.HighlightDisplayKey; import com.intellij.codeInsight.daemon.impl.AnnotationHolderImpl; import com.intellij.codeInsight.daemon.impl.HighlightInfo; import com.intellij.codeInspection.*; +import com.intellij.codeInspection.ex.InspectionManagerEx; +import com.intellij.codeInspection.ex.LocalInspectionToolWrapper; import com.intellij.compiler.options.ValidationConfiguration; import com.intellij.lang.ExternalLanguageAnnotators; import com.intellij.lang.StdLanguages; @@ -76,6 +78,13 @@ public class InspectionValidatorWrapper implements Validator { return ourCompilationThreads.get().booleanValue(); } + private static List<ProblemDescriptor> runInspectionOnFile(@NotNull PsiFile file, + @NotNull LocalInspectionTool inspectionTool) { + InspectionManagerEx inspectionManager = (InspectionManagerEx)InspectionManager.getInstance(file.getProject()); + GlobalInspectionContext context = inspectionManager.createNewGlobalContext(false); + return InspectionEngine.runInspectionOnFile(file, new LocalInspectionToolWrapper(inspectionTool), context); + } + private class MyValidatorProcessingItem implements ProcessingItem { private final VirtualFile myVirtualFile; private final PsiFile myPsiFile; @@ -281,7 +290,7 @@ public class InspectionValidatorWrapper implements Validator { final LocalInspectionTool inspectionTool, final HighlightDisplayLevel level) { Map<ProblemDescriptor, HighlightDisplayLevel> problemsMap = new LinkedHashMap<ProblemDescriptor, HighlightDisplayLevel>(); - for (ProblemDescriptor descriptor : InspectionRunningUtil.runInspectionOnFile(file, inspectionTool)) { + for (ProblemDescriptor descriptor : runInspectionOnFile(file, inspectionTool)) { problemsMap.put(descriptor, level); } return problemsMap; diff --git a/java/compiler/impl/src/com/intellij/packaging/impl/run/BuildArtifactsBeforeRunTaskProvider.java b/java/compiler/impl/src/com/intellij/packaging/impl/run/BuildArtifactsBeforeRunTaskProvider.java index 2154a095007e..e0342ebf23e6 100644 --- a/java/compiler/impl/src/com/intellij/packaging/impl/run/BuildArtifactsBeforeRunTaskProvider.java +++ b/java/compiler/impl/src/com/intellij/packaging/impl/run/BuildArtifactsBeforeRunTaskProvider.java @@ -65,7 +65,7 @@ public class BuildArtifactsBeforeRunTaskProvider extends BeforeRunTaskProvider<B @Override public void artifactRemoved(@NotNull Artifact artifact) { final RunManagerEx runManager = RunManagerEx.getInstanceEx(myProject); - for (RunConfiguration configuration : runManager.getAllConfigurations()) { + for (RunConfiguration configuration : runManager.getAllConfigurationsList()) { final List<BuildArtifactsBeforeRunTask> tasks = runManager.getBeforeRunTasks(configuration, ID); for (BuildArtifactsBeforeRunTask task : tasks) { final String artifactName = artifact.getName(); diff --git a/java/debugger/impl/src/com/intellij/debugger/apiAdapters/TransportServiceWrapper.java b/java/debugger/impl/src/com/intellij/debugger/apiAdapters/TransportServiceWrapper.java index a464864743b2..84a4679919ba 100644 --- a/java/debugger/impl/src/com/intellij/debugger/apiAdapters/TransportServiceWrapper.java +++ b/java/debugger/impl/src/com/intellij/debugger/apiAdapters/TransportServiceWrapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -17,7 +17,6 @@ package com.intellij.debugger.apiAdapters; import com.intellij.execution.ExecutionException; import com.intellij.openapi.diagnostic.Logger; -import com.intellij.openapi.util.SystemInfo; import com.intellij.util.ArrayUtil; import com.sun.jdi.connect.Transport; @@ -25,8 +24,8 @@ import java.io.IOException; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import java.util.Map; import java.util.HashMap; +import java.util.Map; /** * @author max @@ -36,14 +35,9 @@ public class TransportServiceWrapper { private final Object myDelegateObject; private final Class myDelegateClass; - @SuppressWarnings({"HardCodedStringLiteral"}) - private static final String SOCKET_TRANSPORT_CLASS = SystemInfo.JAVA_VERSION.startsWith("1.4") - ? "com.sun.tools.jdi.SocketTransport" - : "com.sun.tools.jdi.SocketTransportService"; - @SuppressWarnings({"HardCodedStringLiteral"}) - private static final String SHMEM_TRANSPORT_CLASS = SystemInfo.JAVA_VERSION.startsWith("1.4") - ? "com.sun.tools.jdi.SharedMemoryTransport" - : "com.sun.tools.jdi.SharedMemoryTransportService"; + + private static final String SOCKET_TRANSPORT_CLASS = "com.sun.tools.jdi.SocketTransportService"; + private static final String SHMEM_TRANSPORT_CLASS = "com.sun.tools.jdi.SharedMemoryTransportService"; private final Map<String, Object> myListenAddresses = new HashMap<String, Object>(); @@ -172,7 +166,7 @@ public class TransportServiceWrapper { transport = new TransportServiceWrapper(Class.forName(SHMEM_TRANSPORT_CLASS)); } } - catch (UnsatisfiedLinkError e) { + catch (UnsatisfiedLinkError ignored) { transport = new TransportServiceWrapper(Class.forName(SOCKET_TRANSPORT_CLASS)); } } diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerUtilsImpl.java b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerUtilsImpl.java index 269799d07624..6be6899d6bb0 100644 --- a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerUtilsImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerUtilsImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -45,23 +45,28 @@ import java.io.IOException; public class DebuggerUtilsImpl extends DebuggerUtilsEx{ private static final Logger LOG = Logger.getInstance("#com.intellij.debugger.impl.DebuggerUtilsImpl"); + @Override public PsiExpression substituteThis(PsiExpression expressionWithThis, PsiExpression howToEvaluateThis, Value howToEvaluateThisValue, StackFrameContext context) throws EvaluateException { return DebuggerTreeNodeExpression.substituteThis(expressionWithThis, howToEvaluateThis, howToEvaluateThisValue); } + @Override public EvaluatorBuilder getEvaluatorBuilder() { return EvaluatorBuilderImpl.getInstance(); } + @Override public DebuggerTreeNode getSelectedNode(DataContext context) { return DebuggerAction.getSelectedNode(context); } + @Override public DebuggerContextImpl getDebuggerContext(DataContext context) { return DebuggerAction.getDebuggerContext(context); } + @Override @SuppressWarnings({"HardCodedStringLiteral"}) public Element writeTextWithImports(TextWithImports text) { Element element = new Element("TextWithImports"); @@ -71,6 +76,7 @@ public class DebuggerUtilsImpl extends DebuggerUtilsEx{ return element; } + @Override @SuppressWarnings({"HardCodedStringLiteral"}) public TextWithImports readTextWithImports(Element element) { LOG.assertTrue("TextWithImports".equals(element.getName())); @@ -83,39 +89,45 @@ public class DebuggerUtilsImpl extends DebuggerUtilsEx{ } } + @Override public void writeTextWithImports(Element root, String name, TextWithImports value) { LOG.assertTrue(value.getKind() == CodeFragmentKind.EXPRESSION); JDOMExternalizerUtil.writeField(root, name, value.toExternalForm()); } + @Override public TextWithImports readTextWithImports(Element root, String name) { String s = JDOMExternalizerUtil.readField(root, name); if(s == null) return null; return new TextWithImportsImpl(CodeFragmentKind.EXPRESSION, s); } + @Override public TextWithImports createExpressionWithImports(String expression) { return new TextWithImportsImpl(CodeFragmentKind.EXPRESSION, expression); } + @Override public PsiElement getContextElement(StackFrameContext context) { return PositionUtil.getContextElement(context); } + @Override public PsiClass chooseClassDialog(String title, Project project) { TreeClassChooser dialog = TreeClassChooserFactory.getInstance(project).createAllProjectScopeChooser(title); dialog.showDialog(); return dialog.getSelected(); } + @Override public CompletionEditor createEditor(Project project, PsiElement context, String recentsId) { return new DebuggerExpressionComboBox(project, context, recentsId, DefaultCodeFragmentFactory.getInstance()); } + @Override public String findAvailableDebugAddress(final boolean useSockets) throws ExecutionException { final TransportServiceWrapper transportService = TransportServiceWrapper.getTransportService(useSockets); - - if(useSockets) { + if (useSockets) { final int freePort; try { freePort = NetUtils.findAvailableSocketPort(); @@ -127,7 +139,7 @@ public class DebuggerUtilsImpl extends DebuggerUtilsEx{ } try { - String address = transportService.startListening(); + String address = transportService.startListening(); transportService.stopListening(address); return address; } @@ -135,4 +147,4 @@ public class DebuggerUtilsImpl extends DebuggerUtilsEx{ throw new ExecutionException(DebugProcessImpl.processError(e)); } } -} +}
\ No newline at end of file diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/GenericDebuggerParametersRunnerConfigurable.java b/java/debugger/impl/src/com/intellij/debugger/impl/GenericDebuggerParametersRunnerConfigurable.java index b0cb440e039f..b36d0a4303fe 100644 --- a/java/debugger/impl/src/com/intellij/debugger/impl/GenericDebuggerParametersRunnerConfigurable.java +++ b/java/debugger/impl/src/com/intellij/debugger/impl/GenericDebuggerParametersRunnerConfigurable.java @@ -25,6 +25,7 @@ import com.intellij.openapi.options.SettingsEditor; import com.intellij.openapi.options.ShowSettingsUtil; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.ui.PortField; import com.intellij.xdebugger.impl.settings.DebuggerConfigurable; import org.jetbrains.annotations.NotNull; @@ -38,7 +39,7 @@ public class GenericDebuggerParametersRunnerConfigurable extends SettingsEditor< private JTextField myAddressField; private JPanel myShMemPanel; private JPanel myPortPanel; - private JTextField myPortField; + private PortField myPortField; private boolean myIsLocal = false; private JButton myDebuggerSettings; private JRadioButton mySocketTransport; @@ -47,6 +48,7 @@ public class GenericDebuggerParametersRunnerConfigurable extends SettingsEditor< public GenericDebuggerParametersRunnerConfigurable(final Project project) { myDebuggerSettings.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { ShowSettingsUtil.getInstance().showSettingsDialog(project, DebuggerConfigurable.DISPLAY_NAME); if (myIsLocal) { @@ -58,6 +60,7 @@ public class GenericDebuggerParametersRunnerConfigurable extends SettingsEditor< }); final ActionListener listener = new ActionListener() { + @Override public void actionPerformed(final ActionEvent e) { suggestAvailablePortIfNotSpecified(); updateUI(); @@ -80,6 +83,7 @@ public class GenericDebuggerParametersRunnerConfigurable extends SettingsEditor< return getTransport() == DebuggerSettings.SOCKET_TRANSPORT; } + @Override @NotNull public JComponent createEditor() { return myPanel; @@ -94,9 +98,11 @@ public class GenericDebuggerParametersRunnerConfigurable extends SettingsEditor< myShmemTransport.setEnabled(!myIsLocal); } + @Override public void disposeEditor() { } + @Override public void resetEditorFrom(GenericDebuggerRunnerSettings runnerSettings) { setIsLocal(runnerSettings.LOCAL); setTransport(runnerSettings.getTransport()); @@ -113,7 +119,7 @@ public class GenericDebuggerParametersRunnerConfigurable extends SettingsEditor< try { Integer.parseInt(port); } - catch (NumberFormatException e) { + catch (NumberFormatException ignored) { portSpecified = false; } } @@ -139,7 +145,7 @@ public class GenericDebuggerParametersRunnerConfigurable extends SettingsEditor< private String getPort() { if (isSocket()) { - return myPortField.getText(); + return String.valueOf(myPortField.getNumber()); } else { return myAddressField.getText(); @@ -147,16 +153,9 @@ public class GenericDebuggerParametersRunnerConfigurable extends SettingsEditor< } private void checkPort() throws ConfigurationException { - if (isSocket() && myPortField.getText().length() > 0) { - try { - final int port = Integer.parseInt(myPortField.getText()); - if (port < 0 || port > 0xffff) { - throw new NumberFormatException(); - } - } - catch (NumberFormatException e) { - throw new ConfigurationException(DebuggerBundle.message("error.text.invalid.port.0", myPortField.getText())); - } + final int port = myPortField.getNumber(); + if (isSocket() && port > 0 && (port < 0 || port > 0xffff)) { + throw new ConfigurationException(DebuggerBundle.message("error.text.invalid.port.0", port)); } } @@ -173,13 +172,14 @@ public class GenericDebuggerParametersRunnerConfigurable extends SettingsEditor< private void setPort(String port) { if (isSocket()) { - myPortField.setText(port); + myPortField.setNumber(StringUtil.parseInt(port, 0)); } else { myAddressField.setText(port); } } + @Override public void applyEditorTo(GenericDebuggerRunnerSettings runnerSettings) throws ConfigurationException { runnerSettings.LOCAL = myIsLocal; checkPort(); @@ -188,5 +188,4 @@ public class GenericDebuggerParametersRunnerConfigurable extends SettingsEditor< runnerSettings.setTransport(getTransport()); } } - -} +}
\ No newline at end of file diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/GenericDebuggerRunner.java b/java/debugger/impl/src/com/intellij/debugger/impl/GenericDebuggerRunner.java index 0d2c516a55f6..138da8074e53 100644 --- a/java/debugger/impl/src/com/intellij/debugger/impl/GenericDebuggerRunner.java +++ b/java/debugger/impl/src/com/intellij/debugger/impl/GenericDebuggerRunner.java @@ -33,16 +33,19 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class GenericDebuggerRunner extends JavaPatchableProgramRunner<GenericDebuggerRunnerSettings> { + @Override public boolean canRun(@NotNull final String executorId, @NotNull final RunProfile profile) { return executorId.equals(DefaultDebugExecutor.EXECUTOR_ID) && profile instanceof ModuleRunProfile && !(profile instanceof RunConfigurationWithSuppressedDefaultDebugAction); } + @Override @NotNull public String getRunnerId() { return DebuggingRunnerData.DEBUGGER_RUNNER_ID; } + @Override protected RunContentDescriptor doExecute(final Project project, final RunProfileState state, final RunContentDescriptor contentToReuse, @@ -95,10 +98,12 @@ public class GenericDebuggerRunner extends JavaPatchableProgramRunner<GenericDeb return remoteConnection; } + @Override public GenericDebuggerRunnerSettings createConfigurationData(ConfigurationInfoProvider settingsProvider) { return new GenericDebuggerRunnerSettings(); } + @Override public void patch(JavaParameters javaParameters, RunnerSettings settings, RunProfile runProfile, final boolean beforeExecution) throws ExecutionException { doPatch(javaParameters, settings); runCustomPatchers(javaParameters, Executor.EXECUTOR_EXTENSION_NAME.findExtension(DefaultDebugExecutor.class), runProfile); @@ -112,6 +117,7 @@ public class GenericDebuggerRunner extends JavaPatchableProgramRunner<GenericDeb return DebuggerManagerImpl.createDebugParameters(javaParameters, debuggerSettings, false); } + @Override public SettingsEditor<GenericDebuggerRunnerSettings> getSettingsEditor(final Executor executor, RunConfiguration configuration) { if (configuration instanceof RunConfigurationWithRunnerSettings) { if (((RunConfigurationWithRunnerSettings)configuration).isSettingsNeeded()) { diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/GenericDebuggerRunnerSettings.java b/java/debugger/impl/src/com/intellij/debugger/impl/GenericDebuggerRunnerSettings.java index fd3279572077..594aec895b59 100644 --- a/java/debugger/impl/src/com/intellij/debugger/impl/GenericDebuggerRunnerSettings.java +++ b/java/debugger/impl/src/com/intellij/debugger/impl/GenericDebuggerRunnerSettings.java @@ -31,18 +31,22 @@ public class GenericDebuggerRunnerSettings implements RunnerSettings, DebuggingR public GenericDebuggerRunnerSettings() { } + @Override public String getDebugPort() { return DEBUG_PORT; } + @Override public boolean isRemote() { return !LOCAL; } + @Override public void setLocal(boolean isLocal) { LOCAL = isLocal; } + @Override public void setDebugPort(String port) { DEBUG_PORT = port; } @@ -51,10 +55,12 @@ public class GenericDebuggerRunnerSettings implements RunnerSettings, DebuggingR TRANSPORT = transport; } + @Override public void readExternal(Element element) throws InvalidDataException { DefaultJDOMExternalizer.readExternal(this, element); } + @Override public void writeExternal(Element element) throws WriteExternalException { DefaultJDOMExternalizer.writeExternal(this, element); } diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/GenericDebuggerParametersPatcherConfigurable.form b/java/debugger/impl/src/com/intellij/debugger/ui/GenericDebuggerParametersPatcherConfigurable.form index 01cb7956c2bd..3cb1ef9bf190 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/GenericDebuggerParametersPatcherConfigurable.form +++ b/java/debugger/impl/src/com/intellij/debugger/ui/GenericDebuggerParametersPatcherConfigurable.form @@ -3,7 +3,7 @@ <grid id="a1cd4" binding="myPanel" layout-manager="GridLayoutManager" row-count="3" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1"> <margin top="0" left="0" bottom="0" right="0"/> <constraints> - <xy x="53" y="171" width="441" height="92"/> + <xy x="53" y="171" width="441" height="105"/> </constraints> <properties/> <border type="none"/> @@ -39,7 +39,7 @@ <grid id="c2b5" binding="myPortPanel" layout-manager="GridLayoutManager" row-count="1" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1"> <margin top="0" left="0" bottom="0" right="0"/> <constraints> - <grid row="2" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/> + <grid row="2" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="8" fill="2" indent="0" use-parent-layout="false"/> </constraints> <properties/> <border type="none"/> @@ -52,15 +52,11 @@ <text resource-bundle="messages/DebuggerBundle" key="label.generic.debugger.parameters.patcher.configurable.port"/> </properties> </component> - <component id="5ffe7" class="javax.swing.JTextField" binding="myPortField"> + <component id="5ffe7" class="com.intellij.ui.PortField" binding="myPortField"> <constraints> - <grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="8" fill="1" indent="0" use-parent-layout="false"> - <preferred-size width="150" height="-1"/> - </grid> + <grid row="0" column="1" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/> </constraints> - <properties> - <text value=""/> - </properties> + <properties/> </component> </children> </grid> diff --git a/java/debugger/openapi/src/com/intellij/debugger/engine/DebuggerUtils.java b/java/debugger/openapi/src/com/intellij/debugger/engine/DebuggerUtils.java index 9fcc7d7a7d8d..e2f93e7ba50e 100644 --- a/java/debugger/openapi/src/com/intellij/debugger/engine/DebuggerUtils.java +++ b/java/debugger/openapi/src/com/intellij/debugger/engine/DebuggerUtils.java @@ -107,7 +107,7 @@ public abstract class DebuggerUtils { toStringMethod = findMethod(refType, "toString", "()Ljava/lang/String;"); debugProcess.putUserData(TO_STRING_METHOD_KEY, toStringMethod); } - catch (Exception e) { + catch (Exception ignored) { throw EvaluateExceptionUtil.createEvaluateException( DebuggerBundle.message("evaluation.error.cannot.evaluate.tostring", objRef.referenceType().name())); } @@ -125,7 +125,7 @@ public abstract class DebuggerUtils { } throw EvaluateExceptionUtil.createEvaluateException(DebuggerBundle.message("evaluation.error.unsupported.expression.type")); } - catch (ObjectCollectedException e) { + catch (ObjectCollectedException ignored) { throw EvaluateExceptionUtil.OBJECT_WAS_COLLECTED; } } @@ -291,8 +291,8 @@ public abstract class DebuggerUtils { } List ifaces = ((ClassType)subType).allInterfaces(); - for (Iterator iterator = ifaces.iterator(); iterator.hasNext();) { - InterfaceType interfaceType = (InterfaceType)iterator.next(); + for (Object iface : ifaces) { + InterfaceType interfaceType = (InterfaceType)iface; if (interfaceType.name().equals(superType)) { return interfaceType; } @@ -302,8 +302,8 @@ public abstract class DebuggerUtils { if (subType instanceof InterfaceType) { List ifaces = ((InterfaceType)subType).superinterfaces(); - for (Iterator iterator = ifaces.iterator(); iterator.hasNext();) { - InterfaceType interfaceType = (InterfaceType)iterator.next(); + for (Object iface : ifaces) { + InterfaceType interfaceType = (InterfaceType)iface; result = getSuperType(interfaceType, superType); if (result != null) { return result; @@ -402,9 +402,8 @@ public abstract class DebuggerUtils { PsiElement[] children = codeFragment.getChildren(); if(children.length == 0) throw EvaluateExceptionUtil.createEvaluateException(DebuggerBundle.message("evaluation.error.empty.code.fragment")); - for (int i = 0; i < children.length; i++) { - PsiElement child = children[i]; - if(child instanceof PsiErrorElement) { + for (PsiElement child : children) { + if (child instanceof PsiErrorElement) { throw EvaluateExceptionUtil.createEvaluateException(DebuggerBundle.message("evaluation.error.invalid.expression", child.getText())); } } diff --git a/java/execution/impl/src/com/intellij/execution/applet/AppletConfigurationProducer.java b/java/execution/impl/src/com/intellij/execution/applet/AppletConfigurationProducer.java index 8961236853d9..cdaac5871338 100644 --- a/java/execution/impl/src/com/intellij/execution/applet/AppletConfigurationProducer.java +++ b/java/execution/impl/src/com/intellij/execution/applet/AppletConfigurationProducer.java @@ -38,6 +38,8 @@ import com.intellij.psi.util.PsiClassUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.List; + public class AppletConfigurationProducer extends JavaRuntimeConfigurationProducerBase { private PsiClass myPsiClass; @@ -106,7 +108,7 @@ public class AppletConfigurationProducer extends JavaRuntimeConfigurationProduce @Override protected RunnerAndConfigurationSettings findExistingByElement(Location location, - @NotNull RunnerAndConfigurationSettings[] existingConfigurations, + @NotNull List<RunnerAndConfigurationSettings> existingConfigurations, ConfigurationContext context) { final PsiClass aClass = getAppletClass(location.getPsiElement(), PsiManager.getInstance(location.getProject())); if (aClass != null) { diff --git a/java/execution/impl/src/com/intellij/execution/remote/RemoteConfiguration.java b/java/execution/impl/src/com/intellij/execution/remote/RemoteConfiguration.java index 450aeb546cab..4f503f3f7270 100644 --- a/java/execution/impl/src/com/intellij/execution/remote/RemoteConfiguration.java +++ b/java/execution/impl/src/com/intellij/execution/remote/RemoteConfiguration.java @@ -44,6 +44,7 @@ import java.util.Collection; public class RemoteConfiguration extends ModuleBasedConfiguration<JavaRunConfigurationModule> implements RunConfigurationWithSuppressedDefaultRunAction { + @Override public void writeExternal(final Element element) throws WriteExternalException { super.writeExternal(element); final Module module = getConfigurationModule().getModule(); @@ -53,6 +54,7 @@ public class RemoteConfiguration extends ModuleBasedConfiguration<JavaRunConfigu DefaultJDOMExternalizer.writeExternal(this, element); } + @Override public void readExternal(final Element element) throws InvalidDataException { super.readExternal(element); readModule(element); @@ -73,6 +75,7 @@ public class RemoteConfiguration extends ModuleBasedConfiguration<JavaRunConfigu return new RemoteConnection(USE_SOCKET_TRANSPORT, HOST, USE_SOCKET_TRANSPORT ? PORT : SHMEM_ADDRESS, SERVER_MODE); } + @Override public RunProfileState getState(@NotNull final Executor executor, @NotNull final ExecutionEnvironment env) throws ExecutionException { GenericDebuggerRunnerSettings debuggerSettings = (GenericDebuggerRunnerSettings)env.getRunnerSettings(); debuggerSettings.LOCAL = false; @@ -81,6 +84,7 @@ public class RemoteConfiguration extends ModuleBasedConfiguration<JavaRunConfigu return new RemoteStateState(getProject(), createRemoteConnection()); } + @Override @NotNull public SettingsEditor<? extends RunConfiguration> getConfigurationEditor() { SettingsEditorGroup<RemoteConfiguration> group = new SettingsEditorGroup<RemoteConfiguration>(); @@ -89,6 +93,7 @@ public class RemoteConfiguration extends ModuleBasedConfiguration<JavaRunConfigu return group; } + @Override public Collection<Module> getValidModules() { return getAllModules(); } diff --git a/java/idea-ui/src/com/intellij/ide/actions/ImportModuleAction.java b/java/idea-ui/src/com/intellij/ide/actions/ImportModuleAction.java index bd92290d26ec..e7ec1b050bc5 100644 --- a/java/idea-ui/src/com/intellij/ide/actions/ImportModuleAction.java +++ b/java/idea-ui/src/com/intellij/ide/actions/ImportModuleAction.java @@ -160,6 +160,7 @@ public class ImportModuleAction extends AnAction { return builder.toString(); } + @Nullable public static AddModuleWizard createImportWizard(final Project project, @Nullable Component dialogParent, final VirtualFile file, diff --git a/java/idea-ui/src/com/intellij/openapi/vcs/checkout/NewProjectCheckoutListener.java b/java/idea-ui/src/com/intellij/openapi/vcs/checkout/NewProjectCheckoutListener.java index a21ae77c71a4..f395d48c2d42 100644 --- a/java/idea-ui/src/com/intellij/openapi/vcs/checkout/NewProjectCheckoutListener.java +++ b/java/idea-ui/src/com/intellij/openapi/vcs/checkout/NewProjectCheckoutListener.java @@ -49,6 +49,7 @@ public class NewProjectCheckoutListener implements VcsAwareCheckoutListener { final Set<VirtualFile> files = projectsLocationSet(projects); VirtualFile file = LocalFileSystem.getInstance().findFileByIoFile(directory); AddModuleWizard wizard = ImportModuleAction.createImportWizard(null, null, file, ProjectImportProvider.PROJECT_IMPORT_PROVIDER.getExtensions()); + if (wizard == null) return false; if (wizard.showAndGet()) { ImportModuleAction.createFromWizard(null, wizard); } @@ -66,7 +67,7 @@ public class NewProjectCheckoutListener implements VcsAwareCheckoutListener { return false; } - private Set<VirtualFile> projectsLocationSet(Project[] projects) { + private static Set<VirtualFile> projectsLocationSet(Project[] projects) { final Set<VirtualFile> files = new HashSet<VirtualFile>(); for (Project project1 : projects) { if (project1.getBaseDir() != null) { diff --git a/java/idea-ui/src/com/intellij/platform/templates/TemplateModuleBuilder.java b/java/idea-ui/src/com/intellij/platform/templates/TemplateModuleBuilder.java index 6d5aa8c1f980..d5e839bb542a 100644 --- a/java/idea-ui/src/com/intellij/platform/templates/TemplateModuleBuilder.java +++ b/java/idea-ui/src/com/intellij/platform/templates/TemplateModuleBuilder.java @@ -172,7 +172,7 @@ public class TemplateModuleBuilder extends ModuleBuilder { } private void fixModuleName(Module module) { - RunConfiguration[] configurations = RunManager.getInstance(module.getProject()).getAllConfigurations(); + List<RunConfiguration> configurations = RunManager.getInstance(module.getProject()).getAllConfigurationsList(); for (RunConfiguration configuration : configurations) { if (configuration instanceof ModuleBasedConfiguration) { ((ModuleBasedConfiguration)configuration).getConfigurationModule().setModule(module); diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightMethodUtil.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightMethodUtil.java index 96319603fc1e..0aa08d0b4728 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightMethodUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightMethodUtil.java @@ -71,8 +71,9 @@ public class HighlightMethodUtil { } static HighlightInfo checkMethodWeakerPrivileges(@NotNull MethodSignatureBackedByPsiMethod methodSignature, - @NotNull List<HierarchicalMethodSignature> superMethodSignatures, - boolean includeRealPositionInfo) { + @NotNull List<HierarchicalMethodSignature> superMethodSignatures, + boolean includeRealPositionInfo, + @NotNull PsiFile containingFile) { PsiMethod method = methodSignature.getMethod(); PsiModifierList modifierList = method.getModifierList(); if (modifierList.hasModifierProperty(PsiModifier.PUBLIC)) return null; @@ -80,7 +81,7 @@ public class HighlightMethodUtil { String accessModifier = PsiUtil.getAccessModifier(accessLevel); for (MethodSignatureBackedByPsiMethod superMethodSignature : superMethodSignatures) { PsiMethod superMethod = superMethodSignature.getMethod(); - if (!PsiUtil.isAccessible(superMethod, method, null)) continue; + if (!PsiUtil.isAccessible(containingFile.getProject(), superMethod, method, null)) continue; HighlightInfo info = isWeaker(method, modifierList, accessModifier, accessLevel, superMethod, includeRealPositionInfo); if (info != null) return info; } @@ -1102,7 +1103,7 @@ public class HighlightMethodUtil { return null; } - static HighlightInfo checkOverrideEquivalentInheritedMethods(PsiClass aClass) { + static HighlightInfo checkOverrideEquivalentInheritedMethods(PsiClass aClass, PsiFile containingFile) { String description = null; final Collection<HierarchicalMethodSignature> visibleSignatures = aClass.getVisibleSignatures(); PsiResolveHelper resolveHelper = JavaPsiFacade.getInstance(aClass.getProject()).getResolveHelper(); @@ -1119,16 +1120,12 @@ public class HighlightMethodUtil { if (aClass.isInterface() && !containingClass.isInterface()) continue; HighlightInfo highlightInfo = null; if (allAbstracts) { - if (!containingClass.equals(aClass)) { - superSignatures = new ArrayList<HierarchicalMethodSignature>(superSignatures); - superSignatures.add(signature); - } + superSignatures = new ArrayList<HierarchicalMethodSignature>(superSignatures); + superSignatures.add(signature); highlightInfo = checkInterfaceInheritedMethodsReturnTypes(superSignatures); } else { - if (!aClass.equals(containingClass)) { - highlightInfo = checkMethodIncompatibleReturnType(signature, superSignatures, false); - } + highlightInfo = checkMethodIncompatibleReturnType(signature, superSignatures, false); } if (highlightInfo != null) description = highlightInfo.getDescription(); @@ -1153,7 +1150,7 @@ public class HighlightMethodUtil { } if (description == null) { - highlightInfo = checkMethodWeakerPrivileges(signature, superSignatures, false); + highlightInfo = checkMethodWeakerPrivileges(signature, superSignatures, false, containingFile); if (highlightInfo != null) description = highlightInfo.getDescription(); } diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java index 3181bed81402..7916c58e103b 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java @@ -1271,25 +1271,26 @@ public class HighlightUtil extends HighlightUtilBase { @Nullable public static HighlightInfo checkSwitchSelectorType(@NotNull PsiSwitchStatement statement) { final PsiExpression expression = statement.getExpression(); - HighlightInfo errorResult = null; PsiType type = expression == null ? null : expression.getType(); - if (type != null) { - if (!isValidTypeForSwitchSelector(type, PsiUtil.isLanguageLevel7OrHigher(expression))) { - String message = - JavaErrorMessages.message("incompatible.types", JavaErrorMessages.message("valid.switch.selector.types"), JavaHighlightUtil - .formatType(type)); - errorResult = HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(expression).descriptionAndTooltip(message).create(); - QuickFixAction.registerQuickFixAction(errorResult, new ConvertSwitchToIfIntention(statement)); - if (PsiType.LONG.equals(type) || PsiType.FLOAT.equals(type) || PsiType.DOUBLE.equals(type)) { - QuickFixAction.registerQuickFixAction(errorResult, new AddTypeCastFix(PsiType.INT, expression)); - } + if (type == null) { + return null; + } + HighlightInfo errorResult = null; + if (!isValidTypeForSwitchSelector(type, PsiUtil.isLanguageLevel7OrHigher(expression))) { + String message = + JavaErrorMessages.message("incompatible.types", JavaErrorMessages.message("valid.switch.selector.types"), JavaHighlightUtil.formatType( + type)); + errorResult = HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(expression).descriptionAndTooltip(message).create(); + QuickFixAction.registerQuickFixAction(errorResult, new ConvertSwitchToIfIntention(statement)); + if (PsiType.LONG.equals(type) || PsiType.FLOAT.equals(type) || PsiType.DOUBLE.equals(type)) { + QuickFixAction.registerQuickFixAction(errorResult, new AddTypeCastFix(PsiType.INT, expression)); } - else { - final PsiClass member = PsiUtil.resolveClassInClassTypeOnly(type); - if (member != null && !PsiUtil.isAccessible(member, expression, null)) { - String message = PsiFormatUtil.formatClass(member, PsiFormatUtilBase.SHOW_NAME | PsiFormatUtilBase.SHOW_FQ_NAME) + " is inaccessible here"; - errorResult = HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(expression).descriptionAndTooltip(message).create(); - } + } + else { + final PsiClass member = PsiUtil.resolveClassInClassTypeOnly(type); + if (member != null && !PsiUtil.isAccessible(member.getProject(), member, expression, null)) { + String message = PsiFormatUtil.formatClass(member, PsiFormatUtilBase.SHOW_NAME | PsiFormatUtilBase.SHOW_FQ_NAME) + " is inaccessible here"; + errorResult = HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(expression).descriptionAndTooltip(message).create(); } } return errorResult; diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java index 4b8075da2503..290633fc853a 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java @@ -326,7 +326,7 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh } if (!myHolder.hasErrorResults()) { final PsiClass samClass = resolveResult.getElement(); - if (!PsiUtil.isAccessible(samClass, expression, null)) { + if (!PsiUtil.isAccessible(myFile.getProject(), samClass, expression, null)) { myHolder.add(HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(expression) .descriptionAndTooltip(HighlightUtil.buildProblemWithAccessDescription(expression, resolveResult)).create()); } @@ -815,7 +815,7 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh if (!myHolder.hasErrorResults()) myHolder.add(HighlightMethodUtil.checkMethodIncompatibleReturnType(methodSignature, superMethodSignatures, true)); if (!myHolder.hasErrorResults()) myHolder.add(HighlightMethodUtil.checkMethodIncompatibleThrows(methodSignature, superMethodSignatures, true, method.getContainingClass())); if (!method.hasModifierProperty(PsiModifier.STATIC)) { - if (!myHolder.hasErrorResults()) myHolder.add(HighlightMethodUtil.checkMethodWeakerPrivileges(methodSignature, superMethodSignatures, true)); + if (!myHolder.hasErrorResults()) myHolder.add(HighlightMethodUtil.checkMethodWeakerPrivileges(methodSignature, superMethodSignatures, true, myFile)); if (!myHolder.hasErrorResults()) myHolder.add(HighlightMethodUtil.checkMethodOverridesFinal(methodSignature, superMethodSignatures)); } } @@ -840,7 +840,7 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh if (!myHolder.hasErrorResults()) { myHolder.add(HighlightClassUtil.checkClassDoesNotCallSuperConstructorOrHandleExceptions(aClass, myRefCountHolder, myResolveHelper)); } - if (!myHolder.hasErrorResults()) myHolder.add(HighlightMethodUtil.checkOverrideEquivalentInheritedMethods(aClass)); + if (!myHolder.hasErrorResults()) myHolder.add(HighlightMethodUtil.checkOverrideEquivalentInheritedMethods(aClass, myFile)); if (!myHolder.hasErrorResults()) myHolder.add(GenericsHighlightUtil.checkOverrideEquivalentMethods(aClass)); if (!myHolder.hasErrorResults()) myHolder.add(HighlightClassUtil.checkCyclicInheritance(aClass)); } @@ -1186,7 +1186,7 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh if (!myHolder.hasErrorResults()) { final PsiClassType.ClassResolveResult resolveResult = PsiUtil.resolveGenericsClassInType(functionalInterfaceType); final PsiClass psiClass = resolveResult.getElement(); - if (psiClass != null && !PsiUtil.isAccessible(psiClass, expression, null)) { + if (psiClass != null && !PsiUtil.isAccessible(myFile.getProject(), psiClass, expression, null)) { myHolder.add(HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(expression) .descriptionAndTooltip(HighlightUtil.buildProblemWithAccessDescription(expression, resolveResult)).create()); } diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateFromUsageUtils.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateFromUsageUtils.java index 491a5f6afe13..401833a35d85 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateFromUsageUtils.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateFromUsageUtils.java @@ -42,6 +42,7 @@ import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.Messages; +import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.TextRange; @@ -858,7 +859,7 @@ public class CreateFromUsageUtils { String name1 = PsiUtil.getMemberQualifiedName(m1); String name2 = PsiUtil.getMemberQualifiedName(m2); - return name1 == null || name2 == null ? 0 : name1.compareTo(name2); + return Comparing.compare(name1, name2); } public static boolean isAccessedForWriting(final PsiExpression[] expressionOccurences) { diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/StaticImportMethodFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/StaticImportMethodFix.java index 9461af0067ef..19a4639a0689 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/StaticImportMethodFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/StaticImportMethodFix.java @@ -199,10 +199,10 @@ public class StaticImportMethodFix implements IntentionAction { if (file instanceof PsiJavaFile //do not show methods from default package && !((PsiJavaFile)file).getPackageName().isEmpty() - && PsiUtil.isAccessible(method, element, containingClass)) { + && PsiUtil.isAccessible(file.getProject(), method, element, containingClass)) { if (method.isDeprecated()) { deprecated.put(containingClass, method); - return processCondition(); + return processCondition(); } registrar.registerMethod(containingClass, method); } diff --git a/java/java-impl/src/com/intellij/codeInsight/highlighting/HighlightSuppressedWarningsHandler.java b/java/java-impl/src/com/intellij/codeInsight/highlighting/HighlightSuppressedWarningsHandler.java index 2707501ad13d..cdc0c403cc74 100644 --- a/java/java-impl/src/com/intellij/codeInsight/highlighting/HighlightSuppressedWarningsHandler.java +++ b/java/java-impl/src/com/intellij/codeInsight/highlighting/HighlightSuppressedWarningsHandler.java @@ -31,7 +31,6 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.ProgressManager; -import com.intellij.openapi.progress.impl.ProgressManagerImpl; import com.intellij.openapi.progress.util.ProgressIndicatorBase; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.popup.JBPopupFactory; diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/AddSingleMemberStaticImportAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/AddSingleMemberStaticImportAction.java index cd512694c8bc..3dbbcd666dda 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/AddSingleMemberStaticImportAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/AddSingleMemberStaticImportAction.java @@ -109,7 +109,7 @@ public class AddSingleMemberStaticImportAction extends PsiElementBaseIntentionAc @Nullable private static PsiClass getResolvedClass(PsiElement element, PsiMember resolved) { PsiClass aClass = resolved.getContainingClass(); - if (aClass != null && !PsiUtil.isAccessible(aClass, element, null)) { + if (aClass != null && !PsiUtil.isAccessible(aClass.getProject(), aClass, element, null)) { final PsiElement qualifier = ((PsiJavaCodeReferenceElement)element.getParent()).getQualifier(); if (qualifier instanceof PsiReferenceExpression) { final PsiElement qResolved = ((PsiReferenceExpression)qualifier).resolve(); diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/CreateSubclassAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/CreateSubclassAction.java index 542a202dcae2..99494c07c54c 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/CreateSubclassAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/CreateSubclassAction.java @@ -245,13 +245,13 @@ public class CreateSubclassAction extends BaseIntentionAction { } if (psiClass.hasTypeParameters() || includeClassName) { final Editor editor = CodeInsightUtil.positionCursor(project, targetClass.getContainingFile(), targetClass.getLBrace()); - final TemplateBuilderImpl templateBuilder = editor != null + final TemplateBuilderImpl templateBuilder = editor != null ? (TemplateBuilderImpl)TemplateBuilderFactory.getInstance().createTemplateBuilder(targetClass) : null; - + if (includeClassName && templateBuilder != null) { templateBuilder.replaceElement(targetClass.getNameIdentifier(), targetClass.getName()); } - + if (oldTypeParameterList != null) { for (PsiTypeParameter parameter : oldTypeParameterList.getTypeParameters()) { final PsiElement param = ref.getParameterList().add(elementFactory.createTypeElement(elementFactory.createType(parameter))); @@ -318,7 +318,7 @@ public class CreateSubclassAction extends BaseIntentionAction { final PsiSubstitutor substitutor = TypeConversionUtil.getSuperClassSubstitutor(psiClass, targetClass, PsiSubstitutor.EMPTY); final List<PsiMethodMember> baseConstructors = new ArrayList<PsiMethodMember>(); for (PsiMethod baseConstr : constructors) { - if (PsiUtil.isAccessible(baseConstr, targetClass, targetClass)) { + if (PsiUtil.isAccessible(project, baseConstr, targetClass, targetClass)) { baseConstructors.add(new PsiMethodMember(baseConstr, substitutor)); } } diff --git a/java/java-impl/src/com/intellij/ide/structureView/impl/AddAllMembersProcessor.java b/java/java-impl/src/com/intellij/ide/structureView/impl/AddAllMembersProcessor.java index 68a66cf25407..952c929e2e0d 100644 --- a/java/java-impl/src/com/intellij/ide/structureView/impl/AddAllMembersProcessor.java +++ b/java/java-impl/src/com/intellij/ide/structureView/impl/AddAllMembersProcessor.java @@ -104,7 +104,7 @@ public class AddAllMembersProcessor extends BaseScopeProcessor { return method.hasModifierProperty(PsiModifier.STATIC); } - private boolean isVisible(PsiMember element, PsiClass psiClass) { + private boolean isVisible(@NotNull PsiMember element, PsiClass psiClass) { return !isInheritedConstructor(element, psiClass) && PsiUtil.isAccessible(element, psiClass, null); } diff --git a/java/java-impl/src/com/intellij/psi/filters/classes/AnyInnerFilter.java b/java/java-impl/src/com/intellij/psi/filters/classes/AnyInnerFilter.java index 9d6b6f3bd9e8..73a4fb63e34f 100644 --- a/java/java-impl/src/com/intellij/psi/filters/classes/AnyInnerFilter.java +++ b/java/java-impl/src/com/intellij/psi/filters/classes/AnyInnerFilter.java @@ -15,6 +15,7 @@ */ package com.intellij.psi.filters.classes; +import com.intellij.openapi.project.Project; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiModifier; @@ -41,10 +42,11 @@ public class AnyInnerFilter implements ElementFilter{ @Override public boolean isAcceptable(Object classElement, PsiElement place){ if(classElement instanceof PsiClass){ + Project project = ((PsiClass)classElement).getProject(); final PsiClass[] inners = ((PsiClass)classElement).getInnerClasses(); for (final PsiClass inner : inners) { if (inner.hasModifierProperty(PsiModifier.STATIC) - && PsiUtil.isAccessible(inner, place, null) + && PsiUtil.isAccessible(project, inner, place, null) && myFilter.isAcceptable(inner, place)) { return true; } diff --git a/java/java-impl/src/com/intellij/refactoring/inline/InlineMethodProcessor.java b/java/java-impl/src/com/intellij/refactoring/inline/InlineMethodProcessor.java index a82994d44cf4..729380654dfb 100644 --- a/java/java-impl/src/com/intellij/refactoring/inline/InlineMethodProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/inline/InlineMethodProcessor.java @@ -355,7 +355,7 @@ public class InlineMethodProcessor extends BaseRefactoringProcessor { result.put(memberContainer, inaccessibleReferenced); for (PsiMember member : referencedElements) { if (PsiTreeUtil.isAncestor(elementToInline, member, false)) continue; - if (!PsiUtil.isAccessible(member, usageElement, null)) { + if (!PsiUtil.isAccessible(usage.getProject(), member, usageElement, null)) { inaccessibleReferenced.add(member); } } diff --git a/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java b/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java index 66cb12fad3ed..020881b61a9a 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java @@ -92,7 +92,11 @@ public final class PsiUtil extends PsiUtilCore { } public static boolean isAccessible(@NotNull PsiMember member, @NotNull PsiElement place, @Nullable PsiClass accessObjectClass) { - return JavaPsiFacade.getInstance(place.getProject()).getResolveHelper().isAccessible(member, place, accessObjectClass); + return isAccessible(place.getProject(), member, place, accessObjectClass); + } + public static boolean isAccessible(@NotNull Project project, @NotNull PsiMember member, + @NotNull PsiElement place, @Nullable PsiClass accessObjectClass) { + return JavaPsiFacade.getInstance(project).getResolveHelper().isAccessible(member, place, accessObjectClass); } @NotNull diff --git a/java/java-psi-api/src/com/intellij/util/VisibilityUtil.java b/java/java-psi-api/src/com/intellij/util/VisibilityUtil.java index 7ee8b1d296e7..e1f30930c75b 100644 --- a/java/java-psi-api/src/com/intellij/util/VisibilityUtil.java +++ b/java/java-psi-api/src/com/intellij/util/VisibilityUtil.java @@ -24,6 +24,7 @@ */ package com.intellij.util; +import com.intellij.openapi.project.Project; import com.intellij.psi.*; import com.intellij.psi.util.InheritanceUtil; import com.intellij.psi.util.PsiTreeUtil; @@ -69,8 +70,9 @@ public class VisibilityUtil { @PsiModifier.ModifierConstant public static String getPossibleVisibility(final PsiMember psiMethod, final PsiElement place) { - if (PsiUtil.isAccessible(psiMethod, place, null)) return getVisibilityModifier(psiMethod.getModifierList()); - if (JavaPsiFacade.getInstance(psiMethod.getProject()).arePackagesTheSame(psiMethod, place)) { + Project project = psiMethod.getProject(); + if (PsiUtil.isAccessible(project, psiMethod, place, null)) return getVisibilityModifier(psiMethod.getModifierList()); + if (JavaPsiFacade.getInstance(project).arePackagesTheSame(psiMethod, place)) { return PsiModifier.PACKAGE_LOCAL; } if (InheritanceUtil.isInheritorOrSelf(PsiTreeUtil.getParentOfType(place, PsiClass.class), diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/PsiSuperMethodImplUtil.java b/java/java-psi-impl/src/com/intellij/psi/impl/PsiSuperMethodImplUtil.java index f32b42ddce31..c41e94049a96 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/PsiSuperMethodImplUtil.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/PsiSuperMethodImplUtil.java @@ -196,7 +196,7 @@ public class PsiSuperMethodImplUtil { for (Map.Entry<MethodSignature, HierarchicalMethodSignatureImpl> entry : map.entrySet()) { HierarchicalMethodSignatureImpl hierarchicalMethodSignature = entry.getValue(); MethodSignature methodSignature = entry.getKey(); - if (result.get(methodSignature) == null && PsiUtil.isAccessible(hierarchicalMethodSignature.getMethod(), aClass, aClass)) { + if (result.get(methodSignature) == null && PsiUtil.isAccessible(aClass.getProject(), hierarchicalMethodSignature.getMethod(), aClass, aClass)) { LOG.assertTrue(hierarchicalMethodSignature.getMethod().isValid()); result.put(methodSignature, hierarchicalMethodSignature); } @@ -205,10 +205,12 @@ public class PsiSuperMethodImplUtil { return result; } - private static void putInMap(PsiClass aClass, Map<MethodSignature, HierarchicalMethodSignature> result, - Map<MethodSignature, HierarchicalMethodSignatureImpl> map, HierarchicalMethodSignature hierarchicalMethodSignature, - MethodSignature signature) { - if (!PsiUtil.isAccessible(hierarchicalMethodSignature.getMethod(), aClass, aClass)) return; + private static void putInMap(PsiClass aClass, + Map<MethodSignature, HierarchicalMethodSignature> result, + Map<MethodSignature, HierarchicalMethodSignatureImpl> map, + HierarchicalMethodSignature hierarchicalMethodSignature, + MethodSignature signature) { + if (!PsiUtil.isAccessible(aClass.getProject(), hierarchicalMethodSignature.getMethod(), aClass, aClass)) return; HierarchicalMethodSignatureImpl existing = map.get(signature); if (existing == null) { HierarchicalMethodSignatureImpl copy = copy(hierarchicalMethodSignature); @@ -266,7 +268,7 @@ public class PsiSuperMethodImplUtil { PsiClass containingClass = hierarchicalMethodSignature.getMethod().getContainingClass(); if (!superMethod.isConstructor()) { if (!aClass.equals(superClass)) { - if (PsiUtil.isAccessible(superMethod, aClass, aClass)) { + if (PsiUtil.isAccessible(aClass.getProject(), superMethod, aClass, aClass)) { if (MethodSignatureUtil.isSubsignature(superSignatureHierarchical, hierarchicalMethodSignature)) { if (superClass != null) { if (superClass.isInterface() || diff --git a/java/java-tests/testSrc/com/intellij/navigation/ChooseByNameTest.groovy b/java/java-tests/testSrc/com/intellij/navigation/ChooseByNameTest.groovy index 613a53875aba..b72206fe91ab 100644 --- a/java/java-tests/testSrc/com/intellij/navigation/ChooseByNameTest.groovy +++ b/java/java-tests/testSrc/com/intellij/navigation/ChooseByNameTest.groovy @@ -134,6 +134,21 @@ class Intf { } + public void "test goto file can go to dir"() { + def fooIndex = myFixture.addFileToProject("foo/index.html", "foo") + def barIndex = myFixture.addFileToProject("bar.txt/bar.txt", "foo") + + def popup = createPopup(new GotoFileModel(project), fooIndex) + assert getPopupElements(popup, "foo/") == [fooIndex.containingDirectory] + assert getPopupElements(popup, "foo\\") == [fooIndex.containingDirectory] + assert getPopupElements(popup, "foo") == [fooIndex.containingDirectory] + + assert getPopupElements(popup, "bar.txt/") == [barIndex.containingDirectory] + assert getPopupElements(popup, "bar.txt\\") == [barIndex.containingDirectory] + assert getPopupElements(popup, "bar.txt") == [barIndex] + popup.close(false) + } + public void "test find method by qualified name"() { def method = myFixture.addClass("package foo.bar; class Goo { void zzzZzz() {} }").methods[0] assert getPopupElements(new GotoSymbolModel2(project), 'zzzZzz') == [method] diff --git a/java/jdkAnnotations/java/lang/annotations.xml b/java/jdkAnnotations/java/lang/annotations.xml index bb5f521bda90..d5cc0c464859 100644 --- a/java/jdkAnnotations/java/lang/annotations.xml +++ b/java/jdkAnnotations/java/lang/annotations.xml @@ -3,6 +3,9 @@ <item name="java.lang.CharSequence java.lang.String toString()"> <annotation name="org.jetbrains.annotations.NotNull" /> </item> + <item name='java.lang.Class boolean isAssignableFrom(java.lang.Class<?>) 0'> + <annotation name='org.jetbrains.annotations.NotNull'/> + </item> <item name="java.lang.Class int getModifiers()"> <annotation name="org.intellij.lang.annotations.MagicConstant"> <val name="flagsFromClass" val="java.lang.reflect.Modifier.class" /> @@ -23,10 +26,10 @@ <item name="java.lang.Class java.lang.reflect.Method getDeclaredMethod(java.lang.String, java.lang.Class<?>...) 0"> <annotation name="org.jetbrains.annotations.NonNls" /> </item> - <item name="java.lang.Class java.lang.reflect.Method getMethod(java.lang.String, java.lang.Class...) 0"> + <item name="java.lang.Class java.lang.reflect.Method getMethod(java.lang.String, java.lang.Class<?>...) 0"> <annotation name="org.jetbrains.annotations.NonNls" /> </item> - <item name="java.lang.Class java.lang.reflect.Method getMethod(java.lang.String, java.lang.Class<?>...) 0"> + <item name="java.lang.Class java.lang.reflect.Method getMethod(java.lang.String, java.lang.Class...) 0"> <annotation name="org.jetbrains.annotations.NonNls" /> </item> <item name="java.lang.ClassLoader InputStream getResourceAsStream(java.lang.String) 0"> |