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") { 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 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/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); 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());