PY-20057 Partially support type checking between type and typing.Type[]

This commit is contained in:
Mikhail Golubev
2017-03-06 15:20:44 +03:00
parent 30c007d800
commit c700e57db4
@@ -69,10 +69,15 @@ public class PyTypeChecker {
final PyClassType classType = (PyClassType)actual;
final PyBuiltinCache builtinCache = PyBuiltinCache.getInstance(classType.getPyClass());
if (actual == builtinCache.getObjectType(PyNames.BASESTRING)) {
if (actual.equals(builtinCache.getObjectType(PyNames.BASESTRING))) {
return match(expected, builtinCache.getStrOrUnicodeType(), context, substitutions, recursive);
}
}
if (expected instanceof PyClassType &&
expected.equals(PyBuiltinCache.getInstance(((PyClassType)expected).getPyClass()).getTypeType()) &&
actual instanceof PyInstantiableType && ((PyInstantiableType)actual).isDefinition()) {
return true;
}
if (expected instanceof PyInstantiableType && actual instanceof PyInstantiableType
&& ((PyInstantiableType)expected).isDefinition() ^ ((PyInstantiableType)actual).isDefinition()) {
return false;