chicken-janitors
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Chicken-janitors] #1399: Scrutinizer produces incorrect procedure types


From: Chicken Trac
Subject: [Chicken-janitors] #1399: Scrutinizer produces incorrect procedure types after merge
Date: Sat, 09 Sep 2017 08:00:20 -0000

#1399: Scrutinizer produces incorrect procedure types after merge
-------------------------+-------------------------------
 Reporter:  LemonBoy     |                 Owner:
     Type:  defect       |                Status:  new
 Priority:  major        |             Milestone:  4.13.0
Component:  scrutinizer  |               Version:  4.12.0
 Keywords:               |  Estimated difficulty:  medium
-------------------------+-------------------------------
 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.

--
Ticket URL: <https://bugs.call-cc.org/ticket/1399>
CHICKEN Scheme <https://www.call-cc.org/>
CHICKEN Scheme is a compiler for the Scheme programming language.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]