Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/0cda0606f53bc6141ac90b00ef814e66795e7da6

>---------------------------------------------------------------

commit 0cda0606f53bc6141ac90b00ef814e66795e7da6
Author: Simon Peyton Jones <[email protected]>
Date:   Mon Aug 1 15:23:02 2011 +0100

    Don't run a splice if there are preceding type errors
    
    Fixes Trac #5358.

>---------------------------------------------------------------

 compiler/typecheck/TcSplice.lhs |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/compiler/typecheck/TcSplice.lhs b/compiler/typecheck/TcSplice.lhs
index 3bf26a6..c9df83f 100644
--- a/compiler/typecheck/TcSplice.lhs
+++ b/compiler/typecheck/TcSplice.lhs
@@ -813,6 +813,16 @@ runMeta show_code run_and_convert expr
         ; recordThSpliceUse -- seems to be the best place to do this,
                             -- we catch all kinds of splices and annotations.
 
+       -- Check that we've had no errors of any sort so far.
+       -- For example, if we found an error in an earlier defn f, but
+       -- recovered giving it type f :: forall a.a, it'd be very dodgy
+       -- to carry ont.  Mind you, the staging restrictions mean we won't
+       -- *run* f, but it still seems wrong. And, more concretely, 
+       -- see Trac #5358 for an example that fell over when trying to
+       -- reify a function with a "?" kind in it.  (These don't occur
+       -- in type-correct programs.
+       ; failIfErrsM    
+
        -- Desugar
        ; ds_expr <- initDsTc (dsLExpr expr)
        -- Compile and link it; might fail if linking fails



_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to