Corrected bugs in inner class instantiation
svn: r6429
This commit is contained in:
parent
f11e5aeb41
commit
fcaa2fb5b5
|
@ -2294,9 +2294,13 @@
|
|||
(if inner-lookup?
|
||||
(inner-rec-record inner-lookup?)
|
||||
(get-record (send type-recs get-class-record type c-class) type-recs)))
|
||||
(methods (get-method-records #;(id-string (name-id name))
|
||||
(car (class-record-name class-record))
|
||||
(methods (get-method-records (if inner-lookup?
|
||||
(id-string (name-id name))
|
||||
(car (class-record-name class-record)))
|
||||
class-record type-recs)))
|
||||
(unless (equal? (car (class-record-name class-record))
|
||||
(id-string (name-id name)))
|
||||
(set-id-string! (name-id name) (car (class-record-name class-record))))
|
||||
(unless (or (equal? (car (class-record-name class-record)) (ref-type-class/iface type)))
|
||||
(set-id-string! (name-id name) (car (class-record-name class-record)))
|
||||
(set-class-alloc-class-inner?! exp #t))
|
||||
|
|
|
@ -261,10 +261,15 @@
|
|||
|
||||
;name->type: name (U (list string) #f) src symbol type-records -> type
|
||||
(define (name->type n container-class src level type-recs)
|
||||
(let ((name (id-string (name-id n)))
|
||||
(path (map id-string (name-path n))))
|
||||
(type-exists? name path container-class src level type-recs)
|
||||
(make-ref-type name (if (null? path) (send type-recs lookup-path name (lambda () null)) path))))
|
||||
(let* ((name (id-string (name-id n)))
|
||||
(path (map id-string (name-path n)))
|
||||
(rec (get-record (type-exists? name path container-class src level type-recs) type-recs)))
|
||||
(if (class-record? rec)
|
||||
(make-ref-type (car (class-record-name rec))
|
||||
(cdr (class-record-name rec)))
|
||||
(make-ref-type name (if (null? path)
|
||||
(send type-recs lookup-path name (lambda () null)) path)))))
|
||||
|
||||
|
||||
;; type-exists: string (list string) (U (list string) #f) src symbol type-records -> (U record procedure)
|
||||
(define (type-exists? name path container-class src level type-recs)
|
||||
|
|
Loading…
Reference in New Issue
Block a user