Exemple #1
0
    def simple_dispatch(self, *args, **kwargs):
        assert self.f is not None
        args = flatargs(self.f, args, kwargs)
        types = list(map(T.typeof, args))
        candidates = find_matches(self.overloads, types)
        if len(candidates) != 1:
            raise error.OverloadError(
                "Cannot perform simple dispatch with %d input types")

        [dst_sig, sig, func] = candidates
        # TODO: convert argument types using dst_sig
        return func(*args)
Exemple #2
0
 def lookup_dispatcher(self, args, kwargs, constraints=None):
     assert self.f is not None
     args = flatargs(self.f, tuple(args), kwargs)
     types = list(map(T.typeof, args))
     match = best_match(self, types, constraints)
     return match, args