Re: [PATCH 1/2] kunit: Do not typecheck binary assertions

From: Brendan Higgins
Date: Fri May 07 2021 - 16:05:29 EST


On Thu, May 6, 2021 at 10:09 PM David Gow <davidgow@xxxxxxxxxx> wrote:
>
> The use of typecheck() in KUNIT_EXPECT_EQ() and friends is causing more
> problems than I think it's worth. Things like enums need to have their
> values explicitly cast, and literals all need to be very precisely typed
> for the code to compile.

nit: I have not had the typecheck() call prevent any code from
compiling, just generating warnings. I guess you can have a build set
to cause any warning to be promoted to an error; still, I think this
statement is misleading.

> While typechecking does have its uses, the additional overhead of having
> lots of needless casts -- combined with the awkward error messages which
> don't mention which types are involved -- makes tests less readable and
> more difficult to write.
>
> By removing the typecheck() call, the two arguments still need to be of
> compatible types, but don't need to be of exactly the same time, which
> seems a less confusing and more useful compromise.
>
> Signed-off-by: David Gow <davidgow@xxxxxxxxxx>

Looks good to me.

Reviewed-by: Brendan Higgins <brendanhiggins@xxxxxxxxxx>

> ---
>
> I appreciate that this is probably a bit controversial (and, indeed, I
> was a bit hesitant about sending it out myself), but after sitting on it
> for a few days, I still think this is probably an improvement overall.
>
> The second patch does fix what I think is an actual bug, though, so even
> if this isn't determined to be a good idea, it (or some equivalent)
> should probably go through.

I don't remember being a huge fan of the typecheck when it was asked
for either. I think I am a little bit more indifferent than you;
nevertheless, I support this change.