diff options
11 files changed, 8 insertions, 101 deletions
diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs index b8aa29081a..2ce5813f46 100644 --- a/compiler/main/DynFlags.hs +++ b/compiler/main/DynFlags.hs @@ -1734,10 +1734,7 @@ combineSafeFlags a b | a == Sf_SafeInferred = return b -- * function to test if the flag is on -- * function to turn the flag off unsafeFlags :: [(String, DynFlags -> SrcSpan, DynFlags -> Bool, DynFlags -> DynFlags)] -unsafeFlags = [("-XGeneralizedNewtypeDeriving", newDerivOnLoc, - xopt Opt_GeneralizedNewtypeDeriving, - flip xopt_unset Opt_GeneralizedNewtypeDeriving), - ("-XTemplateHaskell", thOnLoc, +unsafeFlags = [("-XTemplateHaskell", thOnLoc, xopt Opt_TemplateHaskell, flip xopt_unset Opt_TemplateHaskell)] diff --git a/testsuite/tests/safeHaskell/ghci/p1.stderr b/testsuite/tests/safeHaskell/ghci/p1.stderr index 9446e1df16..6ebe783322 100644 --- a/testsuite/tests/safeHaskell/ghci/p1.stderr +++ b/testsuite/tests/safeHaskell/ghci/p1.stderr @@ -1,6 +1,3 @@ <no location info>: Warning: -XTemplateHaskell is not allowed in Safe Haskell; ignoring -XTemplateHaskell - -<no location info>: Warning: - -XGeneralizedNewtypeDeriving is not allowed in Safe Haskell; ignoring -XGeneralizedNewtypeDeriving diff --git a/testsuite/tests/safeHaskell/ghci/p16.stderr b/testsuite/tests/safeHaskell/ghci/p16.stderr index 77d3b1bed1..e69de29bb2 100644 --- a/testsuite/tests/safeHaskell/ghci/p16.stderr +++ b/testsuite/tests/safeHaskell/ghci/p16.stderr @@ -1,15 +0,0 @@ - -<no location info>: Warning: - -XGeneralizedNewtypeDeriving is not allowed in Safe Haskell; ignoring -XGeneralizedNewtypeDeriving - -<interactive>:16:29: - Can't make a derived instance of ‛Op T2’: - ‛Op’ is not a derivable class - Try GeneralizedNewtypeDeriving for GHC's newtype-deriving extension - In the newtype declaration for ‛T2’ - -<interactive>:19:9: - Not in scope: data constructor ‛T2’ - Perhaps you meant ‛T1’ (line 13) - -<interactive>:22:4: Not in scope: ‛y’ diff --git a/testsuite/tests/safeHaskell/ghci/p16.stdout b/testsuite/tests/safeHaskell/ghci/p16.stdout index 233a1e18c7..596c874083 100644 --- a/testsuite/tests/safeHaskell/ghci/p16.stdout +++ b/testsuite/tests/safeHaskell/ghci/p16.stdout @@ -1 +1,2 @@ "t1" +"T" diff --git a/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered03_A.hs b/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered03_A.hs index ea3202ed5d..ff6490e915 100644 --- a/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered03_A.hs +++ b/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered03_A.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE GeneralizedNewtypeDeriving #-} +{-# LANGUAGE TemplateHaskell #-} -- | Unsafe as uses GND module UnsafeInfered03_A where diff --git a/testsuite/tests/safeHaskell/safeLanguage/SafeLang02.hs b/testsuite/tests/safeHaskell/safeLanguage/SafeLang02.hs index 9bf1c82a09..8bc3f3cd00 100644 --- a/testsuite/tests/safeHaskell/safeLanguage/SafeLang02.hs +++ b/testsuite/tests/safeHaskell/safeLanguage/SafeLang02.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE Safe, GeneralizedNewtypeDeriving #-} +{-# LANGUAGE Safe, TemplateHaskell #-} -- | Test SafeLanguage disables things module SafeLang02 where diff --git a/testsuite/tests/safeHaskell/safeLanguage/SafeLang02.stderr b/testsuite/tests/safeHaskell/safeLanguage/SafeLang02.stderr index 069e5be4e9..e1643ed32b 100644 --- a/testsuite/tests/safeHaskell/safeLanguage/SafeLang02.stderr +++ b/testsuite/tests/safeHaskell/safeLanguage/SafeLang02.stderr @@ -1,3 +1,3 @@ SafeLang02.hs:1:20: - Warning: -XGeneralizedNewtypeDeriving is not allowed in Safe Haskell; ignoring -XGeneralizedNewtypeDeriving + Warning: -XTemplateHaskell is not allowed in Safe Haskell; ignoring -XTemplateHaskell diff --git a/testsuite/tests/safeHaskell/safeLanguage/SafeLang07.hs b/testsuite/tests/safeHaskell/safeLanguage/SafeLang07.hs deleted file mode 100644 index 006cd0ea08..0000000000 --- a/testsuite/tests/safeHaskell/safeLanguage/SafeLang07.hs +++ /dev/null @@ -1,41 +0,0 @@ -{-# LANGUAGE Safe #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} - --- Here we stop it succeeding (SAFE) - --- | We use newtype to create an isomorphic type to Int --- with a reversed Ord dictionary. We now use the MinList --- API of Y1 to create a new MinList. Then we use newtype --- deriving to convert the newtype MinList to an Int --- MinList. This final result breaks the invariants of --- MinList which shouldn't be possible with the exposed --- API of Y1. -module Main where - -import SafeLang07_A - -class IntIso t where - intIso :: c t -> c Int - -instance IntIso Int where - intIso = id - -newtype Down a = Down a deriving (Eq, Show, IntIso) - -instance Ord a => Ord (Down a) where - compare (Down a) (Down b) = compare b a - -forceInt :: MinList Int -> MinList Int -forceInt = id - -a1, a2 :: MinList Int -a1 = foldl insertMinList (newMinList $ head nums) (tail nums) -a2 = forceInt $ intIso $ foldl (\x y -> insertMinList x $ Down y) (newMinList $ Down $ head nums) (tail nums) - -nums :: [Int] -nums = [1,4,0,1,-5,2,3,5,-1,2,0,0,-4,-3,9] - -main = do - printIntMinList a1 - printIntMinList a2 - diff --git a/testsuite/tests/safeHaskell/safeLanguage/SafeLang07.stderr b/testsuite/tests/safeHaskell/safeLanguage/SafeLang07.stderr deleted file mode 100644 index 50c0ef7e56..0000000000 --- a/testsuite/tests/safeHaskell/safeLanguage/SafeLang07.stderr +++ /dev/null @@ -1,7 +0,0 @@ - -SafeLang07.hs:2:14: Warning: - -XGeneralizedNewtypeDeriving is not allowed in Safe Haskell; ignoring -XGeneralizedNewtypeDeriving - -SafeLang07.hs:15:1: - Failed to load interface for ‛SafeLang07_A’ - Use -v to see a list of the files searched for. diff --git a/testsuite/tests/safeHaskell/safeLanguage/SafeLang07_A.hs b/testsuite/tests/safeHaskell/safeLanguage/SafeLang07_A.hs deleted file mode 100644 index 6ef49d5946..0000000000 --- a/testsuite/tests/safeHaskell/safeLanguage/SafeLang07_A.hs +++ /dev/null @@ -1,24 +0,0 @@ -{-# LANGUAGE Trustworthy #-} - --- | Here we expose a MinList API that only allows elements --- to be inserted into a list if they are at least greater --- than an initial element the list is created with. -module SafeLang07_A ( - MinList, - newMinList, - insertMinList, - printIntMinList - ) where - -data MinList a = MinList a [a] - -newMinList :: Ord a => a -> MinList a -newMinList n = MinList n [] - -insertMinList :: Ord a => MinList a -> a -> MinList a -insertMinList s@(MinList m xs) n | n > m = MinList m (n:xs) - | otherwise = s - -printIntMinList :: MinList Int -> IO () -printIntMinList (MinList min xs) = putStrLn $ "MinList Int :: MinList " ++ show min ++ " " ++ show xs - diff --git a/testsuite/tests/safeHaskell/safeLanguage/all.T b/testsuite/tests/safeHaskell/safeLanguage/all.T index 5932348594..dc968917fb 100644 --- a/testsuite/tests/safeHaskell/safeLanguage/all.T +++ b/testsuite/tests/safeHaskell/safeLanguage/all.T @@ -15,11 +15,10 @@ test('SafeLang03', normal, compile, ['']) test('SafeLang04', normal, compile_and_run, ['']) test('SafeLang05', normal, compile_and_run, ['']) -# SafeLang06 was a test involving GeneralizedNewtypeDeriving, but the code -# fails to compile with roles; thus the test is no longer valid and has -# been removed +# SafeLang06 and SafeLang07 wwere tests involving +# GeneralizedNewtypeDeriving, but the code failed to compile with +# roles; thus the tests were no longer valid and have been removed -test('SafeLang07', normal, compile_fail, ['']) test('SafeLang08', normal, compile_fail, ['']) test('SafeLang09', [exit_code(1), |