Hi, The "case is hygienic" test case in `syntax.test' looks suspicious to me. Why would the fact that `else' is bound influence the syntax of `case'?
For `cond', whether `else' and `=>' are bound does have an impact, though. Perhaps those bits were copied from `cond'? The relevant changes date back to 2003-10-11. Thanks, Ludovic.
--- orig/libguile/eval.c +++ mod/libguile/eval.c @@ -962,9 +962,6 @@ SCM clauses; SCM all_labels = SCM_EOL; - /* Check, whether 'else is a literal, i. e. not bound to a value. */ - const int else_literal_p = literal_p (scm_sym_else, env); - const SCM cdr_expr = SCM_CDR (expr); ASSERT_SYNTAX (scm_ilength (cdr_expr) >= 0, s_bad_expression, expr); ASSERT_SYNTAX (scm_ilength (cdr_expr) >= 2, s_missing_clauses, expr); @@ -994,7 +991,7 @@ } else { - ASSERT_SYNTAX_2 (scm_is_eq (labels, scm_sym_else) && else_literal_p, + ASSERT_SYNTAX_2 (scm_is_eq (labels, scm_sym_else), s_bad_case_labels, labels, expr); ASSERT_SYNTAX_2 (scm_is_null (SCM_CDR (clauses)), s_misplaced_else_clause, clause, expr); --- orig/test-suite/tests/syntax.test +++ mod/test-suite/tests/syntax.test @@ -636,13 +636,6 @@ (pass-if "clause with empty labels list" (case 1 (() #f) (else #t))) - (with-test-prefix "case is hygienic" - - (pass-if-exception "bound 'else is handled correctly" - exception:bad-case-labels - (eval '(let ((else #f)) (case 1 (else #f))) - (interaction-environment)))) - (with-test-prefix "unmemoization" (pass-if "normal clauses"
_______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://lists.gnu.org/mailman/listinfo/guile-devel