of scm_equal_p as a C boolean, use SCM_FALSEP. Previously, all
fractions were equal to each other regardless of value. Ooops.
* numbers.c (scm_rationalize): Return an inexact result when given
inexact arguments.
(lookup_global_symbol, lookup_symbol): New static functions.
(s_test, s_bindings, s_duplicate_bindings, s_variable): Removed.
(try_macro_lookup, literal_p): Use lookup_symbol instead of
creating a temporary pair for scm_lookupcar.
(scm_unmemocar, unmemocar): Renamed scm_unmemocar to unmemocar,
created deprecated wrapper function scm_unmemocar.
(SCM_VALIDATE_NON_EMPTY_COMBINATION, scm_sym_else,
scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame,
scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace, f_apply,
undefineds, sym_three_question_marks): Moved around without
modifications.
* eval.c, eval.h (scm_macroexp, scm_unmemocar): Deprecated.
(canonicalize_define, scm_m_define): The check for a bad
expression is performed in canonicalize_define now.
(try_macro_lookup, expand_user_macros, is_system_macro_p): New
static helper functions for m_expand_body.
(m_expand_body): Use ASSERT_SYNTAX to signal syntax errors. Only
expand user defined macros. Fixed handling of the definition/
expression boundary. Fixed handling of definitions grouped with
'begin. Use canonicalize_define to expand definitions.
* test-suite/tests/syntax.test: Tests that check for the correct
handling of internal defines with begin work now.
SCM_SMOB_FREE, SCM_GLOBAL_SMOB_FREE, SCM_SMOB_PRINT,
SCM_GLOBAL_SMOB_PRINT, SCM_SMOB_EQUALP, SCM_GLOBAL_SMOB_EQUALP,
SCM_SMOB_APPLY, SCM_GLOBAL_SMOB_APPLY): New macros from Paul Jarc.
Thanks!
public use of scm_m_expand_body in eval.h. In eval.c, renamed
scm_m_expand_body to m_expand_body and made it static. Added
deprecated wrapper scm_m_expand_body.
(scm_eval_body, SCM_CEVAL, SCM_APPLY): Use m_expand_body instead
of scm_m_expand_body.
(s_body): Removed.
(scm_m_expand_body): Fixed core dump when passing a body with
defines, but without expressions (see additions to syntax.test).
Use ASSERT_SYNTAX to signal syntax errors.
* test-suite/tests/syntax.test (exception:missing-body-expr): New.
Renamed section 'define' to 'top-level define' and added a new
section 'internal define' with some tests.
handled in scm_m_body any more, but rather in scm_m_lambda.
(scm_m_body, memoize_named_let, scm_m_let, scm_m_letstar,
scm_m_letrec, scm_m_expand_body): Check for validity is done by
calling functions of scm_m_body.
(scm_m_lambda): Avoid unnecessary consing when creating the
memoized code.
(s_empty_combination, error_unbound_variable): New static
identifiers.
(SCM_VALIDATE_NON_EMPTY_COMBINATION, SCM_EVALIM2, scm_lookupcar1):
Use ASSERT_SYNTAX, syntax_error or error_unbound_variable to
signal syntax errors.
(SCM_CEVAL): Separated handling of evaluator bytecodes and other
scheme objects.
* test-suite/tests/syntax.test (exception:missing/extra-expr-misc):
Removed.
(exception:illegal-empty-combination): New.
(exception:missing/extra-expr): Unified capitalization.
Adapted test for '()' to the new way of error reporting.
Grouped together with unmemocopy, without modifications.
(build_binding_list, unmemocopy): Renamed names of list arguments
and variables to reflect the actual order of the list elements.
(scm_m_nil_cond, scm_m_atfop, scm_m_undefine): Add comments. Use
ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
when creating the memoized code.
scm_m_generalized_set_x): Use ASSERT_SYNTAX to signal syntax
errors. Avoid unnecessary consing when creating the memoized
code.
(scm_m_generalized_set_x): Let scm_m_set_x handle the R5RS
standard case. Make sure line and file information are copied to
every created expression.
* test-suite/tests/syntax.test (exception:bad-var): Removed.
Adapted tests for 'set!' to the new way of error reporting.
ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
when creating the memoized code.
(scm_m_atbind): Reversed the order, in which the init expressions
are stored and executed. The order of execution is now equal to
the order in which the initializers of the let-forms are executed.
Use check_bindings and transform_bindings.
(SCM_CEVAL): Eliminated SCM_NIMP in favor of more appropriate
!SCM_NULLP. Added some comments.
* test-suite/tests/dynamic-scope.test (exception:missing-expr):
Introduced temporarily until all memoizers use the new way of error
reporting.