diff options
Diffstat (limited to 'testsuite/tests/annotations/should_fail')
31 files changed, 289 insertions, 0 deletions
diff --git a/testsuite/tests/annotations/should_fail/Annfail04_Help.hs b/testsuite/tests/annotations/should_fail/Annfail04_Help.hs new file mode 100644 index 0000000000..55cbe99884 --- /dev/null +++ b/testsuite/tests/annotations/should_fail/Annfail04_Help.hs @@ -0,0 +1,4 @@ +module Annfail04_Help where + +class Thing a where + thing :: a
\ No newline at end of file diff --git a/testsuite/tests/annotations/should_fail/Annfail05_Help.hs b/testsuite/tests/annotations/should_fail/Annfail05_Help.hs new file mode 100644 index 0000000000..1300c091ca --- /dev/null +++ b/testsuite/tests/annotations/should_fail/Annfail05_Help.hs @@ -0,0 +1,3 @@ +module Annfail05_Help where + +data NoInstances = NoInstances
\ No newline at end of file diff --git a/testsuite/tests/annotations/should_fail/Annfail06_Help.hs b/testsuite/tests/annotations/should_fail/Annfail06_Help.hs new file mode 100644 index 0000000000..224181f261 --- /dev/null +++ b/testsuite/tests/annotations/should_fail/Annfail06_Help.hs @@ -0,0 +1,3 @@ +module Annfail06_Help where + +data InstancesInWrongModule = InstancesInWrongModule
\ No newline at end of file diff --git a/testsuite/tests/annotations/should_fail/Makefile b/testsuite/tests/annotations/should_fail/Makefile new file mode 100644 index 0000000000..9101fbd40a --- /dev/null +++ b/testsuite/tests/annotations/should_fail/Makefile @@ -0,0 +1,3 @@ +TOP=../../.. +include $(TOP)/mk/boilerplate.mk +include $(TOP)/mk/test.mk diff --git a/testsuite/tests/annotations/should_fail/all.T b/testsuite/tests/annotations/should_fail/all.T new file mode 100644 index 0000000000..21eaa765c3 --- /dev/null +++ b/testsuite/tests/annotations/should_fail/all.T @@ -0,0 +1,34 @@ + +test('annfail01', normal, compile_fail, ['']) +test('annfail02', normal, compile_fail, ['']) +test('annfail03', req_interp, compile_fail, ['']) +test('annfail04', + [req_interp, extra_clean(['Annfail04_Help.hi', 'Annfail04_Help.o'])], + multimod_compile_fail, ['annfail04', '-v0']) +test('annfail05', + [req_interp, extra_clean(['Annfail05_Help.hi', 'Annfail05_Help.o'])], + multimod_compile_fail, ['annfail05', '-v0']) +test('annfail06', + [req_interp, extra_clean(['Annfail06_Help.hi', 'Annfail06_Help.o'])], + multimod_compile_fail, ['annfail06', '-v0']) +test('annfail07', req_interp, compile_fail, ['']) +test('annfail08', req_interp, compile_fail, ['']) +test('annfail09', req_interp, compile_fail, ['']) +test('annfail10', req_interp, compile_fail, ['']) +test('annfail11', normal, compile_fail, ['']) +test('annfail12', req_interp, compile_fail, ['-v0']) +test('annfail13', normal, compile_fail, ['']) + +"""" +Helpful things to C+P: + +test('', normal, compile_fail, ['']) + +test('', normal, compile, ['']) + +test('', extra_clean(['.hi', '.o']), + multimod_compile_fail, ['', '-v0']) + +test('', extra_clean(['.hi', '.o']), + multimod_compile, ['', '-v0']) +""" diff --git a/testsuite/tests/annotations/should_fail/annfail01.hs b/testsuite/tests/annotations/should_fail/annfail01.hs new file mode 100644 index 0000000000..c5a8c29e5b --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail01.hs @@ -0,0 +1,5 @@ +module Annfail01 where +-- Testing annotating things that don't exist + +{-# ANN type Foo (1 :: Int) #-} +{-# ANN f (1 :: Int) #-}
\ No newline at end of file diff --git a/testsuite/tests/annotations/should_fail/annfail01.stderr b/testsuite/tests/annotations/should_fail/annfail01.stderr new file mode 100644 index 0000000000..6cafc25490 --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail01.stderr @@ -0,0 +1,8 @@ + +annfail01.hs:4:1: + Not in scope: type constructor or class ‛Foo’ + In the annotation: {-# ANN type Foo (1 :: Int) #-} + +annfail01.hs:5:1: + Not in scope: ‛f’ + In the annotation: {-# ANN f (1 :: Int) #-} diff --git a/testsuite/tests/annotations/should_fail/annfail02.hs b/testsuite/tests/annotations/should_fail/annfail02.hs new file mode 100644 index 0000000000..50154e752c --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail02.hs @@ -0,0 +1,7 @@ +module Annfail02 where +-- Testing annotating things that don't exist in the right namespace + +data Foo = Bar + +{-# ANN Foo (1 :: Int) #-} +{-# ANN type Bar (2 :: Int) #-}
\ No newline at end of file diff --git a/testsuite/tests/annotations/should_fail/annfail02.stderr b/testsuite/tests/annotations/should_fail/annfail02.stderr new file mode 100644 index 0000000000..84c954883a --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail02.stderr @@ -0,0 +1,8 @@ + +annfail02.hs:6:1: + Not in scope: data constructor ‛Foo’ + In the annotation: {-# ANN Foo (1 :: Int) #-} + +annfail02.hs:7:1: + Not in scope: type constructor or class ‛Bar’ + In the annotation: {-# ANN type Bar (2 :: Int) #-} diff --git a/testsuite/tests/annotations/should_fail/annfail03.hs b/testsuite/tests/annotations/should_fail/annfail03.hs new file mode 100644 index 0000000000..c3e2a82323 --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail03.hs @@ -0,0 +1,18 @@ +{-# LANGUAGE DeriveDataTypeable #-} + +module Annfail03 where +-- Testing annotating something with a value defined + Typeabled / Dataed in same module + +import Data.Data +import Data.Typeable + +data InModule = InModule + deriving (Typeable, Data) + +{-# ANN module InModule #-} + +{-# ANN type Foo InModule #-} +data Foo = Bar + +{-# ANN f InModule #-} +f x = x
\ No newline at end of file diff --git a/testsuite/tests/annotations/should_fail/annfail03.stderr b/testsuite/tests/annotations/should_fail/annfail03.stderr new file mode 100644 index 0000000000..7e880d4d95 --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail03.stderr @@ -0,0 +1,6 @@ + +annfail03.hs:17:11: + GHC stage restriction: + ‛InModule’ is used in a top-level splice or annotation, + and must be imported, not defined locally + In the annotation: {-# ANN f InModule #-} diff --git a/testsuite/tests/annotations/should_fail/annfail04.hs b/testsuite/tests/annotations/should_fail/annfail04.hs new file mode 100644 index 0000000000..352850e07d --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail04.hs @@ -0,0 +1,15 @@ +module Annfail04 where + +import Annfail04_Help +-- Testing that we detect the use of instances defined in the same module + +instance Thing Int where + thing = 1 + +{-# ANN module (thing :: Int) #-} + +{-# ANN type Foo (thing :: Int) #-} +data Foo = Bar + +{-# ANN f (thing :: Int) #-} +f x = x
\ No newline at end of file diff --git a/testsuite/tests/annotations/should_fail/annfail04.stderr b/testsuite/tests/annotations/should_fail/annfail04.stderr new file mode 100644 index 0000000000..70ff2e685b --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail04.stderr @@ -0,0 +1,7 @@ + +annfail04.hs:14:12: + GHC stage restriction: + instance for ‛Thing + Int’ is used in a top-level splice or annotation, + and must be imported, not defined locally + In the annotation: {-# ANN f (thing :: Int) #-} diff --git a/testsuite/tests/annotations/should_fail/annfail05.hs b/testsuite/tests/annotations/should_fail/annfail05.hs new file mode 100644 index 0000000000..8657fd4ab6 --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail05.hs @@ -0,0 +1,12 @@ +module Annfail05 where + +import Annfail05_Help +-- Testing annotating with a value that is not Typeable or Data-able + +{-# ANN module NoInstances #-} + +{-# ANN type Foo NoInstances #-} +data Foo = Bar + +{-# ANN f NoInstances #-} +f x = x
\ No newline at end of file diff --git a/testsuite/tests/annotations/should_fail/annfail05.stderr b/testsuite/tests/annotations/should_fail/annfail05.stderr new file mode 100644 index 0000000000..712cff2f2a --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail05.stderr @@ -0,0 +1,5 @@ + +annfail05.hs:11:1: + No instance for (Data.Data.Data NoInstances) + arising from an annotation + In the annotation: {-# ANN f NoInstances #-} diff --git a/testsuite/tests/annotations/should_fail/annfail06.hs b/testsuite/tests/annotations/should_fail/annfail06.hs new file mode 100644 index 0000000000..1362f1956e --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail06.hs @@ -0,0 +1,23 @@ +{-# LANGUAGE StandaloneDeriving, DeriveDataTypeable #-} + +module Annfail06 where +-- Testing that we don't accept Typeable or Data instances defined in the same module + +import Annfail06_Help + +import Data.Data +import Data.Typeable + +deriving instance Typeable InstancesInWrongModule + +instance Data InstancesInWrongModule where + gfoldl = undefined + gunfold = undefined + +{-# ANN module InstancesInWrongModule #-} + +{-# ANN type Foo InstancesInWrongModule #-} +data Foo = Bar + +{-# ANN f InstancesInWrongModule #-} +f x = x
\ No newline at end of file diff --git a/testsuite/tests/annotations/should_fail/annfail06.stderr b/testsuite/tests/annotations/should_fail/annfail06.stderr new file mode 100644 index 0000000000..a807aafd9b --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail06.stderr @@ -0,0 +1,7 @@ + +annfail06.hs:22:1: + GHC stage restriction: + instance for ‛Data + InstancesInWrongModule’ is used in a top-level splice or annotation, + and must be imported, not defined locally + In the annotation: {-# ANN f InstancesInWrongModule #-} diff --git a/testsuite/tests/annotations/should_fail/annfail07.hs b/testsuite/tests/annotations/should_fail/annfail07.hs new file mode 100644 index 0000000000..732a66a3e4 --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail07.hs @@ -0,0 +1,10 @@ +module Annfail07 where +-- Testing normal type errors in annotations + +{-# ANN module (head True) #-} + +{-# ANN type Foo (head True) #-} +data Foo = Bar + +{-# ANN f (head True) #-} +f x = x
\ No newline at end of file diff --git a/testsuite/tests/annotations/should_fail/annfail07.stderr b/testsuite/tests/annotations/should_fail/annfail07.stderr new file mode 100644 index 0000000000..5f966a7bde --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail07.stderr @@ -0,0 +1,5 @@ + +annfail07.hs:9:17: + Couldn't match expected type ‛[a0]’ with actual type ‛Bool’ + In the first argument of ‛head’, namely ‛True’ + In the annotation: {-# ANN f (head True) #-} diff --git a/testsuite/tests/annotations/should_fail/annfail08.hs b/testsuite/tests/annotations/should_fail/annfail08.hs new file mode 100644 index 0000000000..c2b3a1ae19 --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail08.hs @@ -0,0 +1,10 @@ +module Annfail08 where +-- Testing instance type errors in annotations + +{-# ANN module (id + 1) #-} + +{-# ANN type Foo (id + 1) #-} +data Foo = Bar + +{-# ANN f (id + 1) #-} +f x = x
\ No newline at end of file diff --git a/testsuite/tests/annotations/should_fail/annfail08.stderr b/testsuite/tests/annotations/should_fail/annfail08.stderr new file mode 100644 index 0000000000..8a64c82e1e --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail08.stderr @@ -0,0 +1,9 @@ + +annfail08.hs:9:1: + No instance for (Data.Data.Data (a0 -> a0)) + arising from an annotation + In the annotation: {-# ANN f (id + 1) #-} + +annfail08.hs:9:15: + No instance for (Num (a0 -> a0)) arising from a use of ‛+’ + In the annotation: {-# ANN f (id + 1) #-} diff --git a/testsuite/tests/annotations/should_fail/annfail09.hs b/testsuite/tests/annotations/should_fail/annfail09.hs new file mode 100644 index 0000000000..871dd11895 --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail09.hs @@ -0,0 +1,12 @@ +module Annfail09 where +-- Testing that we detect references to ids defined in module being compiled in annotations + +g = 10 + +{-# ANN module g #-} + +{-# ANN type Foo g #-} +data Foo = Bar + +{-# ANN f g #-} +f x = x
\ No newline at end of file diff --git a/testsuite/tests/annotations/should_fail/annfail09.stderr b/testsuite/tests/annotations/should_fail/annfail09.stderr new file mode 100644 index 0000000000..f1bd77cb7c --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail09.stderr @@ -0,0 +1,6 @@ + +annfail09.hs:11:11: + GHC stage restriction: + ‛g’ is used in a top-level splice or annotation, + and must be imported, not defined locally + In the annotation: {-# ANN f g #-} diff --git a/testsuite/tests/annotations/should_fail/annfail10.hs b/testsuite/tests/annotations/should_fail/annfail10.hs new file mode 100644 index 0000000000..d03b6a73fb --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail10.hs @@ -0,0 +1,10 @@ +module Annfail10 where +-- Testing ambiguity in annotations + +{-# ANN module 1 #-} + +{-# ANN type Foo 1 #-} +data Foo = Bar + +{-# ANN f 1 #-} +f x = x
\ No newline at end of file diff --git a/testsuite/tests/annotations/should_fail/annfail10.stderr b/testsuite/tests/annotations/should_fail/annfail10.stderr new file mode 100644 index 0000000000..f9bfe2697e --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail10.stderr @@ -0,0 +1,25 @@ + +annfail10.hs:9:1: + No instance for (Data.Data.Data a0) arising from an annotation + The type variable ‛a0’ is ambiguous + Note: there are several potential instances: + instance Data.Data.Data () -- Defined in ‛Data.Data’ + instance (Data.Data.Data a, Data.Data.Data b) => + Data.Data.Data (a, b) + -- Defined in ‛Data.Data’ + instance (Data.Data.Data a, Data.Data.Data b, Data.Data.Data c) => + Data.Data.Data (a, b, c) + -- Defined in ‛Data.Data’ + ...plus 31 others + In the annotation: {-# ANN f 1 #-} + +annfail10.hs:9:11: + No instance for (Num a0) arising from the literal ‛1’ + The type variable ‛a0’ is ambiguous + Note: there are several potential instances: + instance Num Double -- Defined in ‛GHC.Float’ + instance Num Float -- Defined in ‛GHC.Float’ + instance Integral a => Num (GHC.Real.Ratio a) + -- Defined in ‛GHC.Real’ + ...plus 11 others + In the annotation: {-# ANN f 1 #-} diff --git a/testsuite/tests/annotations/should_fail/annfail11.hs b/testsuite/tests/annotations/should_fail/annfail11.hs new file mode 100644 index 0000000000..2eebcb6b63 --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail11.hs @@ -0,0 +1,4 @@ +module Annfail11 where + +{-# ANN length "Cannot annotate other modules yet" #-} +{-# ANN type Integer "Cannot annotate other modules yet" #-}
\ No newline at end of file diff --git a/testsuite/tests/annotations/should_fail/annfail11.stderr b/testsuite/tests/annotations/should_fail/annfail11.stderr new file mode 100644 index 0000000000..3fa446f8e0 --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail11.stderr @@ -0,0 +1,10 @@ + +annfail11.hs:3:1: + Not in scope: ‛length’ + In the annotation: + {-# ANN length "Cannot annotate other modules yet" #-} + +annfail11.hs:4:1: + Not in scope: type constructor or class ‛Integer’ + In the annotation: + {-# ANN type Integer "Cannot annotate other modules yet" #-} diff --git a/testsuite/tests/annotations/should_fail/annfail12.hs b/testsuite/tests/annotations/should_fail/annfail12.hs new file mode 100644 index 0000000000..7fe23073d1 --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail12.hs @@ -0,0 +1,6 @@ +module Annfail12 where + +-- Testing errors hidden in annotations + +{-# ANN f (error "You were meant to see this error!" :: Int) #-} +f x = x
\ No newline at end of file diff --git a/testsuite/tests/annotations/should_fail/annfail12.stderr b/testsuite/tests/annotations/should_fail/annfail12.stderr new file mode 100644 index 0000000000..b3cbb4eb14 --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail12.stderr @@ -0,0 +1,6 @@ + +annfail12.hs:5:1: + Exception when trying to run compile-time code: + You were meant to see this error! + In the annotation: + {-# ANN f (error "You were meant to see this error!" :: Int) #-} diff --git a/testsuite/tests/annotations/should_fail/annfail13.hs b/testsuite/tests/annotations/should_fail/annfail13.hs new file mode 100644 index 0000000000..0de17ce5c0 --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail13.hs @@ -0,0 +1,6 @@ +module Annfail13 where +-- Testing that brackets are mandatory in the ANN syntax + +{-# ANN f id 1 #-} +{-# ANN f 1 :: Int #-} +f x = x
\ No newline at end of file diff --git a/testsuite/tests/annotations/should_fail/annfail13.stderr b/testsuite/tests/annotations/should_fail/annfail13.stderr new file mode 100644 index 0000000000..8470592208 --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail13.stderr @@ -0,0 +1,2 @@ + +annfail13.hs:4:14: parse error on input ‛1’ |