Fix #:methods regression at top-level
Please merge to v5.3.4
(cherry picked from commit fa80c53115
)
This commit is contained in:
parent
2001098046
commit
fc75ff426a
|
@ -319,7 +319,12 @@
|
|||
(raise-syntax-error #f
|
||||
"not a name for a generics group"
|
||||
gen:foo gen:foo))
|
||||
(unless (and (identifier? gen:foo) (identifier-binding gen:foo))
|
||||
(unless (and (identifier? gen:foo)
|
||||
;; at the top-level, it's not possible to check
|
||||
;; if this `gen:foo` is bound, so we give up on the
|
||||
;; error message in that case
|
||||
(or (eq? (syntax-local-context) 'top-level)
|
||||
(identifier-binding gen:foo)))
|
||||
(bad-generics))
|
||||
(define gen:foo-val (syntax-local-value gen:foo))
|
||||
(unless (and (list? gen:foo-val)
|
||||
|
|
|
@ -15,4 +15,5 @@
|
|||
"contract.rkt"
|
||||
"from-unstable.rkt"
|
||||
"poly-contracts.rkt"
|
||||
"empty-interface.rkt")
|
||||
"empty-interface.rkt"
|
||||
"top-level.rkt")
|
||||
|
|
20
collects/tests/generic/top-level.rkt
Normal file
20
collects/tests/generic/top-level.rkt
Normal file
|
@ -0,0 +1,20 @@
|
|||
#lang racket/base
|
||||
|
||||
;; check that generics work at the top-level
|
||||
|
||||
(require racket/generic
|
||||
rackunit)
|
||||
|
||||
(define ns (make-base-namespace))
|
||||
|
||||
(check-not-exn
|
||||
(λ ()
|
||||
(eval '(require racket/generic) ns)
|
||||
(eval '(define-generics foobar [foo foobar a1]) ns)
|
||||
(eval '(struct inst ()
|
||||
;; make sure `gen:foobar` doesn't cause an
|
||||
;; error here
|
||||
#:methods gen:foobar
|
||||
[(define (foo foobar a1) 0)])
|
||||
ns)))
|
||||
|
Loading…
Reference in New Issue
Block a user