Ticket #1018 (closed defect: fixed)

Opened 22 months ago

Last modified 22 months ago

congruent lambda-lists

Reported by: pfeilgm Owned by:
Priority: normal Milestone:
Component: ANSI CL Compliance Version: trunk
Keywords: Cc:

Description

CCL currently doesn’t accept the following form:

(defgeneric foo (&key bar &allow-other-keys)
  (:method (&key)
    nil))

complaining that `Lambda list of method #<STANDARD-METHOD FOO NIL> is incompatible with that of the generic function FOO.`

However, section 7.6.4.5 of the spec says “The use of &allow-other-keys need not be consistent across lambda lists. If &allow-other-keys is mentioned in the lambda list of any applicable method or of the generic function, any keyword arguments may be mentioned in the call to the generic function,” which means that the former example should behave the same as

(defgeneric foo (&key bar &allow-other-keys)
  (:method (&key &allow-other-keys)
    nil))

which works.

(The cl-num-utils system in Quicklisp fails to load on CCL due to this behavior. And according to  the CL Test Grid load failure report, this contributes to 5 other systems in Quicklisp not loading.)

Change History

comment:1 Changed 22 months ago by gb

  • Status changed from new to closed
  • Resolution set to fixed

(In [15474]) CONGRUENT-LAMBDA-LISTS-P: if gf's lambda list has &allow-other-keys, don't check explicit keywords. Fixes ticket:1018 in the trunk.

Note: See TracTickets for help on using tickets.