emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[nongnu] elpa/geiser-chez 6a67546 2/2: show the parameter list of record


From: ELPA Syncer
Subject: [nongnu] elpa/geiser-chez 6a67546 2/2: show the parameter list of record type constructors, predicates,
Date: Thu, 18 Nov 2021 12:57:42 -0500 (EST)

branch: elpa/geiser-chez
commit 6a675460f896431a3ca933b74f4e8f08a91c0869
Author: Jay Xu <jay.xu.krfantasy@gmail.com>
Commit: Jay Xu <jay.xu.krfantasy@gmail.com>

    show the parameter list of record type constructors, predicates,
    accessors and mutators.
---
 src/geiser/geiser.ss | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/geiser/geiser.ss b/src/geiser/geiser.ss
index afa58c3..6546579 100644
--- a/src/geiser/geiser.ss
+++ b/src/geiser/geiser.ss
@@ -101,10 +101,21 @@
       (if s
           (let ((form (s 'value)))
             (if (and (list? form)
-                     (> (length form) 2))
+                     (>= (length form) 2))
                 (case (car form)
                   [(lambda) (list (cadr form))]
                   [(case-lambda) (map car (cdr form))]
+                  [(record-predicate record-accessor)
+                   (list (list (record-type-name (cadr (cadr form)))))]
+                  [(record-mutator)
+                   (let ([rtd (cadr (cadr form))]
+                         [field-idx (caddr form)])
+                     (list (list (record-type-name rtd)
+                                 (vector-ref (record-type-field-names rtd) 
field-idx))))]
+                  [(record-constructor)
+                   (let* ([rcd (cadr (cadr form))]
+                          [rtd (((inspect/object rcd) 'ref 'rtd) 'value)])
+                     (list (vector->list (record-type-field-names rtd))))]
                   [else #f])
                 #f))
           #f)))



reply via email to

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