fixed PY-8402 Insert documentation string stub: strange null parameter for functions with keyword-only argument

This commit is contained in:
Ekaterina Tuzova
2013-01-09 13:42:11 +04:00
parent 2c1c299e01
commit 213e66aef8
4 changed files with 31 additions and 4 deletions
@@ -13,7 +13,6 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import com.intellij.psi.util.PsiTreeUtil;
@@ -25,7 +24,10 @@ import com.jetbrains.python.psi.*;
import com.jetbrains.python.psi.impl.PyBuiltinCache;
import com.jetbrains.python.psi.impl.PyQualifiedName;
import com.jetbrains.python.psi.resolve.QualifiedNameFinder;
import com.jetbrains.python.psi.types.*;
import com.jetbrains.python.psi.types.PyClassType;
import com.jetbrains.python.psi.types.PyType;
import com.jetbrains.python.psi.types.PyTypeParser;
import com.jetbrains.python.psi.types.TypeEvalContext;
import com.jetbrains.python.toolbox.ChainIterable;
import com.jetbrains.python.toolbox.FP;
import org.apache.commons.httpclient.HttpClient;
@@ -36,7 +38,8 @@ import org.jetbrains.annotations.Nullable;
import java.io.File;
import java.io.IOException;
import java.util.*;
import java.util.Collections;
import java.util.List;
import static com.jetbrains.python.documentation.DocumentationBuilderKit.*;
@@ -548,7 +551,7 @@ public class PythonDocumentationProvider extends AbstractDocumentationProvider i
PyParameter[] list = element.getParameterList().getParameters();
StringBuilder builder = new StringBuilder(offset);
for (PyParameter p : list) {
if (p.getText().equals(PyNames.CANONICAL_SELF)) {
if (p.getText().equals(PyNames.CANONICAL_SELF) || p.getName() == null) {
continue;
}
builder.append(prefix);
@@ -0,0 +1,8 @@
def f(my, *, param, **args):
"""
:param my:
:param param:
:param args:
"""
pass
@@ -0,0 +1,2 @@
def f(my, <caret>*, param, **args):
pass
@@ -335,6 +335,10 @@ public class PyIntentionTest extends PyTestCase {
doDocStubTest();
}
public void testDocStubKeywordOnly() {
doDocStubTest(LanguageLevel.PYTHON32);
}
// PY-7383
public void testYieldFrom() {
doTest(PyBundle.message("INTN.yield.from"), LanguageLevel.PYTHON33);
@@ -344,6 +348,16 @@ public class PyIntentionTest extends PyTestCase {
doTest(PyBundle.message("INTN.replace.plus.with.format.operator"));
}
private void doDocStubTest(LanguageLevel languageLevel) {
PythonLanguageLevelPusher.setForcedLanguageLevel(myFixture.getProject(), languageLevel);
try {
doDocStubTest();
}
finally {
PythonLanguageLevelPusher.setForcedLanguageLevel(myFixture.getProject(), null);
}
}
private void doDocStubTest() {
CodeInsightSettings codeInsightSettings = CodeInsightSettings.getInstance();
codeInsightSettings.JAVADOC_STUB_ON_ENTER = true;