Change pragma order to stop GHC 6.4 getting confused
[ghc-hetmet.git] / compiler / parser / Parser.y.pp
index 6a34c2d..4552fe2 100644 (file)
 --     http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings
 -- for details
 
+{-# OPTIONS_GHC -O0 -fno-ignore-interface-pragmas #-}
+{-
+Careful optimisation of the parser: we don't want to throw everything
+at it, because that takes too long and doesn't buy much, but we do want
+to inline certain key external functions, so we instruct GHC not to
+throw away inlinings as it would normally do in -O0 mode.
+-}
+
 module Parser ( parseModule, parseStmt, parseIdentifier, parseType,
                parseHeader ) where
 
@@ -378,7 +386,7 @@ module      :: { Located (HsModule RdrName) }
                           Nothing)) }
 
 maybedocheader :: { (HaddockModInfo RdrName, Maybe (HsDoc RdrName)) }
-        : moduleheader            { (fst $1, snd $1) }
+        : moduleheader            { $1 }
         | {- empty -}             { (emptyHaddockModInfo, Nothing) }
 
 missing_module_keyword :: { () }
@@ -606,8 +614,8 @@ ty_decl :: { LTyClDecl RdrName }
        | data_or_newtype tycl_hdr constrs deriving
                {% do { let {(ctxt, tc, tvs, tparms) = unLoc $2}
                       ; checkTyVars tparms    -- no type pattern
-                     ; return $
-                         L (comb4 $1 $2 $3 $4)
+                     ; return $!
+                         sL (comb4 $1 $2 $3 $4)
                                   -- We need the location on tycl_hdr in case 
                                   -- constrs and deriving are both empty
                            (mkTyData (unLoc $1) (ctxt, tc, tvs, Nothing) 
@@ -619,8 +627,8 @@ ty_decl :: { LTyClDecl RdrName }
                 deriving
                {% do { let {(ctxt, tc, tvs, tparms) = unLoc $2}
                       ; checkTyVars tparms    -- can have type pats
-                     ; return $
-                         L (comb4 $1 $2 $4 $5)
+                     ; return $!
+                         sL (comb4 $1 $2 $4 $5)
                            (mkTyData (unLoc $1) (ctxt, tc, tvs, Nothing) 
                              (unLoc $3) (reverse (unLoc $5)) (unLoc $6)) } }