fix source information for functions from EVAL
commit04a651e749befd65ffd8bf49f689b6e7d55607e2
authorNikodemus Siivola <nikodemus@random-state.net>
Thu, 17 May 2012 12:22:22 +0000 (17 15:22 +0300)
committerNikodemus Siivola <nikodemus@random-state.net>
Mon, 21 May 2012 05:41:25 +0000 (21 08:41 +0300)
tree80e4928fefbf57fba5307cc54718b0cf5be117c9
parenta6a12ed609d5467ec43b411283e5b3568fee81df
fix source information for functions from EVAL

 * Removed the breathtaking (NAMED-LAMBDA (EVAL (DEFUN FOO)) ...) hack, which
   caused inconsistent source locations, and broke the built-in debugger
   source command for evaluated functions.

   Replace it with *SOURCE-FORM-CONTEXT-ALIST*, which allows the simple
   evaluator to communicate the original context to the compiler without
   messing with the function source.

   This also means we no longer have to wrap named-lambdas and lambdas in
   another lambda, but can instead compile them directly -- which in turn
   allows FUNCTION-LAMBDA-EXPRESSION to work correctly for definitions from
   EVAL and LOAD.

 * Additionally, use a handler to muffle any compiler notes from EVAL instead
   of using a declaration: those can leak to the user via F-L-E.

 * Change ACTUALLY-COMPILE to return a function signaling an error instead of
   returning NIL when compilation fails fatally. Doing this in
   ACTUALLY-COMPILE allows us to rely on COMPILE-IN-LEXENV always returning a
   function, and gives easy access to a better error message.

 * Properly associate COMPILER-ERRORS with their SIGNAL-ERROR restart.

 * Adjust debug.impure.lisp to be less dependent on the details of
   %SIMPLE-EVAL.

 * Test cases. Pay special attention to TEST-DEBUGGER in debug.impure.lisp.

 * New docstring for COMPILE. Added a sneaky teaser about COMPILE being able
   to recompile things, which is new starting to look feasible.
NEWS
src/code/eval.lisp
src/compiler/compiler-error.lisp
src/compiler/debug-dump.lisp
src/compiler/ir1report.lisp
src/compiler/target-main.lisp
tests/debug.impure.lisp
tests/eval.impure.lisp