diff options
author | Ryan Scott <ryan.gl.scott@gmail.com> | 2018-06-19 23:16:39 -0400 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2018-06-20 11:17:26 -0400 |
commit | f4dce6cfd71d2a1dc2e281f19cae85e62aaf6b8e (patch) | |
tree | 4f6910e15da50791aea20d607c3fc50cfc1fd3d9 | |
parent | 942e6c9ecaf12d2834ca5352c6f51e8419efc57c (diff) | |
download | haskell-f4dce6cfd71d2a1dc2e281f19cae85e62aaf6b8e.tar.gz |
Allow :info for (~) in GHCi
`(~)` is not an identifier according to GHC's parser, which
is why GHCi's `:info` command wouldn't work on it. To rectify this,
we apply the same fix that was put in place for `(->)`: add `(~)` to
GHC's `identifier` parser production.
Test Plan: make test TEST=T10059
Reviewers: bgamari
Reviewed By: bgamari
Subscribers: rwbarton, thomie, mpickering, carter
GHC Trac Issues: #10059
Differential Revision: https://phabricator.haskell.org/D4877
-rw-r--r-- | compiler/parser/Parser.y | 4 | ||||
-rw-r--r-- | testsuite/tests/ghci/scripts/T10059.script | 5 | ||||
-rw-r--r-- | testsuite/tests/ghci/scripts/T10059.stdout | 9 | ||||
-rwxr-xr-x | testsuite/tests/ghci/scripts/all.T | 1 |
4 files changed, 18 insertions, 1 deletions
diff --git a/compiler/parser/Parser.y b/compiler/parser/Parser.y index 066ee421fb..0e93dd043b 100644 --- a/compiler/parser/Parser.y +++ b/compiler/parser/Parser.y @@ -626,7 +626,9 @@ identifier :: { Located RdrName } | qvarop { $1 } | qconop { $1 } | '(' '->' ')' {% ams (sLL $1 $> $ getRdrName funTyCon) - [mj AnnOpenP $1,mu AnnRarrow $2,mj AnnCloseP $3] } + [mop $1,mu AnnRarrow $2,mcp $3] } + | '(' '~' ')' {% ams (sLL $1 $> $ eqTyCon_RDR) + [mop $1,mj AnnTilde $2,mcp $3] } ----------------------------------------------------------------------------- -- Backpack stuff diff --git a/testsuite/tests/ghci/scripts/T10059.script b/testsuite/tests/ghci/scripts/T10059.script new file mode 100644 index 0000000000..d352b9f15c --- /dev/null +++ b/testsuite/tests/ghci/scripts/T10059.script @@ -0,0 +1,5 @@ +:set -XTypeOperators +:i (~) +:k (~) +:set -fprint-equality-relations +:i (~) diff --git a/testsuite/tests/ghci/scripts/T10059.stdout b/testsuite/tests/ghci/scripts/T10059.stdout new file mode 100644 index 0000000000..26e1e7e28f --- /dev/null +++ b/testsuite/tests/ghci/scripts/T10059.stdout @@ -0,0 +1,9 @@ +class (a ~ b) => (~) (a :: k) (b :: k) + -- Defined in ‘Data.Type.Equality’ +instance [incoherent] forall k (a :: k) (b :: k). (a ~ b) => a ~ b + -- Defined in ‘Data.Type.Equality’ +(~) :: k -> k -> Constraint +class (a ~~ b) => (~) (a :: k) (b :: k) + -- Defined in ‘Data.Type.Equality’ +instance [incoherent] forall k (a :: k) (b :: k). (a ~~ b) => a ~ b + -- Defined in ‘Data.Type.Equality’ diff --git a/testsuite/tests/ghci/scripts/all.T b/testsuite/tests/ghci/scripts/all.T index 163ff0c2da..29fbdf85c5 100755 --- a/testsuite/tests/ghci/scripts/all.T +++ b/testsuite/tests/ghci/scripts/all.T @@ -201,6 +201,7 @@ test('T9878', [], ghci_script, ['T9878.script']) test('T9878b', [extra_run_opts('-fobject-code')], ghci_script, ['T9878b.script']) test('T10018', normal, ghci_script, ['T10018.script']) +test('T10059', normal, ghci_script, ['T10059.script']) test('T10122', normal, ghci_script, ['T10122.script']) test('T10321', normal, ghci_script, ['T10321.script']) |