From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17992 invoked by alias); 18 Jan 2007 15:27:36 -0000 Received: (qmail 17782 invoked by uid 22791); 18 Jan 2007 15:27:34 -0000 X-Spam-Check-By: sourceware.org Received: from Unknown (HELO elsdt-razorfish.arc.com) (194.202.198.226) by sourceware.org (qpsmtpd/0.31) with ESMTP; Thu, 18 Jan 2007 15:27:28 +0000 Received: from elsdt-razorfish.arc.com (localhost.localdomain [127.0.0.1]) by elsdt-razorfish.arc.com (8.12.11.20060308/8.12.11) with ESMTP id l0IFROUD005058 for ; Thu, 18 Jan 2007 15:27:24 GMT Received: (from joernr@localhost) by elsdt-razorfish.arc.com (8.12.11.20060308/8.12.11/Submit) id l0IFROTf005056 for cgen@sources.redhat.com; Thu, 18 Jan 2007 15:27:24 GMT Date: Thu, 18 Jan 2007 15:27:00 -0000 From: Joern Rennecke To: cgen@sources.redhat.com Subject: bug when eliding arguments with default values? Message-ID: <20070118152724.GC1641@elsdt-razorfish.arc.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.1i Mailing-List: contact cgen-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cgen-owner@sourceware.org X-SW-Source: 2007-q1/txt/msg00009.txt.bz2 I have some problem where I thougt an optional argument would be useful for a macro that usually doesn't take an argument. The actual code is a bit complex, so here is a stripped down example: guile> (define-pmacro '(foo (arg1 . 1)) '(bar arg1)) guile> (pmacro-expand '(foo)) Backtrace: In ./pmacros.scm: 99: 0 [error "standard input:13:wrong number of arguments to pmacro (foo arg1):"$ 165: 1 [-pmacro-error "wrong number of arguments to pmacro (foo arg1)" ()] 164: 2* (if (not #) (-pmacro-error # args)) 163: 3 (let ((processed-args #)) (if (not #) (-pmacro-error # args)) ...) 161: 4 (let ((arg-spec #) (default-values #)) (let (#) (if # #) ...)) 222: 5 [-pmacro-invoke #( foo (arg1) ...) ()] 221: 6 (if (procedure? #) (-pmacro-invoke macro #) (cons # #)) 220: 7 (if macro (if (procedure? #) (-pmacro-invoke macro #) ...) ...) 219: 8 (let ((macro #)) (if macro (if # # #) scanned-exp)) 218: 9 (let ((scanned-exp #)) (let (#) (if macro # scanned-exp))) 212: 10 (case (car exp) ((.pmacro) (if # #) (-pmacro-pmacro # #)) (else (let # #))) 229: 11 [scan-list (foo)] 228: 12* (cond ((symbol? exp) (scan-symbol exp)) ((and # #) (scan-list exp)) ...) 228: 13 (let ((result #)) (if (symbol? result) (scan-symbol result) result)) 244: 14* [scan (foo)] 244: 15 (let ((result #)) (if -pmacro-trace? (begin # # #)) result) In unknown file: ?: 16 (letrec (# # # # ...) (if -pmacro-trace? #) (let # # result)) In ./pmacros.scm: 363: 17 [-pmacro-expand (foo) ()] In standard input: 13: 18* [pmacro-expand (foo)] ./pmacros.scm:99:3: In procedure error in expression (error (string-append # ":" ...) expr): ./pmacros.scm:99:3: standard input:13:wrong number of arguments to pmacro (foo arg1): () ABORT: (misc-error)