ffi/unsafe/objc

Avoid crash on duplicate Objective-C class declaration.
This commit is contained in:
Matthew Flatt 2013-03-07 19:52:52 -07:00
parent 9e0e2b932d
commit 81a0451849

View File

@ -604,14 +604,15 @@
(begin (begin
(define superclass-id superclass) (define superclass-id superclass)
(define id (allocate-class-pair superclass-id id-str)) (define id (allocate-class-pair superclass-id id-str))
(void (add-protocol id proto)) ... (when id
(add-ivar id 'ivar) ... (void (add-protocol id proto)) ...
(let-syntax ([ivar (make-ivar-form 'ivar)] ...) (add-ivar id 'ivar) ...
(add-method whole-stx id superclass-id method) ... (let-syntax ([ivar (make-ivar-form 'ivar)] ...)
(mixin id superclass-id '(ivar ...)) ... (add-method whole-stx id superclass-id method) ...
(add-method whole-stx id superclass-id dealloc-method) ... (mixin id superclass-id '(ivar ...)) ...
(void)) (add-method whole-stx id superclass-id dealloc-method) ...
(register-class-pair id))))))] (void))
(register-class-pair id)))))))]
[(_ id superclass (ivar ...) method ...) [(_ id superclass (ivar ...) method ...)
#'(define-objc-class id superclass #:mixins () #:protocols () (ivar ...) method ...)] #'(define-objc-class id superclass #:mixins () #:protocols () (ivar ...) method ...)]
[(_ id superclass #:mixins (mixin ...) (ivar ...) method ...) [(_ id superclass #:mixins (mixin ...) (ivar ...) method ...)