OK I've got it.

Consider this:

        f :: ((Int,Int) -> String) -> (Int,Int) -> a
        f g pr = error (g pr)

        main = print (f fst (1, error "no"))

Does this print "1" or "no"?  

Well f diverges and so is hyperstrict.  So it's ok to evaluate as much of the 
argument as you like!

In Packages we have a dflags with an error thunk in it for pkgState, and it's 
the strict evaluation of that pkgState that is changing the behaviour.

Well in fact I can change it so that this won't happen, and I will do so, but 
it it's not actually wrong.

Simon

| -----Original Message-----
| From: Simon Marlow [mailto:marlo...@gmail.com]
| Sent: 18 January 2013 15:09
| To: Simon Peyton-Jones
| Cc: ghc-devs@haskell.org
| Subject: Re: Today's validate failures
| 
| On 18/01/13 14:50, Simon Peyton-Jones wrote:
| > I have no idea what the cabal ones are. They report
| > +ghc-stage2: panic! (the 'impossible' happened)
| > +  (GHC version 7.7 for x86_64-unknown-linux):
| > +   no package state yet: call GHC.setSessionDynFlags
| 
| This happens when something touches pkgState in defaultDynFlags:
| 
|          pkgState                = panic "no package state yet: call
| GHC.setSessionDynFlags",
| 
| Could it be that the new demand analyser has made something too strict?
| 
| Cheers,
|       Simon
| 
| 
| 
| > I've fixed rnfail055, T4201 (my fault sorry).
| >
| > haddock.base is ok for me.
| >
| > Simon
| >
| > | -----Original Message-----
| > | From: ghc-devs-boun...@haskell.org
| > | [mailto:ghc-devs-boun...@haskell.org]
| > | On Behalf Of Simon Marlow
| > | Sent: 18 January 2013 11:54
| > | To: ghc-devs@haskell.org
| > | Subject: Today's validate failures
| > |
| > | I have several validate failures today:
| > |
| > | Unexpected failures:
| > |     cabal                                1750 [bad stderr] (normal)
| > |     cabal                                shadow [bad stderr]
| (normal)
| > |     perf/haddock                         haddock.base [stat not good
| > | enough] (normal)
| > |     rename/should_fail                   rnfail055 [stderr mismatch]
| > | (normal)
| > |     simplCore/should_compile             T4201 [bad stdout] (normal)
| > |
| > | The cabal ones are mysterious, but I definitely didn't see them
| > | yesterday, and I'm certain they're not caused by anything I've done.
| > | The only patch in my tree is one that puts back the vector/primitive
| > | submodules that I accidentally deleted.
| > |
| > |
| > | Actual stderr output differs from expected:
| > | --- ./rename/should_fail/rnfail055.stderr 2013-01-07
| 08:47:29.856696930
| > | +0000
| > | +++ ./rename/should_fail/rnfail055.comp.stderr    2013-01-18
| > | 09:59:24.531420493 +0000
| > | @@ -52,6 +52,19 @@
| > |   RnFail055.hs-boot:17:12:
| > |       T3' is exported by the hs-boot file, but not exported by the
| > | module
| > |
| > | +RnFail055.hs-boot:19:6:
| > | +    Type constructor `T4' has conflicting definitions in the module
| > | +and
| > | its hs-boot file
| > | +    Main module: data T4 a
| > | +                     No C type associated
| > | +                     RecFlag Recursive
| > | +                     = T4 :: forall a. (forall b. a -> b) -> T4 a
| > | Stricts: _
| > | +                     FamilyInstance: none
| > | +    Boot file:   data T4 b
| > | +                     No C type associated
| > | +                     RecFlag NonRecursive
| > | +                     = T4 :: forall b. (forall a. b -> a) -> T4 b
| > | Stricts: _
| > | +                     FamilyInstance: none
| > | +
| > |   RnFail055.hs-boot:21:6:
| > |       Type constructor `T5' has conflicting definitions in the
| > | module and its hs-boot file
| > |       Main module: data T5 a
| > | *** unexpected failure for rnfail055(normal)
| > |
| > | Actual stdout output differs from expected:
| > | --- ./simplCore/should_compile/T4201.stdout       2013-01-07
| > | 08:47:29.856696930 +0000
| > | +++ ./simplCore/should_compile/T4201.run.stdout   2013-01-18
| > | 09:57:59.015418374 +0000
| > | @@ -1,3 +1,3 @@
| > | -       Unfolding: (Eta.bof
| > | -                     `cast`
| > | -                   (Sym (Eta.NTCo:Foo[0]) -> Refl Eta.T)) -}
| > | +    {- Arity: 1, HasNoCafRefs, Strictness: <S,U>m,
| > | +       Unfolding: InlineRule (0, True, True)
| > | +                  Eta.bof `cast` (Sym (Eta.NTCo:Foo[0]) -> Refl
| > | + Eta.T) -}
| > | *** unexpected failure for T4201(normal)
| > |
| > |
| > |
| > | Actual stderr output differs from expected:
| > | --- ./rename/should_fail/rnfail055.stderr 2013-01-07
| 08:47:29.856696930
| > | +0000
| > | +++ ./rename/should_fail/rnfail055.comp.stderr    2013-01-18
| > | 09:59:24.531420493 +0000
| > | @@ -52,6 +52,19 @@
| > |   RnFail055.hs-boot:17:12:
| > |       T3' is exported by the hs-boot file, but not exported by the
| > | module
| > |
| > | +RnFail055.hs-boot:19:6:
| > | +    Type constructor `T4' has conflicting definitions in the module
| > | +and
| > | its hs-boot file
| > | +    Main module: data T4 a
| > | +                     No C type associated
| > | +                     RecFlag Recursive
| > | +                     = T4 :: forall a. (forall b. a -> b) -> T4 a
| > | Stricts: _
| > | +                     FamilyInstance: none
| > | +    Boot file:   data T4 b
| > | +                     No C type associated
| > | +                     RecFlag NonRecursive
| > | +                     = T4 :: forall b. (forall a. b -> a) -> T4 b
| > | Stricts: _
| > | +                     FamilyInstance: none
| > | +
| > |   RnFail055.hs-boot:21:6:
| > |       Type constructor `T5' has conflicting definitions in the
| > | module and its hs-boot file
| > |       Main module: data T5 a
| > | *** unexpected failure for rnfail055(normal)
| > |
| > | _______________________________________________
| > | ghc-devs mailing list
| > | ghc-devs@haskell.org
| > | http://www.haskell.org/mailman/listinfo/ghc-devs
| >


_______________________________________________
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs

Reply via email to