+2004-05-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
+
+ * eval.c (s_macro_keyword, scm_m_set_x): Remove checking for
+ misplaced syntactic keywords. This will not work unless guile's
+ defmacro feature is deprecated.
+
+ (scm_m_case): Fixed a bug that caused the list of labels to grow
+ with every case form.
+
2004-05-19 Kevin Ryde <user42@zip.com.au>
* numbers.c (scm_round_number): For inum and big, just return x. For
* is signalled. */
static const char s_bad_define[] = "Bad define placement";
-/* If a macro keyword is detected in a place where macro keywords are not
- * allowed, a 'Misplaced syntactic keyword' error is signalled. */
-static const char s_macro_keyword[] = "Misplaced syntactic keyword";
-
/* Case or cond expressions must have at least one clause. If a case or cond
* expression without any clauses is detected, a 'Missing clauses' error is
* signalled. */
{
ASSERT_SYNTAX_2 (scm_ilength (labels) >= 0,
s_bad_case_labels, labels, expr);
- all_labels = scm_append_x (scm_list_2 (labels, all_labels));
+ all_labels = scm_append (scm_list_2 (labels, all_labels));
}
else if (SCM_NULLP (labels))
{
/* Memoize the variable form. */
ASSERT_SYNTAX_2 (SCM_SYMBOLP (variable), s_bad_variable, variable, expr);
new_variable = lookup_symbol (variable, env);
- ASSERT_SYNTAX (!SCM_MACROP (new_variable), s_macro_keyword, variable);
/* Leave the memoization of unbound symbols to lazy memoization: */
if (SCM_UNBNDP (new_variable))
new_variable = variable;