diff --git a/python/pluginSrc/com/jetbrains/python/psi/impl/PyJavaClassType.java b/python/pluginSrc/com/jetbrains/python/psi/impl/PyJavaClassType.java index c54ef092243d..0fa3e08629f7 100644 --- a/python/pluginSrc/com/jetbrains/python/psi/impl/PyJavaClassType.java +++ b/python/pluginSrc/com/jetbrains/python/psi/impl/PyJavaClassType.java @@ -1,9 +1,6 @@ package com.jetbrains.python.psi.impl; -import com.intellij.psi.PsiClass; -import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiMethod; -import com.intellij.psi.ResolveState; +import com.intellij.psi.*; import com.jetbrains.python.psi.types.PyType; import com.jetbrains.python.psi.PyReferenceExpression; import com.jetbrains.python.psi.PyResolveUtil; @@ -23,6 +20,8 @@ public class PyJavaClassType implements PyType { if (methods.length > 0) { return methods [0]; // TODO[yole]: correct resolve } + final PsiField field = myClass.findFieldByName(name, true); + if (field != null) return field; return null; } diff --git a/python/testData/resolve/pyToJava/Field.py b/python/testData/resolve/pyToJava/Field.py new file mode 100644 index 000000000000..35fe385378c7 --- /dev/null +++ b/python/testData/resolve/pyToJava/Field.py @@ -0,0 +1,3 @@ +from java.lang import System + +System.out \ No newline at end of file diff --git a/python/testData/resolve/pyToJava/Method.py b/python/testData/resolve/pyToJava/Method.py new file mode 100644 index 000000000000..4aaee3fc971a --- /dev/null +++ b/python/testData/resolve/pyToJava/Method.py @@ -0,0 +1,4 @@ +from java.util import ArrayList + +l = ArrayList() +l.size() \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/PyToJavaResolveTest.java b/python/testSrc/com/jetbrains/python/PyToJavaResolveTest.java index 9b0fb7672ea3..d886302e356f 100644 --- a/python/testSrc/com/jetbrains/python/PyToJavaResolveTest.java +++ b/python/testSrc/com/jetbrains/python/PyToJavaResolveTest.java @@ -1,9 +1,7 @@ package com.jetbrains.python; import com.intellij.openapi.application.PathManager; -import com.intellij.psi.PsiClass; -import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiReference; +import com.intellij.psi.*; import com.intellij.testFramework.ResolveTestCase; /** @@ -21,6 +19,18 @@ public class PyToJavaResolveTest extends ResolveTestCase { assertEquals("java.util.ArrayList", ((PsiClass) target).getQualifiedName()); } + public void testMethod() throws Exception { + PsiElement target = resolve(); + assertTrue(target instanceof PsiMethod); + assertEquals("java.util.ArrayList", ((PsiMethod) target).getContainingClass().getQualifiedName()); + } + + public void testField() throws Exception { + PsiElement target = resolve(); + assertTrue(target instanceof PsiField); + assertEquals("java.lang.System", ((PsiField) target).getContainingClass().getQualifiedName()); + } + @Override protected String getTestDataPath() { return PathManager.getHomePath() + "/plugins/python/testData/resolve/pyToJava/";