diff --git a/python/pluginSrc/com/jetbrains/python/psi/impl/PyJavaClassType.java b/python/pluginSrc/com/jetbrains/python/psi/impl/PyJavaClassType.java index f86d08168b9a..d1667a07eed5 100644 --- a/python/pluginSrc/com/jetbrains/python/psi/impl/PyJavaClassType.java +++ b/python/pluginSrc/com/jetbrains/python/psi/impl/PyJavaClassType.java @@ -12,6 +12,7 @@ import com.jetbrains.python.psi.resolve.PyResolveContext; import com.jetbrains.python.psi.resolve.RatedResolveResult; import com.jetbrains.python.psi.types.PyType; import com.jetbrains.python.psi.types.TypeEvalContext; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -27,7 +28,7 @@ public class PyJavaClassType implements PyType { } @Nullable - public List resolveMember(final String name, + public List resolveMember(@NotNull final String name, PyExpression location, AccessDirection direction, PyResolveContext resolveContext) { diff --git a/python/pluginSrc/com/jetbrains/python/psi/impl/PyJavaPackageType.java b/python/pluginSrc/com/jetbrains/python/psi/impl/PyJavaPackageType.java index a1c4d10ba3ac..977e7d2a3573 100644 --- a/python/pluginSrc/com/jetbrains/python/psi/impl/PyJavaPackageType.java +++ b/python/pluginSrc/com/jetbrains/python/psi/impl/PyJavaPackageType.java @@ -16,6 +16,7 @@ import com.jetbrains.python.psi.resolve.PyResolveContext; import com.jetbrains.python.psi.resolve.RatedResolveResult; import com.jetbrains.python.psi.types.PyType; import com.jetbrains.python.psi.types.TypeEvalContext; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; @@ -34,7 +35,7 @@ public class PyJavaPackageType implements PyType { } @Override - public List resolveMember(String name, + public List resolveMember(@NotNull String name, @Nullable PyExpression location, AccessDirection direction, PyResolveContext resolveContext) { diff --git a/python/psi-api/src/com/jetbrains/python/psi/types/PyType.java b/python/psi-api/src/com/jetbrains/python/psi/types/PyType.java index fdbac85c3cf3..99075827ef97 100644 --- a/python/psi-api/src/com/jetbrains/python/psi/types/PyType.java +++ b/python/psi-api/src/com/jetbrains/python/psi/types/PyType.java @@ -6,6 +6,7 @@ import com.jetbrains.python.psi.AccessDirection; import com.jetbrains.python.psi.PyExpression; import com.jetbrains.python.psi.resolve.PyResolveContext; import com.jetbrains.python.psi.resolve.RatedResolveResult; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -31,7 +32,7 @@ public interface PyType { * or a list of elements that define the name, a la multiResolve(). */ @Nullable - List resolveMember(final String name, @Nullable PyExpression location, AccessDirection direction, + List resolveMember(@NotNull final String name, @Nullable PyExpression location, AccessDirection direction, PyResolveContext resolveContext); /** diff --git a/python/src/com/jetbrains/python/codeInsight/stdlib/PyNamedTupleType.java b/python/src/com/jetbrains/python/codeInsight/stdlib/PyNamedTupleType.java index 2faf7928d249..2c824e67048d 100644 --- a/python/src/com/jetbrains/python/codeInsight/stdlib/PyNamedTupleType.java +++ b/python/src/com/jetbrains/python/codeInsight/stdlib/PyNamedTupleType.java @@ -38,7 +38,7 @@ public class PyNamedTupleType extends PyClassTypeImpl implements PyCallableType } @Override - public List resolveMember(String name, + public List resolveMember(@NotNull String name, @Nullable PyExpression location, AccessDirection direction, PyResolveContext resolveContext) { diff --git a/python/src/com/jetbrains/python/psi/impl/references/PyReferenceImpl.java b/python/src/com/jetbrains/python/psi/impl/references/PyReferenceImpl.java index 2cb1e79ce8b7..cd93c7b64147 100644 --- a/python/src/com/jetbrains/python/psi/impl/references/PyReferenceImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/references/PyReferenceImpl.java @@ -288,8 +288,9 @@ public class PyReferenceImpl implements PsiReferenceEx, PsiPolyVariantReference if (uexpr == null) { // ...as a part of current module PyType otype = builtins_cache.getObjectType(); // "object" as a closest kin to "module" - if (otype != null) { - ret.addAll(otype.resolveMember(myElement.getName(), null, AccessDirection.READ, myContext)); + String name = myElement.getName(); + if (otype != null && name != null) { + ret.addAll(otype.resolveMember(name, null, AccessDirection.READ, myContext)); } } if (uexpr == null) { diff --git a/python/src/com/jetbrains/python/psi/types/PyClassTypeImpl.java b/python/src/com/jetbrains/python/psi/types/PyClassTypeImpl.java index 631856cbee4b..0fb2f10830eb 100644 --- a/python/src/com/jetbrains/python/psi/types/PyClassTypeImpl.java +++ b/python/src/com/jetbrains/python/psi/types/PyClassTypeImpl.java @@ -91,7 +91,7 @@ public class PyClassTypeImpl extends UserDataHolderBase implements PyClassType { } @Nullable - public List resolveMember(final String name, @Nullable PyExpression location, AccessDirection direction, + public List resolveMember(@NotNull final String name, @Nullable PyExpression location, AccessDirection direction, PyResolveContext resolveContext) { final Set> resolving = ourResolveMemberStack.get(); final Pair key = Pair.create(myClass, name); diff --git a/python/src/com/jetbrains/python/psi/types/PyFunctionType.java b/python/src/com/jetbrains/python/psi/types/PyFunctionType.java index e66c3a7069bf..8b68d03094a8 100644 --- a/python/src/com/jetbrains/python/psi/types/PyFunctionType.java +++ b/python/src/com/jetbrains/python/psi/types/PyFunctionType.java @@ -29,7 +29,7 @@ public class PyFunctionType implements PyCallableType { } @Override - public List resolveMember(String name, + public List resolveMember(@NotNull String name, @Nullable PyExpression location, AccessDirection direction, PyResolveContext resolveContext) { diff --git a/python/src/com/jetbrains/python/psi/types/PyGenericType.java b/python/src/com/jetbrains/python/psi/types/PyGenericType.java index 27655d3c330c..9c0b0245c764 100644 --- a/python/src/com/jetbrains/python/psi/types/PyGenericType.java +++ b/python/src/com/jetbrains/python/psi/types/PyGenericType.java @@ -22,7 +22,7 @@ public class PyGenericType implements PyType { @Nullable @Override - public List resolveMember(String name, + public List resolveMember(@NotNull String name, @Nullable PyExpression location, AccessDirection direction, PyResolveContext resolveContext) { diff --git a/python/src/com/jetbrains/python/psi/types/PyImportedModuleType.java b/python/src/com/jetbrains/python/psi/types/PyImportedModuleType.java index 29b50a8f7c71..42e24077212c 100644 --- a/python/src/com/jetbrains/python/psi/types/PyImportedModuleType.java +++ b/python/src/com/jetbrains/python/psi/types/PyImportedModuleType.java @@ -35,7 +35,7 @@ public class PyImportedModuleType implements PyType { @Nullable @Override - public List resolveMember(String name, + public List resolveMember(@NotNull String name, PyExpression location, AccessDirection direction, PyResolveContext resolveContext) { diff --git a/python/src/com/jetbrains/python/psi/types/PyModuleType.java b/python/src/com/jetbrains/python/psi/types/PyModuleType.java index 70d0d9f23219..6213aef01a37 100644 --- a/python/src/com/jetbrains/python/psi/types/PyModuleType.java +++ b/python/src/com/jetbrains/python/psi/types/PyModuleType.java @@ -58,7 +58,7 @@ public class PyModuleType implements PyType { // Modules don't descend from obje @Nullable @Override - public List resolveMember(final String name, + public List resolveMember(@NotNull final String name, @Nullable PyExpression location, AccessDirection direction, PyResolveContext resolveContext) { diff --git a/python/src/com/jetbrains/python/psi/types/PyNoneType.java b/python/src/com/jetbrains/python/psi/types/PyNoneType.java index 3cacd7a081b8..e34ba6f94c6c 100644 --- a/python/src/com/jetbrains/python/psi/types/PyNoneType.java +++ b/python/src/com/jetbrains/python/psi/types/PyNoneType.java @@ -6,6 +6,7 @@ import com.jetbrains.python.psi.AccessDirection; import com.jetbrains.python.psi.PyExpression; import com.jetbrains.python.psi.resolve.PyResolveContext; import com.jetbrains.python.psi.resolve.RatedResolveResult; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -20,7 +21,7 @@ public class PyNoneType implements PyType { // TODO must extend ClassType. It's } @Nullable - public List resolveMember(final String name, + public List resolveMember(@NotNull final String name, PyExpression location, AccessDirection direction, PyResolveContext resolveContext) { diff --git a/python/src/com/jetbrains/python/psi/types/PyTypeReferenceImpl.java b/python/src/com/jetbrains/python/psi/types/PyTypeReferenceImpl.java index 1d659bdc4a8a..1727ed264e64 100644 --- a/python/src/com/jetbrains/python/psi/types/PyTypeReferenceImpl.java +++ b/python/src/com/jetbrains/python/psi/types/PyTypeReferenceImpl.java @@ -20,7 +20,7 @@ import java.util.Set; */ public abstract class PyTypeReferenceImpl implements PyTypeReference { @NotNull - public List resolveMember(String name, + public List resolveMember(@NotNull String name, PyExpression location, AccessDirection direction, PyResolveContext resolveContext) { diff --git a/python/src/com/jetbrains/python/psi/types/PyUnionType.java b/python/src/com/jetbrains/python/psi/types/PyUnionType.java index f22042dbc126..0e1e62873eb0 100644 --- a/python/src/com/jetbrains/python/psi/types/PyUnionType.java +++ b/python/src/com/jetbrains/python/psi/types/PyUnionType.java @@ -8,6 +8,7 @@ import com.jetbrains.python.psi.AccessDirection; import com.jetbrains.python.psi.PyExpression; import com.jetbrains.python.psi.resolve.PyResolveContext; import com.jetbrains.python.psi.resolve.RatedResolveResult; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.*; @@ -23,7 +24,7 @@ public class PyUnionType implements PyType { } @Nullable - public List resolveMember(String name, + public List resolveMember(@NotNull String name, PyExpression location, AccessDirection direction, PyResolveContext resolveContext) {