From 47d26675a9fd8d8f13a845698acb872af1c3b632 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Wed, 18 Jan 2012 17:54:38 +0100 Subject: [PATCH 1/4] correctly resolve class ref pointing to built-in class --- .../com/jetbrains/python/psi/impl/PyClassImpl.java | 14 ++++++++++++-- python/testData/stubs/BuiltinAncestor.py | 2 ++ .../testSrc/com/jetbrains/python/PyStubsTest.java | 8 ++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 python/testData/stubs/BuiltinAncestor.py diff --git a/python/src/com/jetbrains/python/psi/impl/PyClassImpl.java b/python/src/com/jetbrains/python/psi/impl/PyClassImpl.java index 0a4e5eac3490..dcca3b008e68 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyClassImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyClassImpl.java @@ -313,12 +313,22 @@ public class PyClassImpl extends PyPresentableElementImpl implement element = ResolveImportUtil.resolveImportElement((PyImportElement)element); } if (!(element instanceof NameDefiner)) { - return new PyClassRef(qualifiedName.toString()); + currentParent = null; + break; } currentParent = (NameDefiner)element; } - return new PyClassRef(currentParent); + if (currentParent != null) { + return new PyClassRef(currentParent); + } + if (qualifiedName.getComponentCount() == 1) { + final PyClass builtinClass = PyBuiltinCache.getInstance(parent).getClass(qualifiedName.getComponents().get(0)); + if (builtinClass != null) { + return new PyClassRef(builtinClass); + } + } + return new PyClassRef(qualifiedName.toString()); } @NotNull diff --git a/python/testData/stubs/BuiltinAncestor.py b/python/testData/stubs/BuiltinAncestor.py new file mode 100644 index 000000000000..0b910b80dfcb --- /dev/null +++ b/python/testData/stubs/BuiltinAncestor.py @@ -0,0 +1,2 @@ +class Foo(object): + pass diff --git a/python/testSrc/com/jetbrains/python/PyStubsTest.java b/python/testSrc/com/jetbrains/python/PyStubsTest.java index bd4c2b63a9bf..3a70920b6619 100644 --- a/python/testSrc/com/jetbrains/python/PyStubsTest.java +++ b/python/testSrc/com/jetbrains/python/PyStubsTest.java @@ -338,6 +338,14 @@ public class PyStubsTest extends PyTestCase { assertNotParsed(file); } + public void testBuiltinAncestor() { + final PyFileImpl file = (PyFileImpl) getTestFile(); + final PyClass pyClass = file.getTopLevelClasses().get(0); + final PyClassRef classRef = pyClass.iterateAncestors().iterator().next(); + assertNotNull(classRef.getPyClass()); + assertNotParsed(file); + } + private void ensureVariableNotInIndex(String name) { getTestFile(); GlobalSearchScope scope = GlobalSearchScope.allScope(myFixture.getProject()); From 4c9a14db876c82e411ffa859b496a74f350e58ea Mon Sep 17 00:00:00 2001 From: Dmitry Trofimov Date: Wed, 18 Jan 2012 18:22:31 +0100 Subject: [PATCH 2/4] Fixed NPE. --- python/src/com/jetbrains/python/run/PythonCommandLineState.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/src/com/jetbrains/python/run/PythonCommandLineState.java b/python/src/com/jetbrains/python/run/PythonCommandLineState.java index 74e31beb97b5..8b797ea4261a 100644 --- a/python/src/com/jetbrains/python/run/PythonCommandLineState.java +++ b/python/src/com/jetbrains/python/run/PythonCommandLineState.java @@ -135,7 +135,7 @@ public abstract class PythonCommandLineState extends CommandLineState { PythonRunConfigurationExtensionsManager.getInstance() .patchCommandLine(myConfig, runnerSettings, commandLine, getConfigurationSettings().getRunnerId()); - if (sdk.getSdkAdditionalData() instanceof PythonRemoteSdkAdditionalData) { + if (sdk != null && sdk.getSdkAdditionalData() instanceof PythonRemoteSdkAdditionalData) { if (PythonRemoteInterpreterManager.EP_NAME.getExtensions().length > 0) { ProcessHandler processHandler = PythonRemoteInterpreterManager.EP_NAME.getExtensions()[0].doCreateProcess(myConfig.getProject(), (PythonRemoteSdkAdditionalData)sdk.getSdkAdditionalData(), commandLine); ProcessTerminatedListener.attach(processHandler); From 2d5740f8e723ebd5a392b73ac8089ad4ded85945 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Wed, 18 Jan 2012 18:13:19 +0100 Subject: [PATCH 3/4] correctly handle keyword parameters when building index for foreign key fields (PY-5518) --- python/src/com/jetbrains/python/psi/PyFileElementType.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/src/com/jetbrains/python/psi/PyFileElementType.java b/python/src/com/jetbrains/python/psi/PyFileElementType.java index c83d30fcf99f..46437170bf0e 100644 --- a/python/src/com/jetbrains/python/psi/PyFileElementType.java +++ b/python/src/com/jetbrains/python/psi/PyFileElementType.java @@ -44,7 +44,7 @@ public class PyFileElementType extends IStubFileElementType { @Override public int getStubVersion() { - return 40; + return 41; } @Nullable From 0a64b1b83e8f3c30bd82542c3714135d11b1ec2d Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Thu, 19 Jan 2012 10:32:58 +0100 Subject: [PATCH 4/4] pack *.dic in Python plugin distribution --- python/build/python_plugin_build.gant | 1 + 1 file changed, 1 insertion(+) diff --git a/python/build/python_plugin_build.gant b/python/build/python_plugin_build.gant index 4ebe50e8d317..01e9f0f9c2a3 100644 --- a/python/build/python_plugin_build.gant +++ b/python/build/python_plugin_build.gant @@ -112,6 +112,7 @@ target(name: "compile", description: "Compile module python") { include(name: "**/?*.tld") include(name: "**/?*.py") include(name: "**/?*.ft") + include(name: "**/?*.dic") } ant.loadfile(srcfile: "${ideaHome}/build.txt", property: "ideaBuildNumber") {