summaryrefslogtreecommitdiff
path: root/testsuite/tests
diff options
context:
space:
mode:
authorUlya Trofimovich <skvadrik@gmail.com>2016-02-16 22:41:50 +0100
committerBen Gamari <ben@smart-cactus.org>2016-02-16 22:42:04 +0100
commit693a54ea7ac6bdd229e0a297fc023d25263077b9 (patch)
tree2ee0a2107b5f20b4992cf80892c4c4f4a8ed75de /testsuite/tests
parent525a304f8c010ce73f1456e507aca668eb4917ac (diff)
downloadhaskell-693a54ea7ac6bdd229e0a297fc023d25263077b9.tar.gz
Improved error message about exported type operators.
There is ambiguty between (1) type constructors and (2) data constructors in export lists, e.g. '%%' can stand for both of them. This ambiguity is resolved in favor of (2). If the exported data constructor is not in scope, but type constructor with the same name is in scope, GHC should suggest adding 'type' keyword to resolve ambiguity in favor of (1) and enabling 'TypeOperators' extension. The patch only extends the error message. See Trac #11432. Test Plan: `make test` Reviewers: simonpj, bgamari, austin Reviewed By: simonpj Subscribers: mpickering, thomie, goldfire, kosmikus Differential Revision: https://phabricator.haskell.org/D1902 GHC Trac Issues: #11432
Diffstat (limited to 'testsuite/tests')
-rw-r--r--testsuite/tests/module/T11432.hs9
-rw-r--r--testsuite/tests/module/T11432.stderr10
-rw-r--r--testsuite/tests/module/all.T1
-rw-r--r--testsuite/tests/module/mod89.stderr20
4 files changed, 30 insertions, 10 deletions
diff --git a/testsuite/tests/module/T11432.hs b/testsuite/tests/module/T11432.hs
new file mode 100644
index 0000000000..408935d4ec
--- /dev/null
+++ b/testsuite/tests/module/T11432.hs
@@ -0,0 +1,9 @@
+{-
+We expect to get a suggestion to add 'type' keyword
+and enable TypeOperators extension.
+-}
+
+{-# LANGUAGE TypeOperators #-}
+module T11432 ((-.->)(..)) where
+
+newtype (f -.-> g) a = Fn { apFn :: f a -> g a }
diff --git a/testsuite/tests/module/T11432.stderr b/testsuite/tests/module/T11432.stderr
new file mode 100644
index 0000000000..bf2a58b0a0
--- /dev/null
+++ b/testsuite/tests/module/T11432.stderr
@@ -0,0 +1,10 @@
+
+T11432.hs:7:16:
+ Not in scope: ‘-.->’
+ Note: use ‘type’ keyword to export type constructor ‘-.->’
+ defined at T11432.hs:9:1
+ (requires TypeOperators extension)
+
+T11432.hs:7:16:
+ The export item ‘(-.->)(..)’
+ attempts to export constructors or class methods that are not visible here
diff --git a/testsuite/tests/module/all.T b/testsuite/tests/module/all.T
index cd1bdac293..e6446fe480 100644
--- a/testsuite/tests/module/all.T
+++ b/testsuite/tests/module/all.T
@@ -347,3 +347,4 @@ test('T9061', normal, compile, [''])
test('T9997', normal, compile, [''])
test('T10233', extra_clean(['T01233a.hi', 'T01233a.o']),
multimod_compile, ['T10233', '-v0'])
+test('T11432', normal, compile_fail, [''])
diff --git a/testsuite/tests/module/mod89.stderr b/testsuite/tests/module/mod89.stderr
index b355f3050b..5b2f422455 100644
--- a/testsuite/tests/module/mod89.stderr
+++ b/testsuite/tests/module/mod89.stderr
@@ -1,10 +1,10 @@
-
-mod89.hs:5:1: warning:
- The import item ‘map(..)’ suggests that
- ‘map’ has (in-scope) constructors or class methods,
- but it has none
-
-mod89.hs:5:1: warning:
- The import of ‘Prelude’ is redundant
- except perhaps to import instances from ‘Prelude’
- To import instances alone, use: import Prelude()
+
+mod89.hs:5:1: warning:
+ The import item ‘map(..)’ suggests that
+ ‘map’ has (in-scope) constructors or class methods,
+ but it has none
+
+mod89.hs:5:1: warning:
+ The import of ‘Prelude’ is redundant
+ except perhaps to import instances from ‘Prelude’
+ To import instances alone, use: import Prelude()