Commit graph

246 commits

Author SHA1 Message Date
Marius Vollmer
3d5ebfa95c *** empty log message *** 2004-05-10 20:43:00 +00:00
Kevin Ryde
d12a658091 *** empty log message *** 2004-05-09 22:54:06 +00:00
Kevin Ryde
1dccbf7f5f *** empty log message *** 2004-05-09 00:54:57 +00:00
Kevin Ryde
fc894caf84 *** empty log message *** 2004-05-09 00:50:30 +00:00
Kevin Ryde
b551c697dd *** empty log message *** 2004-05-02 23:09:37 +00:00
Dirk Herrmann
e68ef9c82b * tests/elisp.test: Wrap tests in module (test-suite
test-<file-name without .test>), following a practice that was
	used on a couple of files already.
2004-04-29 20:44:52 +00:00
Kevin Ryde
dfa6017ebe *** empty log message *** 2004-04-27 23:35:56 +00:00
Dirk Herrmann
36245b66c2 * libguile/eval.c (s_macro_keyword): New static identifier.
(scm_m_define): Change order to first create binding and
	evaluating the expression afterwards.

	(scm_m_set_x): Memoize complete set! expression.  Only leave
	symbols if no binding exists at memoization time.  Throw error if
	assigning to a syntactic keyword.

	(lazy_memoize_variable): New function.

	(CEVAL): When execution set!, perform lazy memoization if
	unmemoized symbol is detected.

	* libguile/modules.c (module_variable): Return variables with
	unbound value.

	* libguile/tags.h: Fix comment.

	* test-suite/tests/syntax.test: Add test case to check the correct
	handling of define expressions.
2004-04-26 19:59:03 +00:00
Kevin Ryde
cff55508f9 *** empty log message *** 2004-04-24 21:18:30 +00:00
Kevin Ryde
7301de799a *** empty log message *** 2004-04-23 21:20:17 +00:00
Kevin Ryde
10cc8b0197 *** empty log message *** 2004-04-22 00:01:48 +00:00
Kevin Ryde
c9cdd3966e *** empty log message *** 2004-04-15 00:53:30 +00:00
Kevin Ryde
57f6654745 *** empty log message *** 2004-04-06 00:08:18 +00:00
Kevin Ryde
d6628681cd *** empty log message *** 2004-03-25 21:49:28 +00:00
Dirk Herrmann
62360b8975 * libguile/eval.c: Separated some definitions relevant for execution
from the memoization part of the file.

	(copy_tree): New static function

	(scm_copy_tree): Rewritten to fix two kinds or bugs: First, cyclic
	structures are detected now and will lead to an exception instead
	of forcing guile to run in an endless loop, using up all the
	system's memory.  Second, arrays in the cdr of an improper list
	are now copied.  See the new test cases in eval.test.

	* test-suite/tests/eval.test: Added tests which reflect the recent
	fixes to copy-tree.
2004-03-24 01:21:50 +00:00
Kevin Ryde
b3ffe4d491 *** empty log message *** 2004-02-28 23:22:12 +00:00
Kevin Ryde
2a61284af5 *** empty log message *** 2004-02-28 21:38:37 +00:00
Kevin Ryde
9593c679b9 *** empty log message *** 2004-02-21 22:04:42 +00:00
Marius Vollmer
8cad6491e6 *** empty log message *** 2004-02-18 19:29:40 +00:00
Kevin Ryde
ef861eadba *** empty log message *** 2004-02-18 00:30:37 +00:00
Kevin Ryde
afe199fe64 *** empty log message *** 2004-02-17 23:27:27 +00:00
Marius Vollmer
17f732e6fa *** empty log message *** 2004-02-17 21:39:21 +00:00
Marius Vollmer
8834dd6fae *** empty log message *** 2004-01-23 21:14:24 +00:00
Dirk Herrmann
a264c013fd * tests/syntax.test: Added test for unmemoizing internal defines. 2004-01-23 14:24:37 +00:00
Marius Vollmer
9a5fc8c203 *** empty log message *** 2004-01-21 00:47:50 +00:00
Marius Vollmer
25ffbdacbd *** empty log message *** 2004-01-11 00:59:04 +00:00
Kevin Ryde
7dd5eb5898 *** empty log message *** 2004-01-11 00:28:08 +00:00
Marius Vollmer
fc6bb2831d *** empty log message *** 2004-01-07 18:18:09 +00:00
Kevin Ryde
2359c543be *** empty log message *** 2004-01-06 22:21:01 +00:00
Marius Vollmer
aacff585bc *** empty log message *** 2004-01-06 18:17:30 +00:00
Marius Vollmer
dab514a843 *** empty log message *** 2004-01-03 21:56:35 +00:00
Kevin Ryde
6d611fedcc *** empty log message *** 2004-01-03 21:12:45 +00:00
Marius Vollmer
89fcf1b4aa *** empty log message *** 2003-12-26 19:09:03 +00:00
Kevin Ryde
caff34d4fa *** empty log message *** 2003-12-02 21:38:04 +00:00
Mikael Djurfeldt
f1efbdf3f1 (snarfcppopts): Added -I$(top_srcdir). 2003-12-01 18:49:38 +00:00
Rob Browning
d26af5b23e *** empty log message *** 2003-11-19 21:39:26 +00:00
Marius Vollmer
bdf26b606b *** empty log message *** 2003-11-18 20:01:57 +00:00
Marius Vollmer
9a1d7d7c8b *** empty log message *** 2003-11-17 16:57:27 +00:00
Dirk Herrmann
c86c440b17 * libguile/eval.c (s_mixed_body_forms): New static identifier.
(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.
2003-11-15 12:27:54 +00:00
Dirk Herrmann
c3d948015a * tests/syntax.test: Fixed test that checks for the correct
handling of macros in the context of internal defines.
2003-11-15 11:51:17 +00:00
Kevin Ryde
c4a56a692d *** empty log message *** 2003-11-14 21:36:18 +00:00
Dirk Herrmann
560434b369 * tests/optargs.test: Wrap tests in module (test-suite
test-<file-name without .test>).  Rewrite test to be R5RS
	conforming.

	* tests/syntax.test: Added test to check correct handling of
	internal defines.
2003-11-09 19:07:41 +00:00
Dirk Herrmann
ced8edb0f9 * libguile/eval.c (s_missing_body_expression): New static identifier.
(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.
2003-11-08 08:11:14 +00:00
Dirk Herrmann
89bff2fc10 * libguile/eval.c (s_expression): Added comment.
(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.
2003-11-01 07:26:44 +00:00
Kevin Ryde
3bf6ee15c0 *** empty log message *** 2003-10-19 00:36:26 +00:00
Dirk Herrmann
da48db629c * libguile/eval.c (scm_m_cont, scm_m_at_call_with_values,
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.
2003-10-18 18:26:43 +00:00
Dirk Herrmann
82b3e2c612 * libguile/eval.c (scm_m_set_x, scm_m_apply, scm_m_atbind): Use
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.
2003-10-18 17:24:09 +00:00
Dirk Herrmann
216286857b * libguile/eval.c: Sorted include files alphabetically.
(scm_m_begin): Added comment.

	(scm_m_or): Use ASSERT_SYNTAX to signal syntax errors.  Avoid
	unnecessary consing when creating the memoized code.

	(iqq, scm_m_quasiquote, scm_m_quote): Use ASSERT_SYNTAX to signal
	syntax errors.  Be more specific about the kind of error that was
	detected.

	(scm_m_quote, unmemocopy): As an optimization, vector constants
	are now inserted unquoted into the memoized code.  During
	unmemoization the quotes are added again to provide syntactically
	correct code.

	* test-suite/tests/syntax.test (exception:missing/extra-expr,
	exception:missing/extra-expr-misc): Renamed
	exception:missing/extra-expr to exception:missing/extra-expr-misc.

	(exception:missing/extra-expr-syntax,
	exception:missing/extra-expr): Renamed
	exception:missing/extra-expr-syntax to
	exception:missing/extra-expr.
2003-10-18 14:49:55 +00:00
Dirk Herrmann
d6754c2398 * libguile/eval.c (scm_m_let, scm_m_letstar, scm_m_letrec,
scm_m_expand_body, check_bindings): Extracted syntax checking of
	bindings to new static function check_bindings.

	(scm_m_let, memoize_named_let): Extracted handling of named let to
	new static function memoize_named_let.

	(transform_bindings, scm_m_let, scm_m_letstar, scm_m_letrec): Use
	ASSERT_SYNTAX to signal syntax errors.  Be more specific about the
	kind of error that was detected.  Avoid use of SCM_CDRLOC.  Avoid
	unnecessary consing when creating the memoized code.

	* test-suite/lib.scm (exception:bad-variable): New.

	* test-suite/tests/syntax.test (exception:bad-binding,
	exception:duplicate-binding): New.

	(exception:duplicate-bindings): Removed.

	Adapted tests for 'let', 'let*' and 'letrec' to the new way of
	error reporting.
2003-10-18 12:07:39 +00:00
Dirk Herrmann
03a3e94134 * libguile/eval.c (s_bad_formals, s_bad_formal, s_duplicate_formal):
New static identifiers.

	(s_clauses, s_formals, s_duplicate_formals): Removed.

	(scm_m_lambda): Use ASSERT_SYNTAX to signal syntax errors.  Be more
	specific about the kind of error that was detected.  Prepare for
	easier integration of changes for separated memoization.

	* test-suite/tests/syntax.test (define exception:bad-formal, define
	exception:duplicate-formal): New.

	(exception:duplicate-formals): Removed.

	(exception:bad-formals): Adapted to the new way of error
	reporting.

	Adapted tests for 'lambda' to the new way of error reporting.
2003-10-12 20:47:32 +00:00