From: Stefan Behnel Date: Tue, 20 Oct 2009 19:36:58 +0000 (+0200) Subject: comments X-Git-Tag: 0.13.beta0~2^2~121^2~1 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=166ffcdb75552222018f9421f4078f76f0738fa0;p=cython.git comments --- diff --git a/Cython/Compiler/ExprNodes.py b/Cython/Compiler/ExprNodes.py index d61d36de..6661e5ef 100644 --- a/Cython/Compiler/ExprNodes.py +++ b/Cython/Compiler/ExprNodes.py @@ -5105,10 +5105,13 @@ class CmpNode(object): new_common_type = None + # catch general errors if type1 == str_type and (type2.is_string or type2 in (bytes_type, unicode_type)) or \ type2 == str_type and (type1.is_string or type1 in (bytes_type, unicode_type)): error(self.pos, "Comparisons between bytes/unicode and str are not portable to Python 3") new_common_type = error_type + + # try to use numeric comparisons where possible elif type1.is_complex or type2.is_complex: if op not in ('==', '!='): error(self.pos, "complex types are unordered") @@ -5125,6 +5128,7 @@ class CmpNode(object): new_common_type = self.find_common_int_type(env, op, operand1, operand2) if new_common_type is None: + # fall back to generic type compatibility tests if type1 == type2 or type1.assignable_from(type2): new_common_type = type1 elif type2.assignable_from(type1): @@ -5151,6 +5155,7 @@ class CmpNode(object): self.invalid_types_error(operand1, op, operand2) new_common_type = error_type + # recursively merge types if common_type is None or new_common_type.is_error: common_type = new_common_type else: