racket/collects/honu/private/compiler/honu-translate-class.ss
2005-05-27 18:56:37 +00:00

26 lines
1.1 KiB
Scheme

(module honu-translate-class mzscheme
(require (lib "list.ss" "srfi" "1")
(lib "plt-match.ss"))
(require "../../ast.ss")
(require "../../tenv.ss")
(require "honu-translate-utils.ss")
(require "honu-translate-class-utils.ss")
(require "honu-translate-expression.ss")
(provide honu-translate-class)
(define (honu-translate-class pgm cls)
(match cls
[(struct honu-class (stx name type final? init-names init-types impls defns exports))
(at stx `(define ,(honu-translate-class-name name)
(parameterize ([current-inspector (make-inspector (current-inspector))])
(define ,(honu-translate-class-name name)
(class* object% ,(filter-map honu-translate-type-name impls)
,@(honu-translate-init-slots (honu-class-init-names cls))
,@(honu-translate-slotdefns pgm cls (honu-class-defns cls))
,@(honu-translate-exports pgm cls '() (honu-class-exports cls))
(super-new)))
,(honu-translate-class-name name))))]))
)