Require a bang pattern when unlifted types are where/let bound; #3182
[ghc-hetmet.git] / compiler / main / ParsePkgConf.y
index 1f6434b..1e24ab4 100644 (file)
@@ -1,5 +1,5 @@
 {
-{-# OPTIONS -w #-}
+{-# OPTIONS -fno-warn-unused-binds -fno-warn-unused-matches -fno-warn-missing-signatures -fno-warn-incomplete-patterns -Wwarn #-}
 -- The above warning supression flag is a temporary kludge.
 -- While working on this module you are encouraged to remove it and fix
 -- any warnings in the module. See
@@ -10,6 +10,7 @@ module ParsePkgConf( loadPackageConfig ) where
 
 #include "HsVersions.h"
 
+import Distribution.Package hiding ( depends )
 import PackageConfig
 import Lexer
 import Module
@@ -19,8 +20,7 @@ import StringBuffer
 import ErrUtils  ( mkLocMessage )
 import SrcLoc
 import Outputable
-import Panic     ( GhcException(..) )
-import Control.Exception ( throwDyn )
+import Panic
 
 }
 
@@ -61,7 +61,7 @@ field :: { PackageConfig -> PackageConfig }
        : VARID '=' pkgid
                {% case unpackFS $1 of
                        "package"     -> return (\p -> p{package = $3})
-                       _other        -> happyError
+                       _             -> happyError
                }
 
        | VARID '=' STRING              { id }
@@ -102,19 +102,25 @@ field     :: { PackageConfig -> PackageConfig }
                "haddockHTMLs"      -> p{haddockHTMLs      = map unpackFS $3}
                "depends"           -> p{depends = []}
                        -- empty list only, non-empty handled below
-               other -> p
+               _ -> p
        }
 
        | VARID '=' pkgidlist
                {% case unpackFS $1 of
                        "depends"     -> return (\p -> p{depends = $3})
-                       _other        -> happyError
+                       _             -> happyError
                }
 
 pkgid  :: { PackageIdentifier }
-       : CONID '{' VARID '=' STRING ',' VARID '=' version '}'
-                       { PackageIdentifier{ pkgName = unpackFS $5, 
-                                            pkgVersion = $9 } }
+       : CONID '{' VARID '=' CONID STRING ',' VARID '=' version '}'
+            {% case unpackFS $5 of
+               "PackageName" ->
+                   return $ PackageIdentifier {
+                                pkgName = PackageName (unpackFS $6),
+                                pkgVersion = $10
+                            }
+               _ -> happyError
+            }
 
 version :: { Version }
        : CONID '{' VARID '=' intlist ',' VARID '=' strlist '}'
@@ -155,7 +161,7 @@ loadPackageConfig dflags conf_filename = do
    let loc  = mkSrcLoc (mkFastString conf_filename) 1 0
    case unP parse (mkPState buf loc dflags) of
        PFailed span err -> 
-           throwDyn (InstallationError (showSDoc (mkLocMessage span err)))
+           ghcError (InstallationError (showSDoc (mkLocMessage span err)))
 
        POk _ pkg_details -> do
            return pkg_details