[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.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Chicken-janitors] #1399: Scrutinizer produces incorrect procedure types after merge,
Chicken Trac <=