nirum-lang/nirum

Methods of generated `*_Client` classes don't validate their arguments

dahlia opened this issue · 0 comments

Where we have the below interface:

service counter (
    bigint increment (bigint delta)
);

The following call doesn't raise TypeError but UnexpectedNirumResponseError:

>>> assert isinstance(client, Counter_Client)
>>> client.increment(None)
Traceback (most recent call last):
  ...
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  ...
nirum.exc.UnexpectedNirumResponseError: ...

It even doesn't any error for an invalid type in some cases (where the argument value is homoiconic to its JSON reduction):

>>> client.increment("123")
123