identifiers.
(scm_m_define): Use ASSERT_SYNTAX to signal syntax errors. Prefer
R5RS terminology for the naming of variables. Be more specific
about the kind of error that was detected. Make sure file name,
line number etc. are added to all freshly created expressions.
Avoid unnecessary consing when creating the memoized code.
* test-suite/tests/syntax.test (exception:missing-expr,
exception:extra-expr): New.
Adapted tests for 'begin' to the new way of error
reporting.
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.
* libguile/print.c (scm_isymnames): Add names for the new memoizer
codes.
* libguile/eval.c (s_missing_clauses, s_bad_case_clause,
s_extra_case_clause, s_bad_case_labels, s_duplicate_case_label,
literal_p): New static identifiers.
(scm_m_case): Use ASSERT_SYNTAX to signal syntax errors. Be more
specific about the kind of error that was detected. Check for
duplicate case labels. Handle bound 'else. Avoid unnecessary
consing when creating the memoized code.
(scm_m_case, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
the syntactic keyword 'else.
* test-suite/tests/syntax.test (exception:bad-expression,
exception:missing-clauses, exception:bad-case-clause,
exception:extra-case-clause, exception:bad-case-labels): New.
Added some tests and adapted tests for 'case' to the new way of
error reporting.
ASSERT_SYNTAX, ASSERT_SYNTAX_2): New static identifiers.
(scm_m_and): Use ASSERT_SYNTAX to signal syntax errors. Avoid
unnecessary consing when creating the memoized code.
* test-suite/lib.scm (run-test-exception): Handle syntax errors.
* tests/dynamic-scope.test, tests/eval.test,
tests/r5rs_pitfall.test, tests/srfi-17.test, tests/syncase.test:
Wrap tests in module (test-suite test-<file-name without .test>),
following a practice that was used on a couple of files already.
* tests/dynamic-scope.test (exception:duplicate-binding,
exception:bad-binding): New.
* tests/dynamic-scope.test, tests/srfi-17.test, tests/syntax.test:
Execute syntactically wrong tests using eval. With the upcoming
new memoizer this is necessary in order to postpone the syntax
check to the actual evaluation of the syntactically wrong form.
* tests/syntax.test: Added some test cases and modified one test
case.
psyntax.ss (used to be needed during syntax-case development, but
now only caused problems with the top-of-the-file eval export.
Enabling the code as the comments instructed caused the other
error when trying to recompile psyntax.pp.