diff --git a/python/src/com/jetbrains/python/documentation/PyTypeModelBuilder.java b/python/src/com/jetbrains/python/documentation/PyTypeModelBuilder.java
index b24646262593..017b812fc5c3 100644
--- a/python/src/com/jetbrains/python/documentation/PyTypeModelBuilder.java
+++ b/python/src/com/jetbrains/python/documentation/PyTypeModelBuilder.java
@@ -21,6 +21,7 @@ import com.intellij.psi.PsiElement;
import com.intellij.util.containers.ContainerUtil;
import com.jetbrains.python.PyNames;
import com.jetbrains.python.codeInsight.typing.PyTypingTypeProvider;
+import com.jetbrains.python.psi.impl.PyBuiltinCache;
import com.jetbrains.python.psi.types.*;
import com.jetbrains.python.toolbox.ChainIterable;
import org.jetbrains.annotations.NotNull;
@@ -280,7 +281,14 @@ public class PyTypeModelBuilder {
result = buildCallable((PyCallableType)type);
}
else if (type instanceof PyInstantiableType && ((PyInstantiableType)type).isDefinition()) {
- result = new ClassObjectType(build(((PyInstantiableType)type).toInstance(), allowUnions));
+ final PyInstantiableType instanceType = ((PyInstantiableType)type).toInstance();
+ // Special case: render Type[type] as just type
+ if (type instanceof PyClassType && instanceType.equals(PyBuiltinCache.getInstance(((PyClassType)type).getPyClass()).getTypeType())) {
+ result = NamedType.nameOrAny(type);
+ }
+ else {
+ result = new ClassObjectType(build(instanceType, allowUnions));
+ }
}
else if (type instanceof PyGenericType) {
//assert !((PyGenericType)type).isDefinition()
diff --git a/python/testData/inspections/PyTypeCheckerInspection/TypeAndClassObjectTypesCompatibility.py b/python/testData/inspections/PyTypeCheckerInspection/TypeAndClassObjectTypesCompatibility.py
index 1a9e4eda32cd..b484b262720f 100644
--- a/python/testData/inspections/PyTypeCheckerInspection/TypeAndClassObjectTypesCompatibility.py
+++ b/python/testData/inspections/PyTypeCheckerInspection/TypeAndClassObjectTypesCompatibility.py
@@ -32,9 +32,9 @@ expects_type(type)
expects_type(object)
expects_typing_type(type)
expects_typing_type(object)
-expects_str_class(type)
+expects_str_class(type)
expects_any_type_via_type_var(type)
-expects_str_subclass(type)
+expects_str_subclass(type)
expects_object(type)