[commit: ghc] master: Allow :info for (~) in GHCi (f4dce6c)

git at git.haskell.org git at git.haskell.org
Wed Jun 20 15:52:03 UTC 2018


Repository : ssh://git@git.haskell.org/ghc

On branch  : master
Link       : http://ghc.haskell.org/trac/ghc/changeset/f4dce6cfd71d2a1dc2e281f19cae85e62aaf6b8e/ghc

>---------------------------------------------------------------

commit f4dce6cfd71d2a1dc2e281f19cae85e62aaf6b8e
Author: Ryan Scott <ryan.gl.scott at gmail.com>
Date:   Tue Jun 19 23:16:39 2018 -0400

    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


>---------------------------------------------------------------

f4dce6cfd71d2a1dc2e281f19cae85e62aaf6b8e
 compiler/parser/Parser.y                   | 4 +++-
 testsuite/tests/ghci/scripts/T10059.script | 5 +++++
 testsuite/tests/ghci/scripts/T10059.stdout | 9 +++++++++
 testsuite/tests/ghci/scripts/all.T         | 1 +
 4 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/compiler/parser/Parser.y b/compiler/parser/Parser.y
index 066ee42..0e93dd0 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 0000000..d352b9f
--- /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 0000000..26e1e7e2
--- /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 163ff0c..29fbdf8 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'])



More information about the ghc-commits mailing list