Change #:extends to #:implements
original commit: 884c898bfa04c2334317c5a4ee96e7354804865d
This commit is contained in:
parent
1be1fb5e18
commit
3bd5ae4ac6
|
@ -568,7 +568,7 @@
|
|||
field-names field-types
|
||||
method-names method-types)
|
||||
#:literals (init init-field field)
|
||||
(pattern (~seq (~or (~seq #:extends extends-type:expr)
|
||||
(pattern (~seq (~or (~seq #:implements extends-type:expr)
|
||||
(~optional (~seq #:self self:id))
|
||||
(init init-clause:init-type ...)
|
||||
(init-field init-field-clause:init-type ...)
|
||||
|
@ -614,7 +614,7 @@
|
|||
(pattern (label:id type:expr)))
|
||||
|
||||
;; process-class-clauses : Syntax FieldDict MethodDict -> FieldDict MethodDict
|
||||
;; Merges #:extends class type and the current class clauses appropriately
|
||||
;; Merges #:implements class type and the current class clauses appropriately
|
||||
(define (merge-with-parent-type stx fields methods)
|
||||
;; (Listof Symbol) Dict Dict String -> (Values Dict Dict)
|
||||
;; check for duplicates in a class clause
|
||||
|
@ -641,7 +641,7 @@
|
|||
(values fields methods)]
|
||||
[(? Mu?)
|
||||
(match-parent-type (unfold parent-type))]
|
||||
[_ (tc-error "expected a class type for #:extends clause")]))
|
||||
[_ (tc-error "expected a class type for #:implements clause")]))
|
||||
(define-values (super-fields super-methods)
|
||||
(match-parent-type parent-type))
|
||||
|
||||
|
@ -656,12 +656,12 @@
|
|||
(check-duplicate-clause
|
||||
field-names super-field-names
|
||||
fields super-fields
|
||||
"field or init-field name ~a conflicts with #:extends clause"))
|
||||
"field or init-field name ~a conflicts with #:implements clause"))
|
||||
(define-values (checked-methods checked-super-methods)
|
||||
(check-duplicate-clause
|
||||
method-names super-method-names
|
||||
methods super-methods
|
||||
"method name ~a conflicts with #:extends clause"))
|
||||
"method name ~a conflicts with #:implements clause"))
|
||||
|
||||
;; then append the super types if there were no errors
|
||||
(define merged-fields (append checked-super-fields checked-fields))
|
||||
|
|
|
@ -227,25 +227,25 @@
|
|||
(-mu This%
|
||||
(make-Class
|
||||
#f null null `((m ,(t:-> (make-Instance This%) N)))))]
|
||||
;; test #:extends
|
||||
[(Class #:extends (Class [m (Number -> Number)]) (field [x Number]))
|
||||
;; test #:implements
|
||||
[(Class #:implements (Class [m (Number -> Number)]) (field [x Number]))
|
||||
(make-Class #f null `((x ,-Number)) `((m ,(t:-> N N))))]
|
||||
[(Class #:extends (Class [m (Number -> Number)])
|
||||
#:extends (Class [n (Number -> Number)])
|
||||
[(Class #:implements (Class [m (Number -> Number)])
|
||||
#:implements (Class [n (Number -> Number)])
|
||||
(field [x Number]))
|
||||
(make-Class #f null `((x ,-Number)) `((n ,(t:-> N N)) (m ,(t:-> N N))))]
|
||||
[(Class #:extends (Class [m (Number -> Number)])
|
||||
#:extends (Class [m (Number -> Number)])
|
||||
[(Class #:implements (Class [m (Number -> Number)])
|
||||
#:implements (Class [m (Number -> Number)])
|
||||
(field [x Number]))
|
||||
(make-Class #f null `((x ,-Number)) `((m ,(t:-> N N))))]
|
||||
[(Class #:extends (Class (init [x Integer]) [m (Number -> Number)])
|
||||
[(Class #:implements (Class (init [x Integer]) [m (Number -> Number)])
|
||||
(field [x Number]))
|
||||
(make-Class #f null `((x ,-Number)) `((m ,(t:-> N N))))]
|
||||
[FAIL (Class #:extends Number)]
|
||||
[FAIL (Class #:extends Number [m (Number -> Number)])]
|
||||
[FAIL (Class #:extends (Class [m (Number -> Number)]) [m String])]
|
||||
[FAIL (Class #:extends (Class [m (Number -> Number)])
|
||||
#:extends (Class [m (String -> String)])
|
||||
[FAIL (Class #:implements Number)]
|
||||
[FAIL (Class #:implements Number [m (Number -> Number)])]
|
||||
[FAIL (Class #:implements (Class [m (Number -> Number)]) [m String])]
|
||||
[FAIL (Class #:implements (Class [m (Number -> Number)])
|
||||
#:implements (Class [m (String -> String)])
|
||||
(field [x Number]))]
|
||||
;; Test Object types
|
||||
[(Object) (make-Instance (make-Class #f null null null))]
|
||||
|
|
Loading…
Reference in New Issue
Block a user