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

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

[nongnu] elpa/geiser-racket 74a223e 008/191: Racket: autodoc for struct


From: Philip Kaludercic
Subject: [nongnu] elpa/geiser-racket 74a223e 008/191: Racket: autodoc for struct constructors
Date: Sun, 1 Aug 2021 18:31:50 -0400 (EDT)

branch: elpa/geiser-racket
commit 74a223ea6c916d657b2a23a53c98878eb5a6487d
Author: Jose Antonio Ortega Ruiz <jao@gnu.org>
Commit: Jose Antonio Ortega Ruiz <jao@gnu.org>

    Racket: autodoc for struct constructors
---
 geiser/autodoc.rkt | 25 ++++++++++++++-----------
 geiser/enter.rkt   | 18 +++++++++---------
 2 files changed, 23 insertions(+), 20 deletions(-)

diff --git a/geiser/autodoc.rkt b/geiser/autodoc.rkt
index 9cf681c..e54a242 100644
--- a/geiser/autodoc.rkt
+++ b/geiser/autodoc.rkt
@@ -50,7 +50,7 @@
 
 (define signatures (make-hash))
 
-(define-struct signature (required optional keys rest))
+(struct signature (required optional keys rest))
 
 (define (find-signatures path name local-name)
   (let ((path (if (path? path) (path->string path) path)))
@@ -91,6 +91,11 @@
       (`(define ,name (case-lambda ,clauses ...))
        (for-each (lambda (c) (add-signature! name (car c) store))
                  (reverse clauses)))
+      (`(,(or 'struct 'define-struct) ,name ,(? symbol? _)
+         ,(list formals ...) . ,_)
+       (add-signature! name formals store))
+      (`(,(or 'struct 'define-struct) ,name ,(list formals ...) . ,_)
+       (add-signature! name formals store))
       (`(define-for-syntax (,name . ,formals) . ,_)
        (add-signature! name formals store))
       (`(define-for-syntax ,name (lambda ,formals . ,_))
@@ -116,16 +121,15 @@
   (when (symbol? name)
     (hash-set! store
                name
-               (cons (make-signature formals '() '() #f)
+               (cons (signature formals '() '() #f)
                      (hash-ref store name '())))))
 
 (define (parse-formals formals)
   (let loop ((formals formals) (req '()) (opt '()) (keys '()))
     (cond ((null? formals)
-           (make-signature (reverse req) (reverse opt) (reverse keys) #f))
+           (signature (reverse req) (reverse opt) (reverse keys) #f))
           ((symbol? formals)
-           (make-signature (reverse req) (reverse opt)
-                           (reverse keys) formals))
+           (signature (reverse req) (reverse opt) (reverse keys) formals))
           ((pair? (car formals)) (loop (cdr formals)
                                        req
                                        (cons (car formals) opt)
@@ -145,7 +149,7 @@
 (define (infer-signatures name)
   (define syntax-tag (cons 1 0))
   (define error-tag (cons 1 1))
-  (define generic-signature (make-signature '(...) '() '() #f))
+  (define generic-signature (signature '(...) '() '() #f))
   (let ((value (with-handlers ((exn:fail:syntax? (lambda (_) syntax-tag))
                                (exn:fail:contract:variable? (lambda (_)
                                                               error-tag)))
@@ -164,10 +168,9 @@
            (build-list count (lambda (n) (+ n fst))))))
   (define (arity->signature arity)
     (cond ((number? arity)
-           (make-signature (args 0 arity) '() '() #f))
+           (signature (args 0 arity) '() '() #f))
           ((arity-at-least? arity)
-           (make-signature (args 0 (arity-at-least-value arity))
-                           '() '() 'rest))))
+           (signature (args 0 (arity-at-least-value arity)) '() '() 'rest))))
   (define (conseq? lst)
     (cond ((< (length lst) 2) (number? (car lst)))
           ((and (number? (car lst))
@@ -178,7 +181,7 @@
   (cond ((and (list? arity) (conseq? arity))
          (let ((mi (apply min arity))
                (ma (apply max arity)))
-           (list (make-signature (args 0 mi) (args mi (- ma mi)) '() #f))))
+           (list (signature (args 0 mi) (args mi (- ma mi)) '() #f))))
         ((list? arity) (map arity->signature arity))
         (else (list (arity->signature arity)))))
 
@@ -188,7 +191,7 @@
                  (and (list? (car form))
                       (not (null? (car form)))
                       (memq (caar form)
-                            '(define-syntax-rule
+                            '(define-syntax-rule struct
                                define-syntax define set! define-struct)))))
     (hash-remove! signatures path)))
 
diff --git a/geiser/enter.rkt b/geiser/enter.rkt
index 58be936..181c06a 100644
--- a/geiser/enter.rkt
+++ b/geiser/enter.rkt
@@ -16,7 +16,7 @@
 
 (provide get-namespace enter-module module-loader module-loaded?)
 
-(define-struct mod (name timestamp depends))
+(struct mod (name timestamp depends))
 
 (define loaded (make-hash))
 
@@ -60,14 +60,14 @@
                                          (or (current-load-relative-directory)
                                              (current-directory)))))])
         ;; Record module timestamp and dependencies:
-        (let ([mod (make-mod name
-                             (get-timestamp path)
-                             (if code
-                                 (apply append
-                                        (map cdr
-                                             (module-compiled-imports code)))
-                                 null))])
-          (hash-set! loaded path mod))
+        (let ([m (mod name
+                      (get-timestamp path)
+                      (if code
+                          (apply append
+                                 (map cdr
+                                      (module-compiled-imports code)))
+                          null))])
+          (hash-set! loaded path m))
         ;; Evaluate the module:
         (eval code))
       ;; Not a module:



reply via email to

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