type2 = type2.base_type
entry = env.lookup(type1.name)
function = entry.type.scope.lookup("operator%s" % self.operator)
+ if function is not None:
+ operands = [self.operand2]
+ else:
+ function = env.lookup("operator%s" % self.operator)
+ operands = [self.operand1, self.operand2]
if not function:
self.type_error()
return
- entry = PyrexTypes.best_match([self.operand1, self.operand2], function.all_alternatives(), self.pos)
+ entry = PyrexTypes.best_match(operands, function.all_alternatives(), self.pos)
if entry is None:
self.type = PyrexTypes.error_type
self.result_code = "<error>"
cname = None
if cname is None and ctx.namespace is not None:
cname = ctx.namespace + "::" + name
+ if name == 'operator' and ctx.visibility == 'extern':
+ # TODO: This needs to be more strict...
+ name += s.sy
+ s.next()
result = Nodes.CNameDeclaratorNode(pos,
name = name, cname = cname, default = rhs)
result.calling_convention = calling_convention
cdef extern from "operators.h":
cdef cppclass Operators:
- __init__(int)
+ Operators(int)
+ Operators operator+(Operators)
Operators __add__(Operators, Operators)
Operators __sub__(Operators, Operators)
Operators __mul__(Operators, Operators)