From c800c1633c97a7ead022a142d015bf8db14f04f6 Mon Sep 17 00:00:00 2001 From: "simonpj@microsoft.com" Date: Fri, 30 Jul 2010 12:24:05 +0000 Subject: [PATCH] Work around missing type signature in Happy Happy generates notHappyAtAll = error "Blah" without a type signature, and currently the new typechecker doesn't generalise it. This patch says "no monomorphism restriction" which makes it generalise again. Better would be to add a type sig to Happy's template --- compiler/cmm/CmmParse.y | 10 +++++++++- compiler/parser/Parser.y.pp | 10 +++++++++- compiler/parser/ParserCore.y | 10 +++++++++- utils/hpc/HpcParser.y | 10 +++++++++- 4 files changed, 36 insertions(+), 4 deletions(-) diff --git a/compiler/cmm/CmmParse.y b/compiler/cmm/CmmParse.y index 7ad1dd5..ad388e5 100644 --- a/compiler/cmm/CmmParse.y +++ b/compiler/cmm/CmmParse.y @@ -9,7 +9,15 @@ ----------------------------------------------------------------------------- { -{-# OPTIONS -Wwarn -w #-} +{-# OPTIONS -Wwarn -w -XNoMonomorphismRestriction #-} +-- The NoMonomorphismRestriction deals with a Happy infelicity +-- With OutsideIn's more conservativ monomorphism restriction +-- we aren't generalising +-- notHappyAtAll = error "urk" +-- which is terrible. Switching off the restriction allows +-- the generalisation. Better would be to make Happy generate +-- an appropriate signature. +-- -- 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 diff --git a/compiler/parser/Parser.y.pp b/compiler/parser/Parser.y.pp index 6f1b2e4..b0b7751 100644 --- a/compiler/parser/Parser.y.pp +++ b/compiler/parser/Parser.y.pp @@ -8,7 +8,15 @@ -- --------------------------------------------------------------------------- { -{-# OPTIONS -Wwarn -w #-} +{-# OPTIONS -Wwarn -w -XNoMonomorphismRestriction #-} +-- The NoMonomorphismRestriction deals with a Happy infelicity +-- With OutsideIn's more conservativ monomorphism restriction +-- we aren't generalising +-- notHappyAtAll = error "urk" +-- which is terrible. Switching off the restriction allows +-- the generalisation. Better would be to make Happy generate +-- an appropriate signature. + -- 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 diff --git a/compiler/parser/ParserCore.y b/compiler/parser/ParserCore.y index 0289cfc..8cfafae 100644 --- a/compiler/parser/ParserCore.y +++ b/compiler/parser/ParserCore.y @@ -1,5 +1,13 @@ { -{-# OPTIONS -Wwarn -w #-} +{-# OPTIONS -Wwarn -w -XNoMonomorphismRestriction #-} +-- The NoMonomorphismRestriction deals with a Happy infelicity +-- With OutsideIn's more conservativ monomorphism restriction +-- we aren't generalising +-- notHappyAtAll = error "urk" +-- which is terrible. Switching off the restriction allows +-- the generalisation. Better would be to make Happy generate +-- an appropriate signature. +-- -- 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 diff --git a/utils/hpc/HpcParser.y b/utils/hpc/HpcParser.y index b99e324..b4d8c79 100644 --- a/utils/hpc/HpcParser.y +++ b/utils/hpc/HpcParser.y @@ -1,5 +1,13 @@ { -{-# OPTIONS -Wwarn #-} +{-# OPTIONS -Wwarn -XNoMonomorphismRestriction #-} +-- The NoMonomorphismRestriction deals with a Happy infelicity +-- With OutsideIn's more conservativ monomorphism restriction +-- we aren't generalising +-- notHappyAtAll = error "urk" +-- which is terrible. Switching off the restriction allows +-- the generalisation. Better would be to make Happy generate +-- an appropriate signature. +-- -- 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 -- 1.7.10.4