Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
GHC
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
4,273
Issues
4,273
List
Boards
Labels
Service Desk
Milestones
Iterations
Merge Requests
413
Merge Requests
413
Requirements
Requirements
List
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Code Review
Insights
Issue
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Glasgow Haskell Compiler
GHC
Commits
fd4250b4
Commit
fd4250b4
authored
Jul 20, 2011
by
dterei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add tests for Safe Haskell Typeable instances feature
parent
96de88d5
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
195 additions
and
2 deletions
+195
-2
testsuite/tests/safeHaskell/safeLanguage/SafeLang13.hs
testsuite/tests/safeHaskell/safeLanguage/SafeLang13.hs
+41
-0
testsuite/tests/safeHaskell/safeLanguage/SafeLang13.stdout
testsuite/tests/safeHaskell/safeLanguage/SafeLang13.stdout
+5
-0
testsuite/tests/safeHaskell/safeLanguage/SafeLang13_A.hs
testsuite/tests/safeHaskell/safeLanguage/SafeLang13_A.hs
+19
-0
testsuite/tests/safeHaskell/safeLanguage/SafeLang14.hs
testsuite/tests/safeHaskell/safeLanguage/SafeLang14.hs
+41
-0
testsuite/tests/safeHaskell/safeLanguage/SafeLang14.stderr
testsuite/tests/safeHaskell/safeLanguage/SafeLang14.stderr
+8
-0
testsuite/tests/safeHaskell/safeLanguage/SafeLang14_A.hs
testsuite/tests/safeHaskell/safeLanguage/SafeLang14_A.hs
+19
-0
testsuite/tests/safeHaskell/safeLanguage/SafeLang15.hs
testsuite/tests/safeHaskell/safeLanguage/SafeLang15.hs
+33
-0
testsuite/tests/safeHaskell/safeLanguage/SafeLang15.stderr
testsuite/tests/safeHaskell/safeLanguage/SafeLang15.stderr
+2
-0
testsuite/tests/safeHaskell/safeLanguage/SafeLang15.stdout
testsuite/tests/safeHaskell/safeLanguage/SafeLang15.stdout
+3
-0
testsuite/tests/safeHaskell/safeLanguage/SafeLang15_A.hs
testsuite/tests/safeHaskell/safeLanguage/SafeLang15_A.hs
+19
-0
testsuite/tests/safeHaskell/safeLanguage/all.T
testsuite/tests/safeHaskell/safeLanguage/all.T
+3
-0
testsuite/tests/safeHaskell/unsafeLibs/BadImport03.stderr
testsuite/tests/safeHaskell/unsafeLibs/BadImport03.stderr
+2
-2
No files found.
testsuite/tests/safeHaskell/safeLanguage/SafeLang13.hs
0 → 100644
View file @
fd4250b4
{-# LANGUAGE DeriveDataTypeable, StandaloneDeriving #-}
-- | This shows how to use typeable to perform unsafe
-- casts. Basically its an example of what Safe Haskell
-- should disallow. SafeLang14 will do that.
module
Main
where
import
SafeLang13_A
import
Data.Typeable
data
H
=
H
String
deriving
(
Typeable
,
Show
)
data
G
=
G
Int
deriving
(
Show
)
instance
Typeable
G
where
typeOf
_
=
typeOf
(
undefined
::
H
)
instance
Typeable
P
where
typeOf
_
=
typeOf
(
undefined
::
G
)
{-
deriving instance Typeable G
deriving instance Typeable P
-}
main
=
do
let
h
=
H
"Hello World"
g
=
G
1
-- Just h' = (cast h) :: Maybe G
Just
p'
=
(
cast
p
)
::
Maybe
G
Just
px
=
(
cast
$
incrG
p'
)
::
Maybe
P
putStrLn
$
show
h
putStrLn
$
show
g
-- putStrLn $ show h'
putStrLn
$
showP
p
putStrLn
$
show
p'
putStrLn
$
showP
px
incrG
::
G
->
G
incrG
(
G
n
)
=
G
$
n
+
1
testsuite/tests/safeHaskell/safeLanguage/SafeLang13.stdout
0 → 100644
View file @
fd4250b4
H "Hello World"
G 1
Should be 3 := 3
G 3
Should be 3 := 4
testsuite/tests/safeHaskell/safeLanguage/SafeLang13_A.hs
0 → 100644
View file @
fd4250b4
module
SafeLang13_A
(
IsoInt
,
h
,
showH
,
P
,
p
,
showP
)
where
newtype
IsoInt
=
I
Int
h
::
IsoInt
h
=
I
2
showH
::
String
showH
=
let
I
n
=
h
in
show
n
data
P
=
P
Int
p
::
P
p
=
P
3
showP
::
P
->
String
showP
(
P
n
)
=
"Should be 3 := "
++
show
n
testsuite/tests/safeHaskell/safeLanguage/SafeLang14.hs
0 → 100644
View file @
fd4250b4
{-# LANGUAGE DeriveDataTypeable, StandaloneDeriving #-}
-- | This shows how to use typeable to perform unsafe
-- casts. Basically its an example of what Safe Haskell
-- should disallow. SafeLang14 will do that.
module
Main
where
import
SafeLang13_A
import
Data.Typeable
data
H
=
H
String
deriving
(
Typeable
,
Show
)
data
G
=
G
Int
deriving
(
Show
)
instance
Typeable
G
where
typeOf
_
=
typeOf
(
undefined
::
H
)
instance
Typeable
P
where
typeOf
_
=
typeOf
(
undefined
::
G
)
{-
deriving instance Typeable G
deriving instance Typeable P
-}
main
=
do
let
h
=
H
"Hello World"
g
=
G
1
-- Just h' = (cast h) :: Maybe G
Just
p'
=
(
cast
p
)
::
Maybe
G
Just
px
=
(
cast
$
incrG
p'
)
::
Maybe
P
putStrLn
$
show
h
putStrLn
$
show
g
-- putStrLn $ show h'
putStrLn
$
showP
p
putStrLn
$
show
p'
putStrLn
$
showP
px
incrG
::
G
->
G
incrG
(
G
n
)
=
G
$
n
+
1
testsuite/tests/safeHaskell/safeLanguage/SafeLang14.stderr
0 → 100644
View file @
fd4250b4
[1 of 2] Compiling SafeLang13_A ( SafeLang13_A.hs, SafeLang13_A.o )
[2 of 2] Compiling Main ( SafeLang14.hs, SafeLang14.o )
SafeLang14.hs:14:10:
Can't create hand written instances of Typeable in Safe Haskell! Can only derive them
SafeLang14.hs:17:10:
Can't create hand written instances of Typeable in Safe Haskell! Can only derive them
testsuite/tests/safeHaskell/safeLanguage/SafeLang14_A.hs
0 → 100644
View file @
fd4250b4
module
SafeLang13_A
(
IsoInt
,
h
,
showH
,
P
,
p
,
showP
)
where
newtype
IsoInt
=
I
Int
h
::
IsoInt
h
=
I
2
showH
::
String
showH
=
let
I
n
=
h
in
show
n
data
P
=
P
Int
p
::
P
p
=
P
3
showP
::
P
->
String
showP
(
P
n
)
=
"Should be 3 := "
++
show
n
testsuite/tests/safeHaskell/safeLanguage/SafeLang15.hs
0 → 100644
View file @
fd4250b4
{-# LANGUAGE DeriveDataTypeable, StandaloneDeriving #-}
-- | This shows how to use typeable to perform unsafe
-- casts. Basically its an example of what Safe Haskell
-- should disallow. SafeLang14 will do that.
module
Main
where
import
SafeLang13_A
import
Data.Typeable
data
H
=
H
String
deriving
(
Typeable
,
Show
)
data
G
=
G
Int
deriving
(
Show
)
deriving
instance
Typeable
G
deriving
instance
Typeable
P
main
=
do
let
h
=
H
"Hello World"
g
=
G
1
-- Just h' = (cast h) :: Maybe G
Just
p'
=
(
cast
p
)
::
Maybe
G
Just
px
=
(
cast
$
incrG
p'
)
::
Maybe
P
putStrLn
$
show
h
putStrLn
$
show
g
-- putStrLn $ show h'
putStrLn
$
showP
p
putStrLn
$
show
p'
putStrLn
$
showP
px
incrG
::
G
->
G
incrG
(
G
n
)
=
G
$
n
+
1
testsuite/tests/safeHaskell/safeLanguage/SafeLang15.stderr
0 → 100644
View file @
fd4250b4
SafeLang15: SafeLang15.hs:22:9-37: Irrefutable pattern failed for pattern Data.Maybe.Just p'
testsuite/tests/safeHaskell/safeLanguage/SafeLang15.stdout
0 → 100644
View file @
fd4250b4
H "Hello World"
G 1
Should be 3 := 3
testsuite/tests/safeHaskell/safeLanguage/SafeLang15_A.hs
0 → 100644
View file @
fd4250b4
module
SafeLang13_A
(
IsoInt
,
h
,
showH
,
P
,
p
,
showP
)
where
newtype
IsoInt
=
I
Int
h
::
IsoInt
h
=
I
2
showH
::
String
showH
=
let
I
n
=
h
in
show
n
data
P
=
P
Int
p
::
P
p
=
P
3
showP
::
P
->
String
showP
(
P
n
)
=
"Should be 3 := "
++
show
n
testsuite/tests/safeHaskell/safeLanguage/all.T
View file @
fd4250b4
...
...
@@ -16,4 +16,7 @@ test('SafeLang09', exit_code(1), compile_and_run, [''])
test
('
SafeLang10
',
normal
,
compile_fail
,
['
--make -trust base
'])
test
('
SafeLang11
',
req_interp
,
compile_and_run
,
['
--make -trust base
'])
test
('
SafeLang12
',
normal
,
compile_fail
,
['
--make -trust base
'])
test
('
SafeLang13
',
normal
,
compile_and_run
,
['
--make -trust base
'])
test
('
SafeLang14
',
normal
,
compile_fail
,
['
--make -trust base -XSafe
'])
test
('
SafeLang15
',
exit_code
(
1
),
compile_and_run
,
['
--make -trust base -XSafe
'])
testsuite/tests/safeHaskell/unsafeLibs/BadImport03.stderr
View file @
fd4250b4
[1 of 2] Compiling BadImport02_A ( BadImport02_A.hs, BadImport02_A.o )
[2 of 2] Compiling Main ( BadImport03.hs, BadImport03.o )
BadImport03.hs:
8:1
:
base:Data.Typeable can't be safely imported! The module itself isn't safe.
BadImport03.hs:
16:10
:
Can't create hand written instances of Typeable in Safe Haskell! Can only derive them
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment