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
|
(raise-syntax-error #f
|
||||||
"not a name for a generics group"
|
"not a name for a generics group"
|
||||||
gen:foo gen:foo))
|
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))
|
(bad-generics))
|
||||||
(define gen:foo-val (syntax-local-value gen:foo))
|
(define gen:foo-val (syntax-local-value gen:foo))
|
||||||
(unless (and (list? gen:foo-val)
|
(unless (and (list? gen:foo-val)
|
||||||
|
|
|
@ -15,4 +15,5 @@
|
||||||
"contract.rkt"
|
"contract.rkt"
|
||||||
"from-unstable.rkt"
|
"from-unstable.rkt"
|
||||||
"poly-contracts.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