Merge remote branch 'origin/master'

This commit is contained in:
Dmitry Trofimov
2011-09-20 11:54:50 +04:00
10 changed files with 50 additions and 25 deletions
@@ -508,6 +508,7 @@
<lang.substitutor language="TEXT" implementationClass="com.jetbrains.rest.RestLanguageSubstitutor"/>
<configurationType implementation="com.jetbrains.rest.run.RestRunConfigurationType"/>
<configurationProducer implementation="com.jetbrains.rest.run.docutils.DocutilsConfigurationProducer"/>
<configurationProducer implementation="com.jetbrains.rest.run.sphinx.SphinxConfigurationProducer"/>
<!-- Mako files -->
<lang.substitutor language="HTML" implementationClass="com.jetbrains.mako.TemplateLanguageSubstitutor"/>
@@ -5,7 +5,9 @@ import com.intellij.codeInspection.ProblemDescriptor;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement;
import com.jetbrains.python.PyBundle;
import com.jetbrains.python.psi.*;
import com.jetbrains.python.psi.PyElementGenerator;
import com.jetbrains.python.psi.PyExpression;
import com.jetbrains.python.psi.PyStringLiteralExpression;
import com.jetbrains.python.psi.impl.PyStringLiteralExpressionImpl;
import org.jetbrains.annotations.NotNull;
@@ -41,7 +43,9 @@ public class ConvertDocstringQuickFix implements LocalQuickFix {
String content = expression.getText().substring(prefixLength);
if (content.startsWith("'''") ) {
content = content.substring(3, content.length()-3);
} else {
} else if (content.startsWith("\"\"\""))
return;
else {
content = content.length() == 1 ? "" : content.substring(1, content.length()-1);
}
@@ -3,14 +3,15 @@ package com.jetbrains.python.actions;
import com.intellij.codeInspection.LocalQuickFix;
import com.intellij.codeInspection.ProblemDescriptor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.PsiElement;
import com.intellij.psi.util.PsiTreeUtil;
import com.jetbrains.python.PyBundle;
import com.jetbrains.python.psi.PyArgumentList;
import com.jetbrains.python.psi.PyExpression;
import com.jetbrains.python.psi.PyKeywordArgument;
import com.jetbrains.python.psi.*;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
/**
@@ -36,14 +37,23 @@ public class RemoveArgumentEqualDefaultQuickFix implements LocalQuickFix {
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) {
PsiElement element = descriptor.getPsiElement();
PyExpression[] arguments = PsiTreeUtil.getParentOfType(element, PyArgumentList.class).getArguments();
boolean canDelete = true;
for (int i = arguments.length-1; i != -1; --i) {
if (myProblemElements.contains(arguments[i])) {
if (canDelete)
arguments[i].delete();
PyArgumentList argumentList = PsiTreeUtil.getParentOfType(element, PyArgumentList.class);
if (argumentList == null) return;
StringBuilder newArgumentList = new StringBuilder("foo(");
PyExpression[] arguments = argumentList.getArguments();
List<String> newArgs = new ArrayList<String>();
for (int i = 0; i != arguments.length; ++i) {
if (!myProblemElements.contains(arguments[i])) {
newArgs.add(arguments[i].getText());
}
else if (!(arguments[i] instanceof PyKeywordArgument)) canDelete = false;
}
newArgumentList.append(StringUtil.join(newArgs, ", ")).append(")");
PyExpression expression = PyElementGenerator.getInstance(project).createFromText(
LanguageLevel.forElement(argumentList), PyExpressionStatement.class, newArgumentList.toString()).getExpression();
if (expression instanceof PyCallExpression)
argumentList.replace(((PyCallExpression)expression).getArgumentList());
}
}
@@ -69,6 +69,8 @@ public class PyRedundantParenthesesInspection extends PyInspection {
registerProblem(node, "Remove redundant parentheses", new RedundantParenthesesQuickFix());
}
else if (expression instanceof PyBinaryExpression) {
if (node.getParent() instanceof PyPrefixExpression)
return;
if (((PyBinaryExpression)expression).getOperator() == PyTokenTypes.AND_KEYWORD ||
((PyBinaryExpression)expression).getOperator() == PyTokenTypes.OR_KEYWORD) {
if (((PyBinaryExpression)expression).getLeftExpression() instanceof PyParenthesizedExpression &&
@@ -1,12 +1,12 @@
package com.jetbrains.python.run;
import com.intellij.ui.ComponentWithAnchor;
import com.intellij.ui.PanelWithAnchor;
import javax.swing.*;
/**
* @author yole
*/
public interface AbstractPyCommonOptionsForm extends AbstractPythonRunConfigurationParams, ComponentWithAnchor {
public interface AbstractPyCommonOptionsForm extends AbstractPythonRunConfigurationParams, PanelWithAnchor {
JComponent getMainPanel();
}
@@ -8,7 +8,7 @@ import com.intellij.openapi.ui.TextFieldWithBrowseButton;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.ui.ComponentWithAnchor;
import com.intellij.ui.PanelWithAnchor;
import com.intellij.ui.RawCommandLineEditor;
import com.intellij.ui.components.JBLabel;
@@ -18,7 +18,7 @@ import java.awt.*;
/**
* @author yole
*/
public class PythonRunConfigurationForm implements PythonRunConfigurationParams, ComponentWithAnchor {
public class PythonRunConfigurationForm implements PythonRunConfigurationParams, PanelWithAnchor {
private JPanel myRootPanel;
private TextFieldWithBrowseButton myScriptTextField;
private RawCommandLineEditor myScriptParametersTextField;
@@ -5,7 +5,7 @@ import com.intellij.openapi.ui.LabeledComponent;
import com.intellij.openapi.ui.TextFieldWithBrowseButton;
import com.intellij.openapi.util.Ref;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.ui.ComponentWithAnchor;
import com.intellij.ui.PanelWithAnchor;
import com.intellij.ui.components.JBLabel;
import com.jetbrains.python.PyBundle;
import com.jetbrains.python.run.AbstractPyCommonOptionsForm;
@@ -24,7 +24,7 @@ import static com.jetbrains.python.testing.unittest.PythonUnitTestRunConfigurati
/**
* @author Leonid Shalupov
*/
public class PythonTestRunConfigurationForm implements AbstractPythonTestRunConfigurationParams, ComponentWithAnchor {
public class PythonTestRunConfigurationForm implements AbstractPythonTestRunConfigurationParams, PanelWithAnchor {
private JPanel myRootPanel;
private LabeledComponent myTestClassComponent;
private LabeledComponent myTestMethodComponent;
@@ -6,7 +6,7 @@ import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.options.SettingsEditor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.TextFieldWithBrowseButton;
import com.intellij.ui.ComponentWithAnchor;
import com.intellij.ui.PanelWithAnchor;
import com.intellij.ui.components.JBLabel;
import com.jetbrains.python.PyBundle;
import com.jetbrains.python.run.AbstractPyCommonOptionsForm;
@@ -16,12 +16,10 @@ import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import static com.intellij.openapi.util.io.FileUtil.toSystemIndependentName;
/**
* @author yole
*/
public class PyTestConfigurationEditor extends SettingsEditor<PyTestRunConfiguration> implements ComponentWithAnchor {
public class PyTestConfigurationEditor extends SettingsEditor<PyTestRunConfiguration> implements PanelWithAnchor {
private JPanel myMainPanel;
private JPanel myCommonOptionsPlaceholder;
private JTextField myKeywordsTextField;
@@ -51,13 +49,13 @@ public class PyTestConfigurationEditor extends SettingsEditor<PyTestRunConfigura
protected void resetEditorFrom(PyTestRunConfiguration s) {
AbstractPythonRunConfiguration.copyParams(s, myCommonOptionsForm);
myKeywordsTextField.setText(s.getKeywords());
myTestScriptTextField.setText(toSystemIndependentName(s.getTestToRun()));
myTestScriptTextField.setText(s.getTestToRun());
myParamsTextField.setText(s.getParams());
}
protected void applyEditorTo(PyTestRunConfiguration s) throws ConfigurationException {
AbstractPythonRunConfiguration.copyParams(myCommonOptionsForm, s);
s.setTestToRun(toSystemIndependentName(myTestScriptTextField.getText().trim()));
s.setTestToRun(myTestScriptTextField.getText().trim());
s.setKeywords(myKeywordsTextField.getText().trim());
s.setParams(myParamsTextField.getText().trim());
}
@@ -2,4 +2,5 @@ def foo(a, b = 345, c = 1):
pass
#PY-3261
foo(1, <warning descr="Argument equals to default parameter value">345<caret></warning>, c=22)
foo(1,
<warning descr="Argument equals to default parameter value">345<caret></warning>, c=22)
@@ -58,3 +58,12 @@ def bar(a = "qwer"):
bar(<warning descr="Argument equals to default parameter value">a = 'qwer'</warning>)
getattr(bar, "__doc__", None) # None is not highlighted
class a:
def get(self, a, b = None):
pass
kw = a()
kw['customerPaymentProfileId'] = kw.get("customerPaymentProfileId",
<warning descr="Argument equals to default parameter value">None</warning>)