emacs-devel
[Top][All Lists]
Advanced

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

Re: two likely bugs with qualified methods


From: Eric Abrahamsen
Subject: Re: two likely bugs with qualified methods
Date: Fri, 15 Jul 2016 09:04:08 -0700
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux)

Clément Pit--Claudel <address@hidden> writes:

> On 2016-07-15 09:11, Eric Abrahamsen wrote:
>> Not serious ones, but...
>> 
>> See the following:
>> 
>> (cl-defmethod base ((str string))
>>   "This one's okay"
>>   (message str))
>> 
>> (cl-defmethod base :extra "ext" ((str string))
>>            "This one isn't"
>>            (message "extra method")
>>            (cl-call-next-method))
>> 
>> The first problem should be evident: alignment doesn't work correctly
>> for any qualified methods. This is with emacs -Q, built from master.
>> 
>> Additionally, if you try to instrument the second form for edbugging,
>> the cursor jumps to the first argument in the argument list, and you
>> get:
>> 
>> edebug-syntax-error: Invalid read syntax: "Expected lambda expression"
>
> Both problems can probably be fixed by adjusting the (declare) form at the 
> beginning of cl-defmethod:
>
>   (declare (doc-string 3) (indent 2)
>            (debug
>             (&define                    ; this means we are defining something
>              [&or name ("setf" :name setf name)]
>              ;; ^^ This is the methods symbol
>              [ &optional keywordp ]     ; this is key :before etc
>              list                       ; arguments
>              [ &optional stringp ]      ; documentation string
>              def-body)))                ; part to be debugged
>
> (indent 2) could be changed to (indent defun); the debug spec could
> probably be fixed by using one of the edebug specs in cl-macs, such as
> `cl-lambda-lis

I tried taking a whack at this before posting, but wasn't familiar
enough with declare to get it to work. Anyhow, there are now two bug
reports for this: 23994 and 23995.

E




reply via email to

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