From 6a675460f896431a3ca933b74f4e8f08a91c0869 Mon Sep 17 00:00:00 2001 From: Jay Xu Date: Sun, 7 Nov 2021 20:11:35 +0800 Subject: show the parameter list of record type constructors, predicates, accessors and mutators. --- src/geiser/geiser.ss | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src') 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))) -- cgit v1.2.3