diff options
Diffstat (limited to 'testsuite/tests/annotations/should_fail')
31 files changed, 273 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..70553f983f --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail01.stderr @@ -0,0 +1,4 @@ + +annfail01.hs:4:1: Not in scope: type constructor or class `Foo' + +annfail01.hs:5:1: Not in scope: `f' 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..83d54f9840 --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail02.stderr @@ -0,0 +1,4 @@ + +annfail02.hs:6:1: Not in scope: data constructor `Foo' + +annfail02.hs:7:1: Not in scope: type constructor or class `Bar' 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..a7be7feb93 --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail03.stderr @@ -0,0 +1,7 @@ + +annfail03.hs:17:1: + GHC stage restriction: instance for `Data InModule' + is used in a top-level splice or annotation, + and must be imported, not defined locally + In the expression: InModule + 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..dcbe0e7945 --- /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 expression: (thing :: Int) + 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..4e861c6b97 --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail05.stderr @@ -0,0 +1,8 @@ + +annfail05.hs:11:1: + No instance for (Data.Data.Data NoInstances) + arising from an annotation + Possible fix: + add an instance declaration for (Data.Data.Data NoInstances) + In the expression: NoInstances + 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..51c922098a --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail06.hs @@ -0,0 +1,22 @@ +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 + +instance Typeable InstancesInWrongModule where + typeOf _ = undefined + +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..c5082c386e --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail06.stderr @@ -0,0 +1,7 @@ + +annfail06.hs:21: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 expression: InstancesInWrongModule + 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..01f4b62c45 --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail07.stderr @@ -0,0 +1,6 @@ + +annfail07.hs:9:17: + Couldn't match expected type `[a0]' with actual type `Bool' + In the first argument of `head', namely `True' + In the expression: (head 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..e8b14d1f8a --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail08.stderr @@ -0,0 +1,16 @@ + +annfail08.hs:9:1: + No instance for (Data.Data.Data (a0 -> a0)) + arising from an annotation + Possible fix: + add an instance declaration for (Data.Data.Data (a0 -> a0)) + In the expression: (id + 1) + In the annotation: {-# ANN f (id + 1) #-} + +annfail08.hs:9:17: + No instance for (Num (a0 -> a0)) + arising from the literal `1' + Possible fix: add an instance declaration for (Num (a0 -> a0)) + In the second argument of `(+)', namely `1' + In the expression: (id + 1) + 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..5eae63a012 --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail09.stderr @@ -0,0 +1,7 @@ + +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 expression: g + 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..eac3002efa --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail10.stderr @@ -0,0 +1,9 @@ + +annfail10.hs:9:1: + Ambiguous type variable `a0' in the constraints: + (Data.Data.Data a0) arising from an annotation + at annfail10.hs:9:1-15 + (Num a0) arising from the literal `1' at annfail10.hs:9:11 + Probable fix: add a type signature that fixes these type variable(s) + In the expression: 1 + 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..18769f7466 --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail11.stderr @@ -0,0 +1,4 @@ + +annfail11.hs:3:1: Not in scope: `length' + +annfail11.hs:4:1: Not in scope: type constructor or class `Integer' 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..6b08c0a814 --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail12.stderr @@ -0,0 +1,8 @@ + +annfail12.hs:5:1: + Exception when trying to run compile-time code: + You were meant to see this error! + In the expression: + (error "You were meant to see this error!" :: Int) + 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..fb30c66f73 --- /dev/null +++ b/testsuite/tests/annotations/should_fail/annfail13.stderr @@ -0,0 +1,2 @@ + +annfail13.hs:4:14: parse error on input `1' |