I think this is a sensible warning. If I see #!void ending up somewhere inside a value object like a list (`result` in your snippet), that immediately alarms me that something is wrong. An empty `values` call is a defined case, it would simply yield an empty `result` list. 2022-09-21, tr, 00:02 Panicz Maciej Godek via Kawa rašė: > Suppose that I have some code like > > (define (f)::void > (call-with-values > (λ () #!void) > (λ result > (apply values result)))) > > When I compile it, Kawa issues the warning: > > void-valued expression where value is needed > > I wonder whether this warning is desired in such circumstances? > > (It surely makes it difficult to write values-agnostic macros) > > What is interesting is that the warning disappears if I replace #!void with > (values) [unless I declare the function's return type as ::void]. >