diff options
Diffstat (limited to 'scheme/racket')
| -rw-r--r-- | scheme/racket/geiser/autodoc.rkt | 17 | 
1 files changed, 6 insertions, 11 deletions
| diff --git a/scheme/racket/geiser/autodoc.rkt b/scheme/racket/geiser/autodoc.rkt index a62bc24..9eb732d 100644 --- a/scheme/racket/geiser/autodoc.rkt +++ b/scheme/racket/geiser/autodoc.rkt @@ -147,17 +147,12 @@            [else (loop (cdr formals) (cons (car formals) req) opt keys)])))  (define (infer-signatures name) -  (define syntax-tag (cons 1 0)) -  (define error-tag (cons 1 1)) -  (define generic-signature (signature '(...) '() '() #f)) -  (let ([value (with-handlers ([exn:fail:syntax? (lambda (_) syntax-tag)] -                               [exn:fail:contract:variable? (lambda (_) -                                                              error-tag)]) -                 (namespace-variable-value name))]) -    (cond [(procedure? value) (arity->signatures (procedure-arity value))] -          [(eq? value syntax-tag) (list generic-signature)] -          [(eq? value error-tag) #f] -          [else 'variable]))) +  (with-handlers ([exn:fail:syntax? (const `(,(signature '(...) '() '() #f)))] +                  [exn:fail:contract:variable? (const #f)]) +    (let ([v (namespace-variable-value name)]) +      (if (procedure? v) +          (arity->signatures (procedure-arity v)) +          'variable))))  (define (arity->signatures arity)    (define (args count) (build-list count (const '_))) | 
