From c8dda3a8eeb97e73386d934a6b5dd8db970f0a7f Mon Sep 17 00:00:00 2001 From: Mikhail Golubev Date: Mon, 3 Feb 2014 15:38:52 +0400 Subject: [PATCH 1/9] Remove previous generic version of Gitlab connector --- .../tasks/generic/GenericRepositoryType.java | 9 +- .../tasks/generic/connectors/gitlab.xml | 75 ---------- .../integration/GitlabIntegrationTest.java | 129 ------------------ 3 files changed, 1 insertion(+), 212 deletions(-) delete mode 100644 plugins/tasks/tasks-core/src/com/intellij/tasks/generic/connectors/gitlab.xml delete mode 100644 plugins/tasks/tasks-tests/test/com/intellij/tasks/integration/GitlabIntegrationTest.java diff --git a/plugins/tasks/tasks-core/src/com/intellij/tasks/generic/GenericRepositoryType.java b/plugins/tasks/tasks-core/src/com/intellij/tasks/generic/GenericRepositoryType.java index 3d10a1c811ee..b4e2a0e9262b 100644 --- a/plugins/tasks/tasks-core/src/com/intellij/tasks/generic/GenericRepositoryType.java +++ b/plugins/tasks/tasks-core/src/com/intellij/tasks/generic/GenericRepositoryType.java @@ -61,8 +61,7 @@ public class GenericRepositoryType extends BaseRepositoryType this, new AsanaRepository(), new AssemblaRepository(), - new SprintlyRepository(), - new GitlabRepository() + new SprintlyRepository() ); } @@ -127,10 +126,4 @@ public class GenericRepositoryType extends BaseRepositoryType super("Sprintly", TasksIcons.Sprintly); } } - - public final class GitlabRepository extends GenericSubtype { - public GitlabRepository() { - super("Gitlab", TasksIcons.Gitlab); - } - } } diff --git a/plugins/tasks/tasks-core/src/com/intellij/tasks/generic/connectors/gitlab.xml b/plugins/tasks/tasks-core/src/com/intellij/tasks/generic/connectors/gitlab.xml deleted file mode 100644 index b3ffd3c21111..000000000000 --- a/plugins/tasks/tasks-core/src/com/intellij/tasks/generic/connectors/gitlab.xml +++ /dev/null @@ -1,75 +0,0 @@ - - {id} {summary} - diff --git a/plugins/tasks/tasks-tests/test/com/intellij/tasks/integration/GitlabIntegrationTest.java b/plugins/tasks/tasks-tests/test/com/intellij/tasks/integration/GitlabIntegrationTest.java deleted file mode 100644 index 7c4e2d934206..000000000000 --- a/plugins/tasks/tasks-tests/test/com/intellij/tasks/integration/GitlabIntegrationTest.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.intellij.tasks.integration; - -import com.intellij.tasks.Task; -import com.intellij.tasks.TaskTestUtil; -import com.intellij.tasks.generic.GenericRepository; -import com.intellij.tasks.generic.GenericRepositoryType; -import org.jetbrains.annotations.NotNull; - -/** - * @author Mikhail Golubev - */ -public class GitlabIntegrationTest extends GenericSubtypeTestCase { - private static final String TASK_LIST_RESPONSE = "[\n" + - " {\n" + - " \"id\": 2,\n" + - " \"iid\": 2,\n" + - " \"project_id\": 1,\n" + - " \"title\": \"Drink more tea\",\n" + - " \"description\": \"It\\u0027s healthy.\",\n" + - " \"labels\": [],\n" + - " \"assignee\": {\n" + - " \"id\": 4,\n" + - " \"username\": \"deva\",\n" + - " \"email\": \"deva@somemail.com\",\n" + - " \"name\": \"John Smith\",\n" + - " \"state\": \"active\",\n" + - " \"created_at\": \"2013-11-14T12:34:37Z\"\n" + - " },\n" + - " \"author\": {\n" + - " \"id\": 1,\n" + - " \"username\": \"root\",\n" + - " \"email\": \"admin@local.host\",\n" + - " \"name\": \"Administrator\",\n" + - " \"state\": \"active\",\n" + - " \"created_at\": \"2013-11-14T12:19:43Z\"\n" + - " },\n" + - " \"state\": \"opened\",\n" + - " \"updated_at\": \"2013-11-14T12:38:51Z\",\n" + - " \"created_at\": \"2013-11-14T12:33:07Z\"\n" + - " },\n" + - " {\n" + - " \"id\": 1,\n" + - " \"iid\": 1,\n" + - " \"project_id\": 1,\n" + - " \"title\": \"Eat more bananas\",\n" + - " \"description\": \"They're tasty.\",\n" + - " \"labels\": [\n" + - " \"spam\"\n" + - " ],\n" + - " \"assignee\": {\n" + - " \"id\": 1,\n" + - " \"username\": \"root\",\n" + - " \"email\": \"admin@local.host\",\n" + - " \"name\": \"Administrator\",\n" + - " \"state\": \"active\",\n" + - " \"created_at\": \"2013-11-14T12:19:43Z\"\n" + - " },\n" + - " \"author\": {\n" + - " \"id\": 1,\n" + - " \"username\": \"root\",\n" + - " \"email\": \"admin@local.host\",\n" + - " \"name\": \"Administrator\",\n" + - " \"state\": \"active\",\n" + - " \"created_at\": \"2013-11-14T12:19:43Z\"\n" + - " },\n" + - " \"state\": \"opened\",\n" + - " \"updated_at\": \"2013-11-14T12:30:39Z\",\n" + - " \"created_at\": \"2013-11-14T12:30:39Z\"\n" + - " }\n" + - "] "; - - private static final String SINGLE_TASK_RESPONSE = "{\n" + - " \"id\": 2,\n" + - " \"iid\": 2,\n" + - " \"project_id\": 1,\n" + - " \"title\": \"Drink more tea\",\n" + - " \"description\": \"It\\u0027s healthy.\",\n" + - " \"labels\": [],\n" + - " \"assignee\": {\n" + - " \"id\": 4,\n" + - " \"username\": \"deva\",\n" + - " \"email\": \"deva@somemail.com\",\n" + - " \"name\": \"John Smith\",\n" + - " \"state\": \"active\",\n" + - " \"created_at\": \"2013-11-14T12:34:37Z\"\n" + - " },\n" + - " \"author\": {\n" + - " \"id\": 1,\n" + - " \"username\": \"root\",\n" + - " \"email\": \"admin@local.host\",\n" + - " \"name\": \"Administrator\",\n" + - " \"state\": \"active\",\n" + - " \"created_at\": \"2013-11-14T12:19:43Z\"\n" + - " },\n" + - " \"state\": \"opened\",\n" + - " \"updated_at\": \"2013-11-14T12:38:51Z\",\n" + - " \"created_at\": \"2013-11-14T12:33:07Z\"\n" + - "}"; - - private Task getTask1() { - return new TaskTestUtil.TaskBuilder("1", "Eat more bananas", myRepository) - .withDescription("They're tasty.") - .withUpdated("2013-11-14T12:30:39Z") - .withCreated("2013-11-14T12:30:39Z"); - } - - private Task getTask2() { - return new TaskTestUtil.TaskBuilder("2", "Drink more tea", myRepository) - .withDescription("It's healthy.") - .withUpdated("2013-11-14T12:38:51Z") - .withCreated("2013-11-14T12:33:07Z"); - } - - @NotNull - @Override - protected GenericRepository createRepository(GenericRepositoryType genericType) { - return (GenericRepository)genericType.new GitlabRepository().createRepository(); - } - - public void testParsingTaskList() throws Exception { - Task[] tasks = myRepository.getActiveResponseHandler().parseIssues(TASK_LIST_RESPONSE, 50); - TaskTestUtil.assertTasksEqual(new Task[]{getTask2(), getTask1()}, tasks); - } - - public void testParsingSingleTask() throws Exception { - Task task = myRepository.getActiveResponseHandler().parseIssue(SINGLE_TASK_RESPONSE); - TaskTestUtil.assertTasksEqual(getTask2(), task); - } -} From f4433d40c3fe130890b83c5a210dc47ca5195225 Mon Sep 17 00:00:00 2001 From: Mikhail Golubev Date: Mon, 3 Feb 2014 16:36:11 +0400 Subject: [PATCH 2/9] Check that item is in list model before addition/removal by event --- .../util/net/ssl/CertificateConfigurable.java | 20 ++++++++++++------- .../util/net/ssl/CertificateUtil.java | 7 +++++++ .../util/net/ssl/ConfirmingTrustManager.java | 6 +++++- 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/platform/platform-api/src/com/intellij/util/net/ssl/CertificateConfigurable.java b/platform/platform-api/src/com/intellij/util/net/ssl/CertificateConfigurable.java index f28b103a5cd8..8c706bc59283 100644 --- a/platform/platform-api/src/com/intellij/util/net/ssl/CertificateConfigurable.java +++ b/platform/platform-api/src/com/intellij/util/net/ssl/CertificateConfigurable.java @@ -27,7 +27,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Set; -import static com.intellij.util.net.ssl.CertificateWrapper.CommonField.COMMON_NAME; +import static com.intellij.util.net.ssl.CertificateUtil.getCommonName; import static com.intellij.util.net.ssl.ConfirmingTrustManager.MutableTrustManager; /** @@ -63,7 +63,7 @@ public class CertificateConfigurable implements SearchableConfigurable, Configur if (!new CertificateWrapper(certificate).isValid()) { setForeground(UIUtil.getLabelDisabledForeground()); } - setText(new CertificateWrapper(certificate).getSubjectField(COMMON_NAME)); + setText(getCommonName(certificate)); } }); @@ -136,7 +136,7 @@ public class CertificateConfigurable implements SearchableConfigurable, Configur myDetailsPanel.add(scrollPane, uniqueName); } - private String getCardName(X509Certificate certificate) { + private static String getCardName(X509Certificate certificate) { return certificate.getSubjectX500Principal().getName(); } @@ -203,13 +203,13 @@ public class CertificateConfigurable implements SearchableConfigurable, Configur for (X509Certificate certificate : added) { if (!myTrustManager.addCertificate(certificate)) { - throw new ConfigurationException("Cannot add certificate", "Cannot Add Certificate"); + throw new ConfigurationException("Cannot add certificate for " + getCommonName(certificate), "Cannot Add Certificate"); } } for (X509Certificate certificate : removed) { if (!myTrustManager.removeCertificate(certificate)) { - throw new ConfigurationException("Cannot remove certificate", "Cannot Remove Certificate"); + throw new ConfigurationException("Cannot remove certificate for " + getCommonName(certificate), "Cannot Remove Certificate"); } } @@ -256,12 +256,18 @@ public class CertificateConfigurable implements SearchableConfigurable, Configur @Override public void certificateAdded(X509Certificate certificate) { - getListModel().add(certificate); + CollectionListModel model = getListModel(); + if (model.getElementIndex(certificate) < 0) { + model.add(certificate); + } addCertificatePanel(certificate); } @Override public void certificateRemoved(X509Certificate certificate) { - getListModel().remove(certificate); + CollectionListModel model = getListModel(); + if (model.getElementIndex(certificate) >= 0) { + model.remove(certificate); + } } } diff --git a/platform/platform-api/src/com/intellij/util/net/ssl/CertificateUtil.java b/platform/platform-api/src/com/intellij/util/net/ssl/CertificateUtil.java index c02a9382a721..a1e36236c0e4 100644 --- a/platform/platform-api/src/com/intellij/util/net/ssl/CertificateUtil.java +++ b/platform/platform-api/src/com/intellij/util/net/ssl/CertificateUtil.java @@ -63,4 +63,11 @@ public class CertificateUtil { StreamUtil.closeStream(stream); } } + + /** + * @return subjects common name, usually it's domain name pattern, e.g. *.github.com + */ + public static String getCommonName(@NotNull X509Certificate certificate) { + return new CertificateWrapper(certificate).getSubjectField(CertificateWrapper.CommonField.COMMON_NAME); + } } diff --git a/platform/platform-api/src/com/intellij/util/net/ssl/ConfirmingTrustManager.java b/platform/platform-api/src/com/intellij/util/net/ssl/ConfirmingTrustManager.java index 8a8f05a44f0c..8d430ebe7c7b 100644 --- a/platform/platform-api/src/com/intellij/util/net/ssl/ConfirmingTrustManager.java +++ b/platform/platform-api/src/com/intellij/util/net/ssl/ConfirmingTrustManager.java @@ -260,7 +260,7 @@ public class ConfirmingTrustManager extends ClientOnlyTrustManager { } private static String createAlias(@NotNull X509Certificate certificate) { - return new CertificateWrapper(certificate).getSubjectField(CertificateWrapper.CommonField.COMMON_NAME); + return CertificateUtil.getCommonName(certificate); } /** @@ -287,6 +287,10 @@ public class ConfirmingTrustManager extends ClientOnlyTrustManager { } // for listeners X509Certificate certificate = getCertificate(alias); + if (certificate == null) { + LOG.error("No certificate found for alias: " + alias); + return false; + } myKeyStore.deleteEntry(alias); flushKeyStore(); // trust manager should be updated each time its key store was modified From e67783cc5717472a1e1b4ef490dbb604f7ddd485 Mon Sep 17 00:00:00 2001 From: Sergey Simonchik Date: Mon, 3 Feb 2014 17:06:04 +0400 Subject: [PATCH 3/9] 'properties' plugin layout should respect 'pluginFilter' (fixes failed WebStorm builds) --- build/scripts/layouts.gant | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/scripts/layouts.gant b/build/scripts/layouts.gant index d23727fb896d..df4487148e04 100644 --- a/build/scripts/layouts.gant +++ b/build/scripts/layouts.gant @@ -268,7 +268,7 @@ public def layoutCommunityPlugins(String home) { } } - dir("properties") { + pluginDir("properties") { dir("lib") { jar("properties.jar") { module("properties-psi-api") From 94b39890236f57eb64e4d8564b013feffc2fde15 Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Mon, 3 Feb 2014 14:18:02 +0100 Subject: [PATCH 4/9] background of editorpane should be white --- .../src/com/intellij/ide/ui/laf/intellijlaf.properties | 2 ++ 1 file changed, 2 insertions(+) diff --git a/platform/platform-impl/src/com/intellij/ide/ui/laf/intellijlaf.properties b/platform/platform-impl/src/com/intellij/ide/ui/laf/intellijlaf.properties index 10113e560409..116adfe47398 100644 --- a/platform/platform-impl/src/com/intellij/ide/ui/laf/intellijlaf.properties +++ b/platform/platform-impl/src/com/intellij/ide/ui/laf/intellijlaf.properties @@ -151,6 +151,8 @@ Tree.paintLines=false Tree.textBackground=ffffff Tree.selectionBorderColor=3875d6 +EditorPane.background=ffffff + List.background=ffffff Hyperlink.linkColor=589df6 From a6dcd8cab483b329e90e3c135ea5e745674aac17 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Mon, 3 Feb 2014 14:40:39 +0100 Subject: [PATCH 5/9] cleanup --- .../src/com/intellij/openapi/editor/Editor.java | 1 - .../src/com/intellij/ui/EditorComboBoxEditor.java | 6 ++++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/platform/editor-ui-api/src/com/intellij/openapi/editor/Editor.java b/platform/editor-ui-api/src/com/intellij/openapi/editor/Editor.java index 3a5d9d415257..bd63b43f1af3 100644 --- a/platform/editor-ui-api/src/com/intellij/openapi/editor/Editor.java +++ b/platform/editor-ui-api/src/com/intellij/openapi/editor/Editor.java @@ -22,7 +22,6 @@ import com.intellij.openapi.editor.event.EditorMouseMotionListener; import com.intellij.openapi.editor.markup.MarkupModel; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.UserDataHolder; -import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; diff --git a/platform/platform-impl/src/com/intellij/ui/EditorComboBoxEditor.java b/platform/platform-impl/src/com/intellij/ui/EditorComboBoxEditor.java index 2b9dce102509..f4dfb1059651 100644 --- a/platform/platform-impl/src/com/intellij/ui/EditorComboBoxEditor.java +++ b/platform/platform-impl/src/com/intellij/ui/EditorComboBoxEditor.java @@ -38,6 +38,7 @@ public class EditorComboBoxEditor implements ComboBoxEditor{ myTextField.setName(NAME); } + @Override public void selectAll() { myTextField.selectAll(); myTextField.requestFocus(); @@ -48,18 +49,22 @@ public class EditorComboBoxEditor implements ComboBoxEditor{ return myTextField.getEditor(); } + @Override public EditorTextField getEditorComponent() { return myTextField; } + @Override public void addActionListener(ActionListener l) { } + @Override public void removeActionListener(ActionListener l) { } + @Override public Object getItem() { return getDocument(); } @@ -68,6 +73,7 @@ public class EditorComboBoxEditor implements ComboBoxEditor{ return myTextField.getDocument(); } + @Override public void setItem(Object anObject) { myTextField.setDocument((Document)anObject); } From 20a4f26ca85a2988b4257f2530f5c69e2198ef80 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Mon, 3 Feb 2014 14:45:12 +0100 Subject: [PATCH 6/9] fix "Invalid file" --- .../xdebugger/impl/XDebuggerUtilImpl.java | 8 ++++++-- .../impl/ui/XDebuggerExpressionComboBox.java | 15 ++++++++++----- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerUtilImpl.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerUtilImpl.java index 4fbc23431a5e..76a360f748ab 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerUtilImpl.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerUtilImpl.java @@ -262,9 +262,13 @@ public class XDebuggerUtilImpl extends XDebuggerUtil { @Override @Nullable public PsiElement findContextElement(@NotNull VirtualFile virtualFile, int offset, @NotNull Project project, boolean checkXml) { + if (!virtualFile.isValid()) { + return null; + } + Document document = FileDocumentManager.getInstance().getDocument(virtualFile); - PsiFile file = PsiManager.getInstance(project).findFile(virtualFile); - if (file == null || document == null) { + PsiFile file = document == null ? null : PsiManager.getInstance(project).findFile(virtualFile); + if (file == null) { return null; } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebuggerExpressionComboBox.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebuggerExpressionComboBox.java index 90469e5ffb95..694ef28f8b37 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebuggerExpressionComboBox.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebuggerExpressionComboBox.java @@ -60,6 +60,7 @@ public class XDebuggerExpressionComboBox extends XDebuggerEditorBase { return myComboBox; } + @Override public JComponent getComponent() { return myComboBox; } @@ -70,7 +71,7 @@ public class XDebuggerExpressionComboBox extends XDebuggerEditorBase { } public JComponent getEditorComponent() { - return (JComponent)myEditor.getEditorComponent(); + return myEditor.getEditorComponent(); } public void setEnabled(boolean enable) { @@ -89,13 +90,12 @@ public class XDebuggerExpressionComboBox extends XDebuggerEditorBase { private void initEditor() { myEditor = new EditorComboBoxEditor(getProject(), myDebuggerEditorsProvider.getFileType()) { + @Override public void setItem(Object anObject) { - if (anObject == null) { - anObject = ""; - } - super.setItem(createDocument((String)anObject)); + super.setItem(createDocument(StringUtil.notNullize((String)anObject))); } + @Override public Object getItem() { return ((Document)super.getItem()).getText(); } @@ -106,6 +106,7 @@ public class XDebuggerExpressionComboBox extends XDebuggerEditorBase { myComboBox.setMaximumRowCount(XDebuggerHistoryManager.MAX_RECENT_EXPRESSIONS); } + @Override protected void onHistoryChanged() { fillComboBox(); } @@ -120,6 +121,7 @@ public class XDebuggerExpressionComboBox extends XDebuggerEditorBase { } } + @Override protected void doSetText(String text) { if (myComboBox.getItemCount() > 0) { myComboBox.setSelectedIndex(0); @@ -133,15 +135,18 @@ public class XDebuggerExpressionComboBox extends XDebuggerEditorBase { } } + @Override public String getText() { final Object value = myComboBox.isPopupVisible() ? myComboBox.getPopup().getList().getSelectedValue() : myEditor.getItem(); return StringUtil.notNullize((String)value); } + @Override public JComponent getPreferredFocusedComponent() { return (JComponent)myComboBox.getEditor().getEditorComponent(); } + @Override public void selectAll() { myComboBox.getEditor().selectAll(); } From 79e3da543bef15156b1aa65bfc6e875d8ad15aac Mon Sep 17 00:00:00 2001 From: Andrey Vlasovskikh Date: Mon, 3 Feb 2014 18:03:10 +0400 Subject: [PATCH 7/9] Infer 'Iterable' as the type of tuples as default parameter values (PY-10967) It is too strict to infer 'tuple' as the type of default tuples, since they are often used as an immutable indicator, that a method expects a collection. --- .../com/jetbrains/python/psi/impl/PyNamedParameterImpl.java | 3 +++ .../PyTypeCheckerInspection/DefaultTupleParameter.py | 5 +++++ .../python/inspections/PyTypeCheckerInspectionTest.java | 5 +++++ 3 files changed, 13 insertions(+) create mode 100644 python/testData/inspections/PyTypeCheckerInspection/DefaultTupleParameter.py diff --git a/python/src/com/jetbrains/python/psi/impl/PyNamedParameterImpl.java b/python/src/com/jetbrains/python/psi/impl/PyNamedParameterImpl.java index 9c34062d2f08..dd94006b0c7e 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyNamedParameterImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyNamedParameterImpl.java @@ -238,6 +238,9 @@ public class PyNamedParameterImpl extends PyPresentableElementImpl Date: Mon, 3 Feb 2014 17:28:05 +0400 Subject: [PATCH 8/9] [git] Don't read default commit message from .COMMIT_EDITMSG This actually reverts 07af6c9fa (apart from code style changes). It fixes IDEA-119753 and adding a newline after successful commit. The root cause is actually CommitChangeListDialog#setComment where the VCS CheckinEnvironment is asked even if we have some commit message in history, which is then overwritten by the message received from the VCS. It seems more logical to ask VCS _only_ if we have nothing to propose, but on the other hand, in such situations as merging it is very handy to use a pre-populated message from VCS, rather than the previous commit message as IDEA proposes. Implementing some sort of commit message provider priority seems to be an overhead for all of this => reverting commit which caused commit message to be read from the VCS more often looks like a better decision. --- .../src/git4idea/checkin/GitCheckinEnvironment.java | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/plugins/git4idea/src/git4idea/checkin/GitCheckinEnvironment.java b/plugins/git4idea/src/git4idea/checkin/GitCheckinEnvironment.java index cc8cce768f9a..d5c4b3fa8505 100644 --- a/plugins/git4idea/src/git4idea/checkin/GitCheckinEnvironment.java +++ b/plugins/git4idea/src/git4idea/checkin/GitCheckinEnvironment.java @@ -110,22 +110,16 @@ public class GitCheckinEnvironment implements CheckinEnvironment { for (VirtualFile root : GitUtil.gitRoots(Arrays.asList(filesToCheckin))) { VirtualFile mergeMsg = root.findFileByRelativePath(GitRepositoryFiles.GIT_MERGE_MSG); VirtualFile squashMsg = root.findFileByRelativePath(GitRepositoryFiles.GIT_SQUASH_MSG); - VirtualFile normalMsg = root.findFileByRelativePath(GitRepositoryFiles.GIT_COMMIT_EDITMSG); try { - if (mergeMsg == null && squashMsg == null && normalMsg == null) { + if (mergeMsg == null && squashMsg == null) { continue; } - String encoding = GitConfigUtil.getCommitEncoding(myProject, root); - if (mergeMsg != null) { messages.add(loadMessage(mergeMsg, encoding)); } - else if (squashMsg != null) { - messages.add(loadMessage(squashMsg, encoding)); - } else { - messages.add(loadMessage(normalMsg, encoding)); + messages.add(loadMessage(squashMsg, encoding)); } } catch (IOException e) { From 17d36f33c1f22a458a1c46cba235a33bff2a2d75 Mon Sep 17 00:00:00 2001 From: Andrey Vlasovskikh Date: Mon, 3 Feb 2014 18:04:54 +0400 Subject: [PATCH 9/9] Fixed potential NPE --- .../python/psi/impl/PyNamedParameterImpl.java | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/python/src/com/jetbrains/python/psi/impl/PyNamedParameterImpl.java b/python/src/com/jetbrains/python/psi/impl/PyNamedParameterImpl.java index dd94006b0c7e..6ad33d60569e 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyNamedParameterImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyNamedParameterImpl.java @@ -252,15 +252,18 @@ public class PyNamedParameterImpl extends PyPresentableElementImpl entry : mapping.getPlainMappedParams().entrySet()) { - if (entry.getValue() == PyNamedParameterImpl.this) { - final PyExpression argument = entry.getKey(); - if (argument != null) { - final PyType type = context.getType(argument); - if (type != null) { - types.add(type); - return true; + final PyArgumentList argumentList = call.getArgumentList(); + if (argumentList != null) { + final CallArgumentsMapping mapping = argumentList.analyzeCall(resolveContext); + for (Map.Entry entry : mapping.getPlainMappedParams().entrySet()) { + if (entry.getValue() == PyNamedParameterImpl.this) { + final PyExpression argument = entry.getKey(); + if (argument != null) { + final PyType type = context.getType(argument); + if (type != null) { + types.add(type); + return true; + } } } }