Exact-print not working for LinearTypes
While working on migrating HsArrow
to the new design described in #19623 (closed), I tried to understand how multiplicity annotations and Unicode arrows were handled today. Turns out, not very well (unless I'm missing something). Here's a test case I added:
commit 78f44124b3cf6be912146447036b8b832da4f4b7
Author: Vladislav Zavialov <vlad.z.4096@gmail.com>
Date: Wed May 26 23:02:02 2021 +0300
Add PprLinearArrow test case
diff --git a/testsuite/tests/printer/Makefile b/testsuite/tests/printer/Makefile
index 1d0fc14f87..7222341e5b 100644
--- a/testsuite/tests/printer/Makefile
+++ b/testsuite/tests/printer/Makefile
@@ -558,6 +558,11 @@ InTreeAnnotations1:
$(CHECK_PPR) $(LIBDIR) InTreeAnnotations1.hs
$(CHECK_EXACT) $(LIBDIR) InTreeAnnotations1.hs
+.PHONY: PprLinearArrow
+PprLinearArrow:
+ $(CHECK_PPR) $(LIBDIR) PprLinearArrow.hs
+ $(CHECK_EXACT) $(LIBDIR) PprLinearArrow.hs
+
.PHONY: Test19784
Test19784:
$(CHECK_PPR) $(LIBDIR) Test19784.hs
diff --git a/testsuite/tests/printer/PprLinearArrow.hs b/testsuite/tests/printer/PprLinearArrow.hs
new file mode 100644
index 0000000000..1bf995ce6d
--- /dev/null
+++ b/testsuite/tests/printer/PprLinearArrow.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE LinearTypes, DataKinds, UnicodeSyntax #-}
+
+module PprLinearArrow where
+
+import GHC.Types (Multiplicity(One, Many))
+
+n1 :: a %1 -> b
+n1 = undefined
+
+u1 :: a %1 → b
+u1 = undefined
+
+n2 :: a %(Many) -> b
+n2 = undefined
+
+u2 :: a %(Many) → b
+u2 = undefined
+
+m3 :: a ⊸ b
+m3 = undefined
+
+n4 :: a %p -> b
+n4 = undefined
+
+u4 :: a %p → b
+u4 = undefined
diff --git a/testsuite/tests/printer/all.T b/testsuite/tests/printer/all.T
index 916ed6bbee..2a24324ee4 100644
--- a/testsuite/tests/printer/all.T
+++ b/testsuite/tests/printer/all.T
@@ -123,6 +123,7 @@ test('PprRecordDotSyntax4', ignore_stderr, makefile_test, ['PprRecordDotSyntax4'
test('PprRecordDotSyntaxA', ignore_stderr, makefile_test, ['PprRecordDotSyntaxA'])
test('CommentsTest', ignore_stderr, makefile_test, ['CommentsTest'])
test('InTreeAnnotations1', ignore_stderr, makefile_test, ['InTreeAnnotations1'])
+test('PprLinearArrow', ignore_stderr, makefile_test, ['PprLinearArrow'])
test('Test19784', ignore_stderr, makefile_test, ['Test19784'])
test('Test19798', ignore_stderr, makefile_test, ['Test19798'])
To my surprise, it does not pass in master
. Test output here: https://gitlab.haskell.org/-/snippets/2824
@alanz Is this a known issue? I suppose I could fix it in my branch, but then it wouldn't be solely a refactoring, more of bugfix.