[make grin tags conversion handle unboxed fields properly
John Meacham <john@repetae.net>**20060721092220] hunk ./Grin/FromE.hs 199
-    initTyEnv = mappend primTyEnv $ TyEnv $ Map.fromList $ [ (a,(b,c)) | (_,(a,b,c)) <-  Map.toList scMap] ++ [con x| x <- Map.elems $ constructorMap dataTable, conType x /= eHash]
-    con c | (EPi (TVr { tvrType = a }) b,_) <- fromLam $ conExpr c = (tagArrow,([TyPtr TyNode, TyPtr TyNode],TyNode))
-    con c = (n,(as,TyNode)) where
+    initTyEnv = mappend primTyEnv $ TyEnv $ Map.fromList $ [ (a,(b,c)) | (_,(a,b,c)) <-  Map.toList scMap] ++ concat [con x| x <- Map.elems $ constructorMap dataTable, conType x /= eHash]
+    con c | (EPi (TVr { tvrType = a }) b,_) <- fromLam $ conExpr c = return (tagArrow,([TyPtr TyNode, TyPtr TyNode],TyNode))
+    con c | keepIt = return (n,(as,TyNode)) where
hunk ./Grin/FromE.hs 204
-        as = [ toType (TyPtr TyNode) (getType s) |  s <- conSlots c, shouldKeep s]
+        as = [ toType (TyPtr TyNode) s |  s <- conSlots c, shouldKeep s]
+        keepIt = isNothing (conVirtual c) || TypeConstructor == nameType (conName c)
+    con _ = fail "not needed"