Allow enumerations to have phantom arguments.
authorsimonpj@microsoft.com <unknown>
Wed, 15 Dec 2010 12:18:17 +0000 (12:18 +0000)
committersimonpj@microsoft.com <unknown>
Wed, 15 Dec 2010 12:18:17 +0000 (12:18 +0000)
The bytecode generator was being too eager.
Fixes Trac #4528, or rather, a near variant.

compiler/ghci/ByteCodeGen.lhs

index e0920fc..f34ac9c 100644 (file)
@@ -640,13 +640,13 @@ schemeT d s p app
       -- Detect and extract relevant info for the tagToEnum kludge.
       maybe_is_tagToEnum_call
          = let extract_constr_Names ty
-                | Just (tyc, []) <- splitTyConApp_maybe (repType ty),
+                 | Just (tyc, _) <- splitTyConApp_maybe (repType ty),
                   isDataTyCon tyc
                   = map (getName . dataConWorkId) (tyConDataCons tyc)
                   -- NOTE: use the worker name, not the source name of
                   -- the DataCon.  See DataCon.lhs for details.
                 | otherwise
-                  = panic "maybe_is_tagToEnum_call.extract_constr_Ids"
+                   = pprPanic "maybe_is_tagToEnum_call.extract_constr_Ids" (ppr ty)
            in
            case app of
               (AnnApp (_, AnnApp (_, AnnVar v) (_, AnnType t)) arg)