Change #:extends to #:implements

original commit: 884c898bfa04c2334317c5a4ee96e7354804865d
This commit is contained in:
Asumu Takikawa 2014-01-16 15:35:20 -05:00
parent 1be1fb5e18
commit 3bd5ae4ac6
2 changed files with 17 additions and 17 deletions

View File

@ -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))

View File

@ -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))]