[Imported from TLA query@lshift.net--2004/macromod--dev--0--patch-24 Tony Garnock-Jones **20050131090209] [Add test for internal definitions, and fix bug in letrec Tony Garnock-Jones **20050131221353] [Name tests, and allow test selection on command line. Tony Garnock-Jones **20050131223003] [Note about ellipsis-escaping. Tony Garnock-Jones **20050131232314] [Notes on expanding literal syntax Tony Garnock-Jones **20050202091716] [New syntax-case guard test case; a related fix to the test matcher Tony Garnock-Jones **20050202105614] [Fix omitted guard clause test. Tony Garnock-Jones **20050202130724] [Fix bug with lambdas (cases lambda-1, nested-lambda-1, syntax-case-2) Tony Garnock-Jones **20050202133906] [Lame attempt to make mzscheme print parsed-exps well Tony Garnock-Jones **20050203234743] [Implement expand-literal-syntax. Tony Garnock-Jones **20050203235011 The existing placeholder implementation was gutted and replaced with a simple code-generator-generator. Note I'm still a bit worried about the fact I'm not emitting syntax-objects: if a variable reference is made to something that is not a pattern-variable, both mzscheme and psyntax insert a wrapped syntax object there, rather than a variable reference to the resolved identifier. This may need to be revisited once the module system is developed. ] [Duplicate existing test-case, using syntax-case now; fix resulting bug Tony Garnock-Jones **20050203235648] [Correct documentation-comment. Tony Garnock-Jones **20050204000257] [Duplicate another non-syntax-case test case, using syntax-case this time Tony Garnock-Jones **20050204000402] [More thorough guard testing; fix resulting bugs Tony Garnock-Jones **20050204001428] [Implement R5RS Pitfall 8.3 test case Tony Garnock-Jones **20050204002821 This test case is taken from SISC's r5rs_pitfall.scm, section 8.3. The fact that we pass this test means that this expander is R5RS compatible. It turns out that that's not really how things should be done! (There's an extensive comment in the r5rs_pitfall.scm file describing the issue.) If we wanted to change our behaviour, the place to start would probably be in or near (expand-body) - a little logic to allow the folding of let-syntax and letrec-syntax blocks into their surrounding context. The (expand-internal) function might also have to change to accommodate the changes in (expand-body). ] [Implement and use syntax-rules, to be closer to the pitfall definition Tony Garnock-Jones **20050204115929] [Notes on error checking requirements, from Al* Petrofsky Tony Garnock-Jones **20050204145123] [Some of Oleg's macro stress tests and examples Tony Garnock-Jones **20050204150004] [Add Oleg's symbol?? test case - fix resulting exposed bug. Tony Garnock-Jones **20050205124745] [More specific test coverage of bug exposed in previous patch. Tony Garnock-Jones **20050205125007] [Fix shadowing bug, exposed by use of letrec-syntax in the test cases Tony Garnock-Jones **20050205141524] [Support patterns like (x ... y ...), so we can run Oleg's syntax-rules stress test. Tony Garnock-Jones **20050205141606] [Remove now-completed items from the TODO list! Tony Garnock-Jones **20050205142204] [An example due to Petrofsky uncovered a bug in expand-literal-syntax. (Not yet fixed.) Tony Garnock-Jones **20050206152250] [More tests to pin down the problem. Tony Garnock-Jones **20050206172728] [Remove unused function identifier-fields. Tony Garnock-Jones **20050206175902] [Rearrange expose/resolve to reduce leaking of substs/marks Tony Garnock-Jones **20050206202523 Prior to this patch, the substs+marks of a piece of syntax were being passed to the continuations of expose in many cases where they were not being used. The main use for the substs+marks was resolve, which is useful only on identifiers, and so can be called with the argument to expose without penalty. Now expose pushes its wrap one level deeper, in the case of pairs, and returns the wrapped-expression in all other cases. Resolve now takes a wrapped piece of syntax. ] [Rename variable for clarity. Tony Garnock-Jones **20050206204120] [Results of running the stress-test, for timing comparisons Tony Garnock-Jones **20050206204407] [Use a structure to hold substitutions. Tony Garnock-Jones **20050206210617] [Another demo of the current bug. Tony Garnock-Jones **20050209230835] [Al* Petrofsky's Advanced Syntax-Rules Primer for the Mildly Insane. Tony Garnock-Jones **20050210094236] [Another simple test case. Tony Garnock-Jones **20050210094534] [Fix mark-related substitution bug. Tony Garnock-Jones **20050210094906 I had implemented directly from the original syntax-case paper, and a subtlety had been lost on me: when marking a syntax-object, the marks need to propagate into the substitution records contained therein *as well* as to any nested syntax objects in the wrapped expression. Once I fixed this (alongside the more obvious fix to the earlier oversimplification in expand-literal-syntax), all the tests passed. The system is about three times slower though - perhaps time for some low-hanging-fruit optimisations. ] [Latest performance measurement. Ouch! Tony Garnock-Jones **20050210100237] [TAG Basic 20050211 Tony Garnock-Jones **20050211092311] [Move reference papers out of the way Tony Garnock-Jones **20050211093050] [Start of an implementation description paper Tony Garnock-Jones **20050211094045] [Lazily push marks through substitutions Tony Garnock-Jones **20050211110114 A couple of changes combined: - use cons instead of append to combine substitution lists, and adjust (resolve) to match - represent marks as wrapping substitution lists, instead of consing fresh substitution objects eagerly, and adjust (resolve) to match Together, these give a speedup of ~1.6 to the syntax-rule-stress-test. ] [Slightly faster - removed one variable (!) Tony Garnock-Jones **20050211112143] [Latest torc timing result. Tony Garnock-Jones **20050211112305] [Allow expected syntax-errors, for error-reporting test cases Tony Garnock-Jones **20050211165405] [Remove obsolete comment Tony Garnock-Jones **20050211181730] [Error-checking test cases + the odd fix Tony Garnock-Jones **20050211184142] [Detect out-of-order internal definition; more error tests Tony Garnock-Jones **20050211221458] [Implement rest of Alexpander compile-syntax-rules error checks. Tony Garnock-Jones **20050211224134] [Check vector patterns+templates, and fix bug thus exposed Tony Garnock-Jones **20050211224929] [Support ellipsis-escaping with (... ...) Tony Garnock-Jones **20050211230719 Strangely, the test case I cooked up passed as I expected, but failed under mzscheme with an "identifier used out of context" error! I still need to investigate why this is the case. I've left that test case deliberately failing until I've solved the problem. ] [More notes for the paper draft. Tony Garnock-Jones **20050211231621] [More on the paper Tony Garnock-Jones **20050212104328] [Administrivia - TODO-list, doc on a potential mzscheme bug Tony Garnock-Jones **20050212105606] [Implement identifier-macros, both in ref and set contexts Tony Garnock-Jones **20050212113113] [TAG Basic 20050212 Tony Garnock-Jones **20050212113541] [Moved NOTES to doc directory. Tony Garnock-Jones **20050212122609] [Start of a README Tony Garnock-Jones **20050212122629] [Start of SISC support. Tony Garnock-Jones **20050212122642] [More notes. Tony Garnock-Jones **20050212124412] [Start work on macromod system. Tony Garnock-Jones **20050212194035] [More tweaks to the new module code. Tony Garnock-Jones **20050212213933] [Note about circular data (how it isn't supported) Tony Garnock-Jones **20050214100003] [Avoid fluid-let, thus porting to sisc. Tony Garnock-Jones **20050221192412 SISC lacks a fluid-let macro (and fair enough, too), so rewriting the test code to avoid fluid-let makes it work on SISC, so long as you use the latest HEAD version of SISC to avoid a defmacro source-annotation-stripping bug. ]