[project @ 2003-10-27 14:07:01 by simonpj]
authorsimonpj <unknown>
Mon, 27 Oct 2003 14:07:21 +0000 (14:07 +0000)
committersimonpj <unknown>
Mon, 27 Oct 2003 14:07:21 +0000 (14:07 +0000)
Comments only

ghc/compiler/deSugar/Desugar.lhs
ghc/compiler/typecheck/TcHsType.lhs

index 67c6261..35083bd 100644 (file)
@@ -84,13 +84,13 @@ deSugar hsc_env
         ; doIfSet (not (isEmptyBag warnings))
                  (printErrs warn_doc)
 
-           -- if warnings are considered errors, leave.
+       -- If warnings are considered errors, leave.
        ; if errorsFound dflags (warns, emptyBag)
           then return Nothing
-          else do {
+          else do
 
        -- Lint result if necessary
-          endPass dflags "Desugar" Opt_D_dump_ds ds_binds
+       { endPass dflags "Desugar" Opt_D_dump_ds ds_binds
 
        -- Dump output
        ; doIfSet (dopt Opt_D_dump_ds dflags) 
index 7e9338f..b1f9e97 100644 (file)
@@ -303,9 +303,16 @@ kcHsType (HsForAllTy exp tv_names context ty)
   = kcHsTyVars tv_names                $ \ tv_names' ->
     kcHsContext context                `thenM` \ ctxt' ->
     kcLiftedType ty            `thenM` \ ty' ->
-       -- The body of a forall must be of kind *
-       -- In principle, I suppose, we could allow unlifted types,
-       -- but it seems simpler to stick to lifted types for now.
+       -- The body of a forall must be a type, but in principle
+       -- there's no reason to prohibit *unlifted* types.
+       -- In fact, GHC can itself construct a function with an
+       -- unboxed tuple inside a for-all (via CPR analyis; see 
+       -- typecheck/should_compile/tc170)
+       --
+       -- Still, that's only for internal interfaces, which aren't
+       -- kind-checked, and it's a bit inconvenient to use kcTypeType
+       -- here (because it doesn't return the result kind), so I'm 
+       -- leaving it as lifted types for now.
     returnM (HsForAllTy exp tv_names' ctxt' ty', liftedTypeKind)
 
 ---------------------------