Subject: R6RS guard's else chokes on multiple expressions
From: [email-masked] (Taylan Ulrich Bayırlı/Kammer)
To: [email-masked]
Date: Sat, 29 Aug 2015 23:52:04 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

It seems that whatever macro tries to match the guard expression's
else-clause, fails to do so when the clause contains more than one
expression, and so adds a default "else re-raise" clause after the
existing else clause.

I couldn't figure out where this happens.  I grepped the whole
source tree for 're-raise' and only found it twice in a comment.

Transcript showcasing bug:

taylan@T420:~$ guile
GNU Guile 2.0.11
Copyright (C) 1995-2014 Free Software Foundation, Inc.

Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
This program is free software, and you are welcome to redistribute it
under certain conditions; type `,show c' for details.

Enter `,help' for help.
scheme@(guile-user)> ,use (rnrs exceptions)
scheme@(guile-user)> (guard (exc (else #f #f)) #f)
While compiling expression:
ERROR: Syntax error:
unknown file:3:12: cond: else must be the last clause in subform (else #f #f) of (cond (else #f #f) (else (re-raise)))
scheme@(guile-user)>

Taylan