From c07860afc55d0d49b9e920dca790b902b8d5cb15 Mon Sep 17 00:00:00 2001 Message-Id: From: Mark Wooding Date: Sun, 30 Aug 2015 10:58:38 +0100 Subject: [PATCH] src/: Argument lists don't only contain `argument' objects. Organization: Straylight/Edgeware From: Mark Wooding They can also contain `:ellipsis' markers. --- src/c-types-impl.lisp | 1 + src/class-make-impl.lisp | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/c-types-impl.lisp b/src/c-types-impl.lisp index be2c055..b4f02e1 100644 --- a/src/c-types-impl.lisp +++ b/src/c-types-impl.lisp @@ -431,6 +431,7 @@ (defun make-function-type (subtype arguments) (make-instance 'c-function-type :subtype subtype :arguments (if (and arguments (null (cdr arguments)) + (not (eq (car arguments) :ellipsis)) (eq (argument-type (car arguments)) c-type-void)) nil diff --git a/src/class-make-impl.lisp b/src/class-make-impl.lisp index 28c1958..32b2e61 100644 --- a/src/class-make-impl.lisp +++ b/src/class-make-impl.lisp @@ -214,7 +214,8 @@ (defmethod shared-initialize :after (with-slots (body type) method (unless (or (not body) (every (lambda (arg) - (or (argument-name arg) + (or (eq arg :ellipsis) + (argument-name arg) (eq (argument-type arg) (c-type void)))) (c-function-arguments type))) (error "Abstract declarators not permitted in method definitions"))) -- [mdw]