Fix PR 10806.
svn: r18464
This commit is contained in:
parent
82af25486e
commit
80fcee2577
|
@ -87,13 +87,17 @@
|
|||
(cond [(equal? super #t) '()] ;; no super type exists
|
||||
[(equal? super #f) '()] ;; super type is unknown
|
||||
[else (cons super (get-lineage super))])))
|
||||
(unless pred
|
||||
(raise-syntax-error 'match (format "structure ~a does not have an associated predicate"
|
||||
(syntax->datum struct-name))
|
||||
stx struct-name))
|
||||
(let* (;; the accessors come in reverse order
|
||||
[acc (reverse acc)]
|
||||
;; remove the first element, if it's #f
|
||||
[acc (cond [(null? acc) acc]
|
||||
[(not (car acc)) (cdr acc)]
|
||||
[else acc])])
|
||||
(make-Struct id
|
||||
(make-Struct pred
|
||||
(syntax-property
|
||||
pred
|
||||
'disappeared-use (list struct-name))
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
(require scheme/match
|
||||
scheme/mpair
|
||||
scheme/control
|
||||
scheme/control scheme/foreign
|
||||
(for-syntax scheme/base)
|
||||
(prefix-in m: mzlib/match)
|
||||
(only-in srfi/13 string-contains)
|
||||
|
@ -623,5 +623,15 @@
|
|||
[`#s((bar foo 3) ,x ,y ,z ,w)
|
||||
(list x y z)])
|
||||
))
|
||||
(comp "Gotcha!"
|
||||
(let ()
|
||||
(define-cstruct _pose
|
||||
([x _double*]
|
||||
[y _double*]
|
||||
[a _double*]))
|
||||
|
||||
(match (make-pose 1 2 3)
|
||||
[(struct pose (x y a)) "Gotcha!"]
|
||||
[else "Epic fail!"])))
|
||||
|
||||
))
|
||||
|
|
Loading…
Reference in New Issue
Block a user