Use constants for names of the 'numbers' classes

This commit is contained in:
Andrey Vlasovskikh
2013-10-28 16:28:52 +04:00
parent fb1f5b5cd0
commit a632bbd485
3 changed files with 14 additions and 12 deletions
@@ -106,10 +106,11 @@ public class PyNames {
public static final String SEQUENCE = "Sequence";
public static final String MAPPING = "Mapping";
public static final String COMPLEX = "Complex";
public static final String REAL = "Real";
public static final String RATIONAL = "Rational";
public static final String INTEGRAL = "Integral";
public static final String ABC_NUMBER = "Number";
public static final String ABC_COMPLEX = "Complex";
public static final String ABC_REAL = "Real";
public static final String ABC_RATIONAL = "Rational";
public static final String ABC_INTEGRAL = "Integral";
public static final String CONTAINS = "__contains__";
public static final String HASH = "__hash__";
@@ -386,7 +387,8 @@ public class PyNames {
);
public static Set<String> BuiltinInterfaces = ImmutableSet.of(
CALLABLE, HASHABLE, ITERABLE, ITERATOR, SIZED, CONTAINER, SEQUENCE, MAPPING, COMPLEX, REAL, RATIONAL, INTEGRAL
CALLABLE, HASHABLE, ITERABLE, ITERATOR, SIZED, CONTAINER, SEQUENCE, MAPPING, ABC_COMPLEX, ABC_REAL, ABC_RATIONAL, ABC_INTEGRAL,
ABC_NUMBER
);
/**
@@ -68,13 +68,13 @@ public class PyABCUtil {
if (PyNames.MAPPING.equals(superClassName)) {
return isSized && hasIter && isContainer && hasGetItem && hasMethod(subClass, PyNames.KEYS, inherited);
}
if (PyNames.COMPLEX.equals(superClassName)) {
if (PyNames.ABC_COMPLEX.equals(superClassName)) {
return hasMethod(subClass, "__complex__", inherited);
}
if (PyNames.REAL.equals(superClassName)) {
if (PyNames.ABC_REAL.equals(superClassName)) {
return hasMethod(subClass, "__float__", inherited);
}
if (PyNames.INTEGRAL.equals(superClassName)) {
if (PyNames.ABC_INTEGRAL.equals(superClassName)) {
return hasMethod(subClass, "__int__", inherited);
}
return false;
@@ -193,10 +193,10 @@ public class PyTypeChecker {
if (superName == null || subName == null ||
superName.equals(subName) ||
("int".equals(superName) && subIsBool) ||
(("long".equals(superName) || "Integral".equals(superName)) && (subIsBool || subIsInt)) ||
(("float".equals(superName) || "Real".equals(superName)) && (subIsBool || subIsInt || subIsLong)) ||
(("complex".equals(superName) || "Complex".equals(superName)) && (subIsBool || subIsInt || subIsLong || subIsFloat)) ||
("Number".equals(superName) && (subIsBool || subIsInt || subIsLong || subIsFloat || subIsComplex))) {
(("long".equals(superName) || PyNames.ABC_INTEGRAL.equals(superName)) && (subIsBool || subIsInt)) ||
(("float".equals(superName) || PyNames.ABC_REAL.equals(superName)) && (subIsBool || subIsInt || subIsLong)) ||
(("complex".equals(superName) || PyNames.ABC_COMPLEX.equals(superName)) && (subIsBool || subIsInt || subIsLong || subIsFloat)) ||
(PyNames.ABC_NUMBER.equals(superName) && (subIsBool || subIsInt || subIsLong || subIsFloat || subIsComplex))) {
return true;
}
return false;