[Ecls-list] Bug in argument checking based on function proclamation
Gabriel Dos Reis
gdr at integrable-solutions.net
Thu Jul 1 22:08:11 UTC 2010
On Thu, Jul 1, 2010 at 4:39 PM, Juan Jose Garcia-Ripoll
<juanjose.garciaripoll at googlemail.com> wrote:
> On Tue, Jun 29, 2010 at 2:12 AM, Gabriel Dos Reis
> <gdr at integrable-solutions.net> wrote:
>>
>> On Mon, Jun 28, 2010 at 2:46 PM, Juan Jose Garcia-Ripoll
>> <juanjose.garciaripoll at googlemail.com> wrote:
>> > * Proclamations are also used to deduce the type of a function's
>> > arguments
>> > and create argument type checks.
>> >
>> The function arguments checking seems to have a bug.
>
> Thanks a lot for the test case. I identified a problem with how FTYPE
> declarations are parsed. I did not detect the problem because I was focusing
> on PROCLAIM, not DECLAIM. It should be fixed now, but just started an
> OpenAxiom build to make sure -- Maxima works, though.
I just updated my local copy of ECL CVS. That problem is indeed solved. Thanks!
However, I cannot build OpenAxiom. The build fails during ECL'c C
code generation for the lisp translation of src/interp/c-util.boot, in the
function |expandableDefinition?|:
;;; Emitting code for |expandableDefinition?|.
-1 is not of type FUNCTION.
Available restarts:
1. (ABORT) ABORT
Backtrace did not give me much to work on. to isolate the bug.
I do not know how ECL got to '-1'.
>>
>> 1. The argument-type in the function proclamation is simple enough
>> that ECL should not be confused.
>>
>> 2. ECL pretends that there are too few arguments for proclaimed
>> BEGIN-DOLLAR-P. Yet, the function was proclaimed to be
>> of arity 1, and there is exactly one argument supplied in the call.
>
> These two were caused by the error I just fixed.
OK.
>>
>> What are the notes about propagating FUNCALL and C-INLINE about?
>
> The type propagator is complaining about forms for which there is no type
> propagation code. I just disabled some of them, but seems I forgot FUNCALL.
OK, thanks!
-- Gaby
More information about the ecl-devel
mailing list