Summary

> < >= <= = 2-arg compiler rewrites are broken

Metadata

Description

The implementation of C_i_greaterp does not throw an error when the first argument is not a number.

See example at http://paste.lisp.org/display/99206

I believe this is because it does not check the argument type of x, only y. Instead if x is not a fixnum or flonum, C_i_greaterp just returns #f.

In other words it is missing: else barf(C_BAD_ARGUMENT_TYPE_ERROR, ">", x);

I also believe C_i_nequalp, C_i_greaterp, C_i_lessp, C_i_greater_or_equalp, C_i_less_or_equalp are all affected.

Changes and comments

[2010-05-14 23:38:25 UTC] felix changed status from new to accepted

[2010-05-14 23:38:35 UTC] felix changed component from compiler to core libraries

[2010-05-16 00:05:25 UTC] felix changed status from accepted to closed

[2010-05-16 00:05:25 UTC] felix set resolution to fixed

[2010-05-16 00:05:25 UTC] felix wrote:

Fixed in commit 90ff06e (master).

[2011-04-04 08:31:00 UTC] felix removed milestone 4.6.0

[2011-04-04 08:31:00 UTC] felix wrote:

Milestone 4.6.0 deleted