parent
3e9a8ccf59
commit
4eed365e1f
|
@ -1235,6 +1235,40 @@
|
||||||
(super-new)))])
|
(super-new)))])
|
||||||
(test 16 'send-using-local (send (new c%) pub 3)))
|
(test 16 'send-using-local (send (new c%) pub 3)))
|
||||||
|
|
||||||
|
;; Make sure local names are checked correctly for deciding
|
||||||
|
;; conflicting method names:
|
||||||
|
(let ()
|
||||||
|
(define-syntax-rule (defclss name% x y)
|
||||||
|
(begin
|
||||||
|
(define-local-member-name f)
|
||||||
|
(define name%
|
||||||
|
(class object%
|
||||||
|
(super-new)
|
||||||
|
(define/public (f) 5)
|
||||||
|
(define/public (x) 6)
|
||||||
|
(define/public (y) 7)))
|
||||||
|
(test 5 'local-f (send (new name%) f))))
|
||||||
|
|
||||||
|
(defclss one% f y)
|
||||||
|
(test 6 'normal-f (send (new one%) f))
|
||||||
|
(test 7 'normal-y (send (new one%) y))
|
||||||
|
|
||||||
|
(define-syntax-rule (defclss2 name% x)
|
||||||
|
(begin
|
||||||
|
(define-local-member-name f)
|
||||||
|
(defclss name% f x)
|
||||||
|
(test 6 'middle-f (send (new name%) f))))
|
||||||
|
|
||||||
|
(defclss2 two% f)
|
||||||
|
(test 7 'normal-f (send (new two%) f)))
|
||||||
|
|
||||||
|
(syntax-test #'(let ()
|
||||||
|
(define-local-member-name f)
|
||||||
|
(class object%
|
||||||
|
(super-new)
|
||||||
|
(define/public (f) 5)
|
||||||
|
(define/public (f) 6))))
|
||||||
|
|
||||||
;; ------------------------------------------------------------
|
;; ------------------------------------------------------------
|
||||||
;; `send+' tests
|
;; `send+' tests
|
||||||
|
|
||||||
|
|
|
@ -1137,9 +1137,15 @@
|
||||||
(lambda (what l)
|
(lambda (what l)
|
||||||
(let ([ht (make-hasheq)])
|
(let ([ht (make-hasheq)])
|
||||||
(for-each (lambda (id)
|
(for-each (lambda (id)
|
||||||
(when (hash-ref ht (syntax-e id) #f)
|
(define key (let ([l-id (lookup-localize id)])
|
||||||
|
(if (identifier? l-id)
|
||||||
|
(syntax-e l-id)
|
||||||
|
;; For a given localized id, `lookup-localize`
|
||||||
|
;; will return the same (eq?) value
|
||||||
|
l-id)))
|
||||||
|
(when (hash-ref ht key #f)
|
||||||
(bad (format "duplicate declared external ~a name" what) id))
|
(bad (format "duplicate declared external ~a name" what) id))
|
||||||
(hash-set! ht (syntax-e id) #t))
|
(hash-set! ht key #t))
|
||||||
l)))])
|
l)))])
|
||||||
;; method names
|
;; method names
|
||||||
(check-dup "method" (map cdr (append publics overrides augrides
|
(check-dup "method" (map cdr (append publics overrides augrides
|
||||||
|
|
Loading…
Reference in New Issue
Block a user