id summary reporter owner description type status priority milestone component version resolution keywords cc difficulty 1399 Scrutinizer produces incorrect procedure types after merge LemonBoy evhan "Suppose we get this expression after scrutinizing some code: {{{ (or (procedure (|#!rest|) noreturn) (procedure (* |#!rest|) . *)) }}} At the moment the result of the union is `(procedure (#!rest))` which is clearly wrong because it has arity N >= 0 while the second procedure in the `or` expression has arity N >= 1. Moreover the return type is lost, I'd expect the `noreturn` to be dropped and `*` to be used instead. The result of the miscalculation of the resulting type may or may not be dangerous." defect reopened major someday scrutinizer 4.12.0 medium