Refactor part of class type system
original commit: afb141711406ed4f65de6f558afdd76f17524013
This commit is contained in:
parent
a7b4474b11
commit
6eb16b9f2f
|
@ -178,10 +178,9 @@
|
|||
#:with ids #'ren.ids))
|
||||
|
||||
(define-syntax-class class-clause
|
||||
(pattern (~and ((~and clause-name (~or (~literal init)
|
||||
(~literal init-field)))
|
||||
names:init-decl ...)
|
||||
form)
|
||||
(pattern ((~and clause-name (~or (~literal init)
|
||||
(~literal init-field)))
|
||||
names:init-decl ...)
|
||||
;; in the future, use a data structure and
|
||||
;; make this an attribute instead to represent
|
||||
;; internal and external names
|
||||
|
@ -191,36 +190,34 @@
|
|||
(stx->list #'(names.ids ...))
|
||||
(attribute names.type)
|
||||
(attribute names.optional?)))
|
||||
(pattern (~and ((~literal field) names:field-decl ...) form)
|
||||
(pattern ((~literal field) names:field-decl ...)
|
||||
#:attr data (clause #'(field names.form ...)
|
||||
#'field
|
||||
(stx->list #'(names.ids ...))
|
||||
(attribute names.type)))
|
||||
(pattern (~and ((~and clause-name (~or (~literal inherit-field)
|
||||
(~literal public)
|
||||
(~literal pubment)
|
||||
(~literal public-final)
|
||||
(~literal override)
|
||||
(~literal overment)
|
||||
(~literal override-final)
|
||||
(~literal augment)
|
||||
(~literal augride)
|
||||
(~literal augment-final)
|
||||
(~literal inherit)
|
||||
(~literal inherit/super)
|
||||
(~literal inherit/inner)
|
||||
(~literal rename-super)))
|
||||
names:method-decl ...)
|
||||
form)
|
||||
(pattern ((~and clause-name (~or (~literal inherit-field)
|
||||
(~literal public)
|
||||
(~literal pubment)
|
||||
(~literal public-final)
|
||||
(~literal override)
|
||||
(~literal overment)
|
||||
(~literal override-final)
|
||||
(~literal augment)
|
||||
(~literal augride)
|
||||
(~literal augment-final)
|
||||
(~literal inherit)
|
||||
(~literal inherit/super)
|
||||
(~literal inherit/inner)
|
||||
(~literal rename-super)))
|
||||
names:method-decl ...)
|
||||
#:attr data
|
||||
(clause #'(clause-name names.form ...)
|
||||
#'clause-name
|
||||
(stx->list #'(names.ids ...))
|
||||
(attribute names.type)))
|
||||
(pattern (~and ((~and clause-name (~or (~literal private)
|
||||
(~literal abstract)))
|
||||
names:private-decl ...)
|
||||
form)
|
||||
(pattern ((~and clause-name (~or (~literal private)
|
||||
(~literal abstract)))
|
||||
names:private-decl ...)
|
||||
#:attr data
|
||||
(clause #'(clause-name names.form ...)
|
||||
#'clause-name
|
||||
|
@ -464,8 +461,8 @@
|
|||
(flatten
|
||||
(for/list ([clause clauses]
|
||||
#:when (init-clause? clause))
|
||||
(for/list ([id-pair (stx->list (clause-ids clause))]
|
||||
[optional? (init-clause-optional? clause)]
|
||||
(for/list ([id-pair (in-list (stx->list (clause-ids clause)))]
|
||||
[optional? (in-list (init-clause-optional? clause))]
|
||||
#:when optional?)
|
||||
(stx-car id-pair)))))
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user