(parse (seq ((make (or (seq ("init") #'make-sod-class-initfrag)
(seq ("teardown") #'make-sod-class-tearfrag)))
(frag (parse-delimited-fragment scanner #\{ #\})))
- (funcall make class frag pset scanner)))))
+ (funcall make class frag pset :location scanner)))))
(define-pluggable-parser class-item initargs (scanner class pset)
;; initarg-item ::= `initarg' declspec+ list[init-declarator]
(make-sod-user-initarg class
(cdr declarator)
(car declarator)
- pset init scanner))
+ pset
+ :default init
+ :location scanner))
#\,))
(nil (must #\;)))))))
(unless (pset-get pset "nick")
(add-property pset "nick" var :type :id))
var)))
- (class (make-sod-class synthetic-name superclasses pset scanner))
+ (class (make-sod-class synthetic-name superclasses pset
+ :location scanner))
(nick (sod-class-nickname class)))
(labels ((must-id ()
;; Don't allow a method-body here if the message takes a
;; varargs list, because we don't have a name for the
;; `va_list' parameter.
- (let ((message (make-sod-message class name type
- sub-pset scanner)))
+ (let ((message (make-sod-message class name type sub-pset
+ :location scanner)))
(if (varargs-message-p message)
(parse #\;)
(parse (or #\; (parse-method-item sub-pset
scanner #\{ #\}))))
(restart-case
(make-sod-method class sub-nick name type
- body sub-pset scanner)
+ body sub-pset
+ :location scanner)
(continue () :report "Continue")))))
(parse-initializer ()
(flet ((make-it (name type init)
(restart-case
(progn
- (make-sod-slot class name type
- sub-pset scanner)
+ (make-sod-slot class name type sub-pset
+ :location scanner)
(when init
- (make-sod-instance-initializer class
- nick name
- init
- sub-pset
- scanner)))
+ (make-sod-instance-initializer
+ class nick name init sub-pset
+ :location scanner)))
(continue () :report "Continue"))))
(parse (and (error ()
(seq ((init (? (parse-initializer))))
(restart-case
(funcall constructor class
name-a name-b init
- sub-pset scanner)
+ sub-pset
+ :location scanner)
(continue () :report "Continue")))
(skip-until () #\, #\;))
#\,)