Hey,

I am trying to fix (or at least get my head around) this: https://github.com/valderman/haste-compiler/issues/27 Which is an issue of the haste haskell->javascript compiler. Doing so I encounter this problem which makes me think I am not understanding something fundamental here (and I believe this not to be haste specific)...

OK, the problem is that this code:

genAlt :: Bool -> JSVar -> JSVar -> StgAlt -> JSGen Config JSAlt
genAlt tailpos scrut res (con, args, used, body) =  do
  construct <- case con of
    DEFAULT                                  -> return Def
    LitAlt l                                 -> Cond <$> genLit l
    DataAlt c | Right tag <- genDataConTag c -> return $ Cond tag
    _ -> error "Bad data constructor tag generated!"

Looking at StgAlt, I conclude that con must be of type AltCon, which is defined like this (from CoreSyn.lhs of the ghc source):

data AltCon
  = DataAlt DataCon
  | LitAlt  Literal
  | DEFAULT
    deriving (Eq, Ord, Data, Typeable)

What I do not understand: The case switch covers all possibilities of AltCon. So how can this happen?

Using trace, the con seemed to have the type "GHC.Integer.Type.S#" in the case of the erro.

Thanks!
Nathan

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to