* libguile/eval.c (s_extra_expression, s_misplaced_else_clause,
s_bad_cond_clause, s_missing_recipient): New static identifiers.
(s_extra_case_clause): Removed.
(scm_m_case, scm_m_cond): If a clause appears after an else
clause, report a misplaced else clause.
(scm_m_cond): Use ASSERT_SYNTAX to signal syntax errors. Be more
specific about the kind of error that was detected. Handle bound
'else and '=>. Avoid unnecessary consing when creating the
memoized code.
(scm_m_cond, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
the syntactic keyword 'else and SCM_IM_ARROW to memoize the
syntactic keyword '=>.
* test-suite/tests/syntax.test (exception:misplaced-else-clause,
exception:bad-cond-clause): New.
(exception:bad/missing-clauses, exception:extra-case-clause):
Removed.
Adapted tests for 'case' and 'cond' to the new way of error
reporting.
The tests that check if cond is hygienic pass now.