Now mixins also show up as being bound appropriately. I also removed the
old honu:type function that has no use now that I'm doing things the "right" way. svn: r342
This commit is contained in:
parent
2feaff9d19
commit
73b1b12558
|
@ -9,13 +9,6 @@
|
||||||
(error "Attempt to access member of null")
|
(error "Attempt to access member of null")
|
||||||
(send obj msg arg ...))]))
|
(send obj msg arg ...))]))
|
||||||
|
|
||||||
;; We just use this so that Check Syntax correctly matches up
|
|
||||||
;; types that don't appear otherwise. Yes, this is a hack.
|
|
||||||
;; For obvious reasons, this can't just be a macro that ignores
|
|
||||||
;; its arguments, but must instead be a _function_ that ignores them.
|
|
||||||
(define (honu:type . types)
|
|
||||||
(void))
|
|
||||||
|
|
||||||
(define null%
|
(define null%
|
||||||
(class object%
|
(class object%
|
||||||
(inspect #f)
|
(inspect #f)
|
||||||
|
|
|
@ -50,8 +50,10 @@
|
||||||
(map (lambda (e)
|
(map (lambda (e)
|
||||||
(translate-type-for-syntax (honu:export-type e)))
|
(translate-type-for-syntax (honu:export-type e)))
|
||||||
exports))]
|
exports))]
|
||||||
[(struct honu:subclass (_ _ _ _))
|
[(struct honu:subclass (_ _ _ mixin))
|
||||||
'()]))
|
;; okay, this isn't a type, but we still want to see it as a use
|
||||||
|
;; until we can translate mixins correctly.
|
||||||
|
(list (translate-mixin-name mixin))]))
|
||||||
|
|
||||||
(define (build-unwanted-type-syntax-member-decl member)
|
(define (build-unwanted-type-syntax-member-decl member)
|
||||||
(match member
|
(match member
|
||||||
|
|
|
@ -63,7 +63,7 @@
|
||||||
value)])
|
value)])
|
||||||
,(cons 'values (grab-indices names)))))
|
,(cons 'values (grab-indices names)))))
|
||||||
|
|
||||||
(provide translate-iface-name translate-class-name translate-method-name
|
(provide translate-iface-name translate-class-name translate-mixin-name translate-method-name
|
||||||
translate-field-getter-name translate-field-setter-name)
|
translate-field-getter-name translate-field-setter-name)
|
||||||
(define (translate-iface-name type)
|
(define (translate-iface-name type)
|
||||||
(let ([name (if (honu:type-iface-top? type)
|
(let ([name (if (honu:type-iface-top? type)
|
||||||
|
@ -73,6 +73,8 @@
|
||||||
|
|
||||||
(define (translate-class-name class)
|
(define (translate-class-name class)
|
||||||
(at class (string->symbol (string-append (symbol->string (syntax-e class)) "%"))))
|
(at class (string->symbol (string-append (symbol->string (syntax-e class)) "%"))))
|
||||||
|
(define (translate-mixin-name mixin)
|
||||||
|
(at mixin (string->symbol (string-append (symbol->string (syntax-e mixin)) "-mixin"))))
|
||||||
|
|
||||||
(define (translate-method-name type name)
|
(define (translate-method-name type name)
|
||||||
(at name (string->symbol (string-append (symbol->string (syntax-e (translate-iface-name type)))
|
(at name (string->symbol (string-append (symbol->string (syntax-e (translate-iface-name type)))
|
||||||
|
|
|
@ -26,8 +26,6 @@
|
||||||
[(null? defns-to-go)
|
[(null? defns-to-go)
|
||||||
(cons (build-unwanted-type-syntax defns)
|
(cons (build-unwanted-type-syntax defns)
|
||||||
(reverse syntaxes))]
|
(reverse syntaxes))]
|
||||||
[(honu:mixin? (car defns-to-go))
|
|
||||||
(loop (cdr defns-to-go) syntaxes)]
|
|
||||||
[(honu:subclass? (car defns-to-go))
|
[(honu:subclass? (car defns-to-go))
|
||||||
(let ([mixin (find (lambda (d)
|
(let ([mixin (find (lambda (d)
|
||||||
(and (honu:mixin? d)
|
(and (honu:mixin? d)
|
||||||
|
@ -77,6 +75,10 @@
|
||||||
,(translate-impl-method impls)
|
,(translate-impl-method impls)
|
||||||
,(translate-formatter name members)
|
,(translate-formatter name members)
|
||||||
(super-new))))]
|
(super-new))))]
|
||||||
|
[(struct honu:mixin (stx name _ _ _ _ _ _ _ _ _ _))
|
||||||
|
;; just a dummy definition to get the bindings set up correctly
|
||||||
|
(at stx `(define ,(translate-mixin-name name)
|
||||||
|
'()))]
|
||||||
[else (raise-read-error-with-stx
|
[else (raise-read-error-with-stx
|
||||||
"Haven't translated that type of definition yet."
|
"Haven't translated that type of definition yet."
|
||||||
(honu:ast-stx defn))]))
|
(honu:ast-stx defn))]))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user