src/method-impl.lisp (compute-method-entry-functions): Fix varargs handling.
[sod] / src / module-parse.lisp
index d9bde30..a42c31f 100644 (file)
                                 (cerror* "Error loading Lisp file ~S: ~A"
                                          path error)))))))))))
 
+;;; Setting properties.
+
+(define-pluggable-parser module set (scanner pset)
+  ;; `set' property-list `;'
+  (with-parser-context (token-scanner-context :scanner scanner)
+    (parse (and "set"
+               (lisp (let ((module-pset (module-pset *module*)))
+                       (when pset
+                         (pset-map (lambda (prop)
+                                     (add-property module-pset
+                                                   (p-name prop)
+                                                   (p-value prop)
+                                                   :type (p-type prop)
+                                                   :location (p-location prop))
+                                     (setf (p-seenp prop) t))
+                                   pset))
+                       (parse (skip-many (:min 0)
+                                (error (:ignore-unconsumed t)
+                                  (parse-property scanner module-pset)
+                                  (skip-until (:keep-end t) #\, #\;))
+                                #\,))))
+               #\;))))
+
 ;;; Lisp escape.
 
 (define-pluggable-parser module lisp (scanner pset)