Subject: Re: bug#18494: 24.4.50; defclass creates undocumented *-list-p function

From: Eric Ludlam <[email-masked]>
Date: Sun, 21 Sep 2014 12:37:02 -0400

On Sun, Sep 21, 2014 at 12:20 PM, Stefan Monnier <[email-masked]>
wrote:

>
> > EIEIO will need to remove it's local copy of an old typep, and I could
> > certainly convert over to using something list (list foo).  I use
> > those predicates mostly with typep.
>
> Could someone explain (and show) to me in detail how/where these
> foo-list-p are used in relation to EIEIO?
>
>
>
Sure, in ede/base.el, you will find these lines:

(defclass ede-project (ede-project-placeholder)
  ((subproj :initform nil
    :type list
    :documentation "Sub projects controlled by this project.
For Automake based projects, each directory is treated as a project.")
   (targets :initarg :targets
    :type ede-target-list
    :custom (repeat (object :objectcreatefcn ede-new-target-custom))
    :label "Local Targets"
    :group (targets)
    :documentation "List of top level targets in this project.")

for "targets: you will see:

:type ede-target-list

which will expand to ede-target-list-p, which is a test for a list of type
ede-target.

This also occurs semantic/db.e which tracks a list of tables, and in
cogre.el, where the graph tracks a list of graph elements.

Eric