summaryrefslogtreecommitdiff
path: root/testsuite/tests/ghc-api
diff options
context:
space:
mode:
authorAlan Zimmerman <alan.zimm@gmail.com>2015-11-16 19:43:34 +0200
committerAlan Zimmerman <alan.zimm@gmail.com>2015-11-16 19:43:34 +0200
commitfe95463bdf42651d53d1edc7723491664257cc5a (patch)
treef43452b6cbe66b0d83e0a9fa65b83a5f05989833 /testsuite/tests/ghc-api
parent46a03fbec6a02761db079d1746532565f34c340f (diff)
downloadhaskell-fe95463bdf42651d53d1edc7723491664257cc5a.tar.gz
ApiAnnotations: Add SourceText for unicode tokens
Summary: At the moment there is no way to tell if a given token used its unicode variant or its normal one, except to look at the length of the token. This fails for the unicode '*'. Expose the original source text for unicode variants so that API Annotations can capture them specifically. Test Plan: ./validate Reviewers: mpickering, austin, bgamari Reviewed By: bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D1473 GHC Trac Issues: #11018
Diffstat (limited to 'testsuite/tests/ghc-api')
-rw-r--r--testsuite/tests/ghc-api/annotations-literals/literals.stdout8
-rw-r--r--testsuite/tests/ghc-api/annotations/Makefile4
-rw-r--r--testsuite/tests/ghc-api/annotations/T10307.stdout1
-rw-r--r--testsuite/tests/ghc-api/annotations/T10312.stdout2
-rw-r--r--testsuite/tests/ghc-api/annotations/T10357.stdout1
-rw-r--r--testsuite/tests/ghc-api/annotations/T10358.stdout5
-rw-r--r--testsuite/tests/ghc-api/annotations/T11018.stderr40
-rw-r--r--testsuite/tests/ghc-api/annotations/T11018.stdout203
-rw-r--r--testsuite/tests/ghc-api/annotations/Test11018.hs52
-rw-r--r--testsuite/tests/ghc-api/annotations/all.T1
-rw-r--r--testsuite/tests/ghc-api/annotations/exampleTest.stdout2
-rw-r--r--testsuite/tests/ghc-api/annotations/listcomps.stdout2
-rw-r--r--testsuite/tests/ghc-api/annotations/parseTree.stdout4
13 files changed, 321 insertions, 4 deletions
diff --git a/testsuite/tests/ghc-api/annotations-literals/literals.stdout b/testsuite/tests/ghc-api/annotations-literals/literals.stdout
index ff4f63f183..12a0f4e35e 100644
--- a/testsuite/tests/ghc-api/annotations-literals/literals.stdout
+++ b/testsuite/tests/ghc-api/annotations-literals/literals.stdout
@@ -14,7 +14,7 @@
(LiteralsTest.hs:4:3,ITvarid "y",[y]),
-(LiteralsTest.hs:4:5-6,ITdcolon,[::]),
+(LiteralsTest.hs:4:5-6,ITdcolon NormalSyntax,[::]),
(LiteralsTest.hs:4:8-10,ITconid "Int",[Int]),
@@ -38,7 +38,7 @@
(LiteralsTest.hs:8:1,ITvarid "s",[s]),
-(LiteralsTest.hs:8:3-4,ITdcolon,[::]),
+(LiteralsTest.hs:8:3-4,ITdcolon NormalSyntax,[::]),
(LiteralsTest.hs:8:6-11,ITconid "String",[String]),
@@ -54,7 +54,7 @@
(LiteralsTest.hs:11:1,ITvarid "c",[c]),
-(LiteralsTest.hs:11:3-4,ITdcolon,[::]),
+(LiteralsTest.hs:11:3-4,ITdcolon NormalSyntax,[::]),
(LiteralsTest.hs:11:6-9,ITconid "Char",[Char]),
@@ -70,7 +70,7 @@
(LiteralsTest.hs:14:1,ITvarid "d",[d]),
-(LiteralsTest.hs:14:3-4,ITdcolon,[::]),
+(LiteralsTest.hs:14:3-4,ITdcolon NormalSyntax,[::]),
(LiteralsTest.hs:14:6-11,ITconid "Double",[Double]),
diff --git a/testsuite/tests/ghc-api/annotations/Makefile b/testsuite/tests/ghc-api/annotations/Makefile
index 45a5297c32..631e7e3c1e 100644
--- a/testsuite/tests/ghc-api/annotations/Makefile
+++ b/testsuite/tests/ghc-api/annotations/Makefile
@@ -102,3 +102,7 @@ T10313:
rm -f stringSource.o stringSource.hi
'$(TEST_HC)' $(TEST_HC_OPTS) --make -v0 -package ghc stringSource
./stringSource "`'$(TEST_HC)' $(TEST_HC_OPTS) --print-libdir | tr -d '\r'`" Test10313
+
+.PHONY: T11018
+T11018:
+ $(CHECK_API_ANNOTATIONS) "`'$(TEST_HC)' $(TEST_HC_OPTS) --print-libdir | tr -d '\r'`" Test11018
diff --git a/testsuite/tests/ghc-api/annotations/T10307.stdout b/testsuite/tests/ghc-api/annotations/T10307.stdout
index 48cbca6cd0..26a255dca9 100644
--- a/testsuite/tests/ghc-api/annotations/T10307.stdout
+++ b/testsuite/tests/ghc-api/annotations/T10307.stdout
@@ -12,6 +12,7 @@
((Test10307.hs:5:3-34,AnnDcolon), [Test10307.hs:5:31-32]),
((Test10307.hs:5:3-34,AnnSemi), [Test10307.hs:6:3]),
((Test10307.hs:5:3-34,AnnType), [Test10307.hs:5:3-6]),
+((Test10307.hs:5:34,AnnStar), [Test10307.hs:5:34]),
((Test10307.hs:6:3-34,AnnEqual), [Test10307.hs:6:31]),
((Test10307.hs:6:3-34,AnnType), [Test10307.hs:6:3-6]),
((Test10307.hs:6:8-34,AnnEqual), [Test10307.hs:6:31]),
diff --git a/testsuite/tests/ghc-api/annotations/T10312.stdout b/testsuite/tests/ghc-api/annotations/T10312.stdout
index 00f25444cc..61fea45a33 100644
--- a/testsuite/tests/ghc-api/annotations/T10312.stdout
+++ b/testsuite/tests/ghc-api/annotations/T10312.stdout
@@ -33,6 +33,7 @@
((Test10312.hs:(16,19)-(20,19),AnnVbar), [Test10312.hs:17:19]),
((Test10312.hs:16:21-25,AnnVal), [Test10312.hs:16:23]),
((Test10312.hs:16:21-29,AnnVal), [Test10312.hs:16:27]),
+((Test10312.hs:16:27,AnnStar), [Test10312.hs:16:27]),
((Test10312.hs:17:21-32,AnnComma), [Test10312.hs:18:19]),
((Test10312.hs:17:21-32,AnnLarrow), [Test10312.hs:17:23-24]),
((Test10312.hs:17:26-32,AnnCloseS), [Test10312.hs:17:32]),
@@ -59,6 +60,7 @@
((Test10312.hs:(23,20)-(27,20),AnnVbar), [Test10312.hs:24:20]),
((Test10312.hs:23:22-26,AnnVal), [Test10312.hs:23:24]),
((Test10312.hs:23:22-30,AnnVal), [Test10312.hs:23:28]),
+((Test10312.hs:23:28,AnnStar), [Test10312.hs:23:28]),
((Test10312.hs:24:22-33,AnnLarrow), [Test10312.hs:24:24-25]),
((Test10312.hs:24:22-33,AnnVbar), [Test10312.hs:25:20]),
((Test10312.hs:24:27-33,AnnCloseS), [Test10312.hs:24:33]),
diff --git a/testsuite/tests/ghc-api/annotations/T10357.stdout b/testsuite/tests/ghc-api/annotations/T10357.stdout
index 15d5139be5..cbbb84e2ee 100644
--- a/testsuite/tests/ghc-api/annotations/T10357.stdout
+++ b/testsuite/tests/ghc-api/annotations/T10357.stdout
@@ -31,6 +31,7 @@
((Test10357.hs:7:28,AnnComma), [Test10357.hs:7:29]),
((Test10357.hs:7:31-36,AnnVal), [Test10357.hs:7:33]),
((Test10357.hs:7:31-40,AnnVal), [Test10357.hs:7:38]),
+((Test10357.hs:7:33,AnnStar), [Test10357.hs:7:33]),
((Test10357.hs:7:43-52,AnnBackquote), [Test10357.hs:7:43, Test10357.hs:7:52]),
((Test10357.hs:7:43-52,AnnVal), [Test10357.hs:7:44-51]),
((Test10357.hs:8:18-59,AnnCloseP), [Test10357.hs:8:59]),
diff --git a/testsuite/tests/ghc-api/annotations/T10358.stdout b/testsuite/tests/ghc-api/annotations/T10358.stdout
index ae1ec8587f..2bcbf68c09 100644
--- a/testsuite/tests/ghc-api/annotations/T10358.stdout
+++ b/testsuite/tests/ghc-api/annotations/T10358.stdout
@@ -15,18 +15,23 @@
((Test10358.hs:5:7-16,AnnEqual), [Test10358.hs:5:12]),
((Test10358.hs:5:7-16,AnnSemi), [Test10358.hs:5:17]),
((Test10358.hs:5:14-16,AnnVal), [Test10358.hs:5:15]),
+((Test10358.hs:5:15,AnnStar), [Test10358.hs:5:15]),
((Test10358.hs:5:19-22,AnnBang), [Test10358.hs:5:19]),
((Test10358.hs:5:19-32,AnnEqual), [Test10358.hs:5:24]),
((Test10358.hs:5:19-32,AnnSemi), [Test10358.hs:6:7]),
((Test10358.hs:5:26-32,AnnVal), [Test10358.hs:5:29]),
+((Test10358.hs:5:29,AnnStar), [Test10358.hs:5:29]),
((Test10358.hs:6:7-16,AnnEqual), [Test10358.hs:6:10]),
((Test10358.hs:6:7-16,AnnFunId), [Test10358.hs:6:7-8]),
((Test10358.hs:6:7-16,AnnSemi), [Test10358.hs:7:7]),
((Test10358.hs:6:12-14,AnnVal), [Test10358.hs:6:13]),
((Test10358.hs:6:12-16,AnnVal), [Test10358.hs:6:15]),
+((Test10358.hs:6:13,AnnStar), [Test10358.hs:6:13]),
+((Test10358.hs:6:15,AnnStar), [Test10358.hs:6:15]),
((Test10358.hs:7:7-17,AnnEqual), [Test10358.hs:7:10]),
((Test10358.hs:7:7-17,AnnFunId), [Test10358.hs:7:7-8]),
((Test10358.hs:7:12-17,AnnVal), [Test10358.hs:7:14]),
+((Test10358.hs:7:14,AnnStar), [Test10358.hs:7:14]),
((<no location info>,AnnEofPos), [Test10358.hs:9:1])
]
diff --git a/testsuite/tests/ghc-api/annotations/T11018.stderr b/testsuite/tests/ghc-api/annotations/T11018.stderr
new file mode 100644
index 0000000000..c58942f4c7
--- /dev/null
+++ b/testsuite/tests/ghc-api/annotations/T11018.stderr
@@ -0,0 +1,40 @@
+
+Test11018.hs:12:26: error:
+ Illegal kind signature: ‘* -> *’
+ Perhaps you intended to use KindSignatures
+ In the data type declaration for ‘Recorder’
+
+Test11018.hs:14:23: error:
+ Not in scope: type constructor or class ‘FinalizerHandle’
+
+Test11018.hs:17:6: error:
+ Not in scope: type constructor or class ‘Arrow’
+
+Test11018.hs:20:7: error:
+ Not in scope: type constructor or class ‘Arrow’
+
+Test11018.hs:23:6: error:
+ Not in scope: type constructor or class ‘ArrowApply’
+
+Test11018.hs:26:7: error:
+ Not in scope: type constructor or class ‘ArrowApply’
+
+Test11018.hs:37:27: error:
+ Illegal kind signature: ‘* -> *’
+ Perhaps you intended to use KindSignatures
+ In the data type declaration for ‘RecorderU’
+
+Test11018.hs:39:23: error:
+ Not in scope: type constructor or class ‘FinalizerHandle’
+
+Test11018.hs:42:7: error:
+ Not in scope: type constructor or class ‘Arrow’
+
+Test11018.hs:45:8: error:
+ Not in scope: type constructor or class ‘Arrow’
+
+Test11018.hs:48:7: error:
+ Not in scope: type constructor or class ‘ArrowApply’
+
+Test11018.hs:51:8: error:
+ Not in scope: type constructor or class ‘ArrowApply’
diff --git a/testsuite/tests/ghc-api/annotations/T11018.stdout b/testsuite/tests/ghc-api/annotations/T11018.stdout
new file mode 100644
index 0000000000..d05c13f213
--- /dev/null
+++ b/testsuite/tests/ghc-api/annotations/T11018.stdout
@@ -0,0 +1,203 @@
+---Problems (should be empty list)---
+[]
+---Annotations-----------------------
+-- SrcSpan the annotation is attached to, AnnKeywordId,
+-- list of locations the keyword item appears in
+[
+((Test11018.hs:1:1,AnnModule), [Test11018.hs:4:1-6]),
+((Test11018.hs:1:1,AnnWhere), [Test11018.hs:4:18-22]),
+((Test11018.hs:6:1-36,AnnDcolon), [Test11018.hs:6:12-13]),
+((Test11018.hs:6:1-36,AnnSemi), [Test11018.hs:7:1]),
+((Test11018.hs:6:15-36,AnnDot), [Test11018.hs:6:24]),
+((Test11018.hs:6:15-36,AnnForall), [Test11018.hs:6:15-20]),
+((Test11018.hs:6:26-36,AnnRarrow), [Test11018.hs:6:28-29]),
+((Test11018.hs:(7,1)-(9,10),AnnEqual), [Test11018.hs:7:14]),
+((Test11018.hs:(7,1)-(9,10),AnnFunId), [Test11018.hs:7:1-10]),
+((Test11018.hs:(7,1)-(9,10),AnnSemi), [Test11018.hs:12:1]),
+((Test11018.hs:(7,16)-(9,10),AnnDo), [Test11018.hs:7:16-17]),
+((Test11018.hs:8:3-15,AnnLarrow), [Test11018.hs:8:5-6]),
+((Test11018.hs:8:3-15,AnnSemi), [Test11018.hs:9:3]),
+((Test11018.hs:(12,1)-(15,7),AnnData), [Test11018.hs:12:1-4]),
+((Test11018.hs:(12,1)-(15,7),AnnEqual), [Test11018.hs:13:5]),
+((Test11018.hs:(12,1)-(15,7),AnnSemi), [Test11018.hs:17:1]),
+((Test11018.hs:12:21-32,AnnCloseP), [Test11018.hs:12:32]),
+((Test11018.hs:12:21-32,AnnDcolonU), [Test11018.hs:12:24]),
+((Test11018.hs:12:21-32,AnnOpenP), [Test11018.hs:12:21]),
+((Test11018.hs:12:26,AnnStar), [Test11018.hs:12:26]),
+((Test11018.hs:12:26-31,AnnRarrow), [Test11018.hs:12:28-29]),
+((Test11018.hs:12:31,AnnStar), [Test11018.hs:12:31]),
+((Test11018.hs:(13,16)-(15,7),AnnCloseC), [Test11018.hs:15:7]),
+((Test11018.hs:(13,16)-(15,7),AnnOpenC), [Test11018.hs:13:16]),
+((Test11018.hs:14:9-40,AnnDcolon), [Test11018.hs:14:18-19]),
+((Test11018.hs:14:21-40,AnnBang), [Test11018.hs:14:21]),
+((Test11018.hs:14:22-40,AnnCloseP), [Test11018.hs:14:40]),
+((Test11018.hs:14:22-40,AnnOpenP), [Test11018.hs:14:22]),
+((Test11018.hs:17:1-35,AnnDcolon), [Test11018.hs:17:3-4]),
+((Test11018.hs:17:1-35,AnnSemi), [Test11018.hs:18:1]),
+((Test11018.hs:17:6-12,AnnDarrow), [Test11018.hs:17:14-15]),
+((Test11018.hs:17:19-31,AnnCloseP), [Test11018.hs:17:31]),
+((Test11018.hs:17:19-31,AnnOpenP), [Test11018.hs:17:19]),
+((Test11018.hs:17:20-22,AnnComma), [Test11018.hs:17:23]),
+((Test11018.hs:17:24-26,AnnComma), [Test11018.hs:17:27]),
+((Test11018.hs:18:1-34,AnnEqual), [Test11018.hs:18:3]),
+((Test11018.hs:18:1-34,AnnFunId), [Test11018.hs:18:1]),
+((Test11018.hs:18:1-34,AnnSemi), [Test11018.hs:20:1]),
+((Test11018.hs:18:5-34,AnnProc), [Test11018.hs:18:5-8]),
+((Test11018.hs:18:5-34,AnnRarrow), [Test11018.hs:18:18-19]),
+((Test11018.hs:18:10-16,AnnCloseP), [Test11018.hs:18:16]),
+((Test11018.hs:18:10-16,AnnOpenP), [Test11018.hs:18:10]),
+((Test11018.hs:18:11,AnnComma), [Test11018.hs:18:12]),
+((Test11018.hs:18:13,AnnComma), [Test11018.hs:18:14]),
+((Test11018.hs:18:21-34,Annlarrowtail), [Test11018.hs:18:29-30]),
+((Test11018.hs:18:32-34,AnnVal), [Test11018.hs:18:33]),
+((Test11018.hs:20:1-36,AnnDcolon), [Test11018.hs:20:4-5]),
+((Test11018.hs:20:1-36,AnnSemi), [Test11018.hs:21:1]),
+((Test11018.hs:20:7-13,AnnDarrow), [Test11018.hs:20:15-16]),
+((Test11018.hs:20:20-32,AnnCloseP), [Test11018.hs:20:32]),
+((Test11018.hs:20:20-32,AnnOpenP), [Test11018.hs:20:20]),
+((Test11018.hs:20:21-23,AnnComma), [Test11018.hs:20:24]),
+((Test11018.hs:20:25-27,AnnComma), [Test11018.hs:20:28]),
+((Test11018.hs:21:1-35,AnnEqual), [Test11018.hs:21:4]),
+((Test11018.hs:21:1-35,AnnFunId), [Test11018.hs:21:1-2]),
+((Test11018.hs:21:1-35,AnnSemi), [Test11018.hs:23:1]),
+((Test11018.hs:21:6-35,AnnProc), [Test11018.hs:21:6-9]),
+((Test11018.hs:21:6-35,AnnRarrow), [Test11018.hs:21:19-20]),
+((Test11018.hs:21:11-17,AnnCloseP), [Test11018.hs:21:17]),
+((Test11018.hs:21:11-17,AnnOpenP), [Test11018.hs:21:11]),
+((Test11018.hs:21:12,AnnComma), [Test11018.hs:21:13]),
+((Test11018.hs:21:14,AnnComma), [Test11018.hs:21:15]),
+((Test11018.hs:21:22-35,Annrarrowtail), [Test11018.hs:21:30-31]),
+((Test11018.hs:21:33-35,AnnVal), [Test11018.hs:21:34]),
+((Test11018.hs:23:1-49,AnnDcolon), [Test11018.hs:23:3-4]),
+((Test11018.hs:23:1-49,AnnSemi), [Test11018.hs:24:1]),
+((Test11018.hs:23:6-17,AnnDarrow), [Test11018.hs:23:19-20]),
+((Test11018.hs:23:22-49,AnnRarrow), [Test11018.hs:23:26-27]),
+((Test11018.hs:23:31-45,AnnCloseP), [Test11018.hs:23:45]),
+((Test11018.hs:23:31-45,AnnOpenP), [Test11018.hs:23:31]),
+((Test11018.hs:23:32-40,AnnComma), [Test11018.hs:23:41]),
+((Test11018.hs:24:1-29,AnnEqual), [Test11018.hs:24:5]),
+((Test11018.hs:24:1-29,AnnFunId), [Test11018.hs:24:1]),
+((Test11018.hs:24:1-29,AnnSemi), [Test11018.hs:26:1]),
+((Test11018.hs:24:7-29,AnnProc), [Test11018.hs:24:7-10]),
+((Test11018.hs:24:7-29,AnnRarrow), [Test11018.hs:24:18-19]),
+((Test11018.hs:24:12-16,AnnCloseP), [Test11018.hs:24:16]),
+((Test11018.hs:24:12-16,AnnOpenP), [Test11018.hs:24:12]),
+((Test11018.hs:24:13,AnnComma), [Test11018.hs:24:14]),
+((Test11018.hs:24:21-29,AnnLarrowtail), [Test11018.hs:24:23-25]),
+((Test11018.hs:24:27-29,AnnVal), [Test11018.hs:24:28]),
+((Test11018.hs:26:1-50,AnnDcolon), [Test11018.hs:26:4-5]),
+((Test11018.hs:26:1-50,AnnSemi), [Test11018.hs:27:1]),
+((Test11018.hs:26:7-18,AnnDarrow), [Test11018.hs:26:20-21]),
+((Test11018.hs:26:23-50,AnnRarrow), [Test11018.hs:26:27-28]),
+((Test11018.hs:26:32-46,AnnCloseP), [Test11018.hs:26:46]),
+((Test11018.hs:26:32-46,AnnOpenP), [Test11018.hs:26:32]),
+((Test11018.hs:26:33-41,AnnComma), [Test11018.hs:26:42]),
+((Test11018.hs:27:1-30,AnnEqual), [Test11018.hs:27:6]),
+((Test11018.hs:27:1-30,AnnFunId), [Test11018.hs:27:1-2]),
+((Test11018.hs:27:1-30,AnnSemi), [Test11018.hs:31:1]),
+((Test11018.hs:27:8-30,AnnProc), [Test11018.hs:27:8-11]),
+((Test11018.hs:27:8-30,AnnRarrow), [Test11018.hs:27:19-20]),
+((Test11018.hs:27:13-17,AnnCloseP), [Test11018.hs:27:17]),
+((Test11018.hs:27:13-17,AnnOpenP), [Test11018.hs:27:13]),
+((Test11018.hs:27:14,AnnComma), [Test11018.hs:27:15]),
+((Test11018.hs:27:22-30,AnnRarrowtail), [Test11018.hs:27:24-26]),
+((Test11018.hs:27:28-30,AnnVal), [Test11018.hs:27:29]),
+((Test11018.hs:31:1-26,AnnDcolonU), [Test11018.hs:31:9]),
+((Test11018.hs:31:1-26,AnnSemi), [Test11018.hs:32:1]),
+((Test11018.hs:31:11-26,AnnDot), [Test11018.hs:31:15]),
+((Test11018.hs:31:11-26,AnnForallU), [Test11018.hs:31:11]),
+((Test11018.hs:31:17-26,AnnRarrowU), [Test11018.hs:31:19]),
+((Test11018.hs:(32,1)-(34,10),AnnEqual), [Test11018.hs:32:11]),
+((Test11018.hs:(32,1)-(34,10),AnnFunId), [Test11018.hs:32:1-7]),
+((Test11018.hs:(32,1)-(34,10),AnnSemi), [Test11018.hs:37:1]),
+((Test11018.hs:(32,13)-(34,10),AnnDo), [Test11018.hs:32:13-14]),
+((Test11018.hs:33:3-14,AnnLarrowU), [Test11018.hs:33:5]),
+((Test11018.hs:33:3-14,AnnSemi), [Test11018.hs:34:3]),
+((Test11018.hs:(37,1)-(40,7),AnnData), [Test11018.hs:37:1-4]),
+((Test11018.hs:(37,1)-(40,7),AnnEqual), [Test11018.hs:38:5]),
+((Test11018.hs:(37,1)-(40,7),AnnSemi), [Test11018.hs:42:1]),
+((Test11018.hs:37:22-32,AnnCloseP), [Test11018.hs:37:32]),
+((Test11018.hs:37:22-32,AnnDcolonU), [Test11018.hs:37:25]),
+((Test11018.hs:37:22-32,AnnOpenP), [Test11018.hs:37:22]),
+((Test11018.hs:37:27,AnnStarU), [Test11018.hs:37:27]),
+((Test11018.hs:37:27-31,AnnRarrowU), [Test11018.hs:37:29]),
+((Test11018.hs:37:31,AnnStarU), [Test11018.hs:37:31]),
+((Test11018.hs:(38,17)-(40,7),AnnCloseC), [Test11018.hs:40:7]),
+((Test11018.hs:(38,17)-(40,7),AnnOpenC), [Test11018.hs:38:17]),
+((Test11018.hs:39:9-40,AnnDcolonU), [Test11018.hs:39:19]),
+((Test11018.hs:39:21-40,AnnBang), [Test11018.hs:39:21]),
+((Test11018.hs:39:22-40,AnnCloseP), [Test11018.hs:39:40]),
+((Test11018.hs:39:22-40,AnnOpenP), [Test11018.hs:39:22]),
+((Test11018.hs:42:1-36,AnnDcolon), [Test11018.hs:42:4-5]),
+((Test11018.hs:42:1-36,AnnSemi), [Test11018.hs:43:1]),
+((Test11018.hs:42:7-13,AnnDarrowU), [Test11018.hs:42:16]),
+((Test11018.hs:42:20-32,AnnCloseP), [Test11018.hs:42:32]),
+((Test11018.hs:42:20-32,AnnOpenP), [Test11018.hs:42:20]),
+((Test11018.hs:42:21-23,AnnComma), [Test11018.hs:42:24]),
+((Test11018.hs:42:25-27,AnnComma), [Test11018.hs:42:28]),
+((Test11018.hs:43:1-34,AnnEqual), [Test11018.hs:43:4]),
+((Test11018.hs:43:1-34,AnnFunId), [Test11018.hs:43:1-2]),
+((Test11018.hs:43:1-34,AnnSemi), [Test11018.hs:45:1]),
+((Test11018.hs:43:6-34,AnnProc), [Test11018.hs:43:6-9]),
+((Test11018.hs:43:6-34,AnnRarrow), [Test11018.hs:43:19-20]),
+((Test11018.hs:43:11-17,AnnCloseP), [Test11018.hs:43:17]),
+((Test11018.hs:43:11-17,AnnOpenP), [Test11018.hs:43:11]),
+((Test11018.hs:43:12,AnnComma), [Test11018.hs:43:13]),
+((Test11018.hs:43:14,AnnComma), [Test11018.hs:43:15]),
+((Test11018.hs:43:22-34,AnnLarrowtailU), [Test11018.hs:43:30]),
+((Test11018.hs:43:32-34,AnnVal), [Test11018.hs:43:33]),
+((Test11018.hs:45:1-36,AnnDcolon), [Test11018.hs:45:5-6]),
+((Test11018.hs:45:1-36,AnnSemi), [Test11018.hs:46:1]),
+((Test11018.hs:45:8-14,AnnDarrowU), [Test11018.hs:45:16]),
+((Test11018.hs:45:20-32,AnnCloseP), [Test11018.hs:45:32]),
+((Test11018.hs:45:20-32,AnnOpenP), [Test11018.hs:45:20]),
+((Test11018.hs:45:21-23,AnnComma), [Test11018.hs:45:24]),
+((Test11018.hs:45:25-27,AnnComma), [Test11018.hs:45:28]),
+((Test11018.hs:46:1-35,AnnEqual), [Test11018.hs:46:5]),
+((Test11018.hs:46:1-35,AnnFunId), [Test11018.hs:46:1-3]),
+((Test11018.hs:46:1-35,AnnSemi), [Test11018.hs:48:1]),
+((Test11018.hs:46:7-35,AnnProc), [Test11018.hs:46:7-10]),
+((Test11018.hs:46:7-35,AnnRarrow), [Test11018.hs:46:20-21]),
+((Test11018.hs:46:12-18,AnnCloseP), [Test11018.hs:46:18]),
+((Test11018.hs:46:12-18,AnnOpenP), [Test11018.hs:46:12]),
+((Test11018.hs:46:13,AnnComma), [Test11018.hs:46:14]),
+((Test11018.hs:46:15,AnnComma), [Test11018.hs:46:16]),
+((Test11018.hs:46:23-35,AnnrarrowtailU), [Test11018.hs:46:31]),
+((Test11018.hs:46:33-35,AnnVal), [Test11018.hs:46:34]),
+((Test11018.hs:48:1-49,AnnDcolon), [Test11018.hs:48:4-5]),
+((Test11018.hs:48:1-49,AnnSemi), [Test11018.hs:49:1]),
+((Test11018.hs:48:7-18,AnnDarrowU), [Test11018.hs:48:20]),
+((Test11018.hs:48:22-49,AnnRarrow), [Test11018.hs:48:26-27]),
+((Test11018.hs:48:31-45,AnnCloseP), [Test11018.hs:48:45]),
+((Test11018.hs:48:31-45,AnnOpenP), [Test11018.hs:48:31]),
+((Test11018.hs:48:32-40,AnnComma), [Test11018.hs:48:41]),
+((Test11018.hs:49:1-28,AnnEqual), [Test11018.hs:49:6]),
+((Test11018.hs:49:1-28,AnnFunId), [Test11018.hs:49:1-2]),
+((Test11018.hs:49:1-28,AnnSemi), [Test11018.hs:51:1]),
+((Test11018.hs:49:8-28,AnnProc), [Test11018.hs:49:8-11]),
+((Test11018.hs:49:8-28,AnnRarrow), [Test11018.hs:49:19-20]),
+((Test11018.hs:49:13-17,AnnCloseP), [Test11018.hs:49:17]),
+((Test11018.hs:49:13-17,AnnOpenP), [Test11018.hs:49:13]),
+((Test11018.hs:49:14,AnnComma), [Test11018.hs:49:15]),
+((Test11018.hs:49:22-28,AnnLarrowtailU), [Test11018.hs:49:24]),
+((Test11018.hs:49:26-28,AnnVal), [Test11018.hs:49:27]),
+((Test11018.hs:51:1-50,AnnDcolon), [Test11018.hs:51:5-6]),
+((Test11018.hs:51:1-50,AnnSemi), [Test11018.hs:52:1]),
+((Test11018.hs:51:8-19,AnnDarrowU), [Test11018.hs:51:21]),
+((Test11018.hs:51:23-50,AnnRarrow), [Test11018.hs:51:27-28]),
+((Test11018.hs:51:32-46,AnnCloseP), [Test11018.hs:51:46]),
+((Test11018.hs:51:32-46,AnnOpenP), [Test11018.hs:51:32]),
+((Test11018.hs:51:33-41,AnnComma), [Test11018.hs:51:42]),
+((Test11018.hs:52:1-29,AnnEqual), [Test11018.hs:52:7]),
+((Test11018.hs:52:1-29,AnnFunId), [Test11018.hs:52:1-3]),
+((Test11018.hs:52:1-29,AnnSemi), [Test11018.hs:53:1]),
+((Test11018.hs:52:9-29,AnnProc), [Test11018.hs:52:9-12]),
+((Test11018.hs:52:9-29,AnnRarrow), [Test11018.hs:52:20-21]),
+((Test11018.hs:52:14-18,AnnCloseP), [Test11018.hs:52:18]),
+((Test11018.hs:52:14-18,AnnOpenP), [Test11018.hs:52:14]),
+((Test11018.hs:52:15,AnnComma), [Test11018.hs:52:16]),
+((Test11018.hs:52:23-29,AnnRarrowtailU), [Test11018.hs:52:25]),
+((Test11018.hs:52:27-29,AnnVal), [Test11018.hs:52:28]),
+((<no location info>,AnnEofPos), [Test11018.hs:53:1])
+]
+
diff --git a/testsuite/tests/ghc-api/annotations/Test11018.hs b/testsuite/tests/ghc-api/annotations/Test11018.hs
new file mode 100644
index 0000000000..e1d020540e
--- /dev/null
+++ b/testsuite/tests/ghc-api/annotations/Test11018.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE Arrows #-}
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE UnicodeSyntax #-}
+module Test11018 where
+
+nonUnicode :: forall a . a -> IO Int
+nonUnicode _ = do
+ x <- readChar
+ return 4
+
+-- ^ An opaque ESD handle for recording data from the soundcard via ESD.
+data Recorder fr ch (r ∷ * -> *)
+ = Recorder {
+ reCloseH :: !(FinalizerHandle r)
+ }
+
+f :: Arrow a => a (Int,Int,Int) Int
+f = proc (x,y,z) -> returnA -< x+y
+
+f2 :: Arrow a => a (Int,Int,Int) Int
+f2 = proc (x,y,z) -> returnA >- x+y
+
+g :: ArrowApply a => Int -> a (a Int Int,Int) Int
+g y = proc (x,z) -> x -<< 2+y
+
+g2 :: ArrowApply a => Int -> a (a Int Int,Int) Int
+g2 y = proc (x,z) -> x >>- 2+y
+
+-- -------------------------------------
+
+unicode ∷ ∀ a . a → IO Int
+unicode _ = do
+ x ← readChar
+ return 4
+
+-- ^ An opaque ESD handle for recording data from the soundcard via ESD.
+data RecorderU fr ch (r ∷ ★ → ★)
+ = RecorderU {
+ reCloseHU ∷ !(FinalizerHandle r)
+ }
+
+fU :: Arrow a ⇒ a (Int,Int,Int) Int
+fU = proc (x,y,z) -> returnA ⤙ x+y
+
+f2U :: Arrow a ⇒ a (Int,Int,Int) Int
+f2U = proc (x,y,z) -> returnA ⤚ x+y
+
+gU :: ArrowApply a ⇒ Int -> a (a Int Int,Int) Int
+gU y = proc (x,z) -> x ⤛ 2+y
+
+g2U :: ArrowApply a ⇒ Int -> a (a Int Int,Int) Int
+g2U y = proc (x,z) -> x ⤜ 2+y
diff --git a/testsuite/tests/ghc-api/annotations/all.T b/testsuite/tests/ghc-api/annotations/all.T
index 2d605c45f8..591f5bf2e7 100644
--- a/testsuite/tests/ghc-api/annotations/all.T
+++ b/testsuite/tests/ghc-api/annotations/all.T
@@ -18,4 +18,5 @@ test('T10354', normal, run_command, ['$MAKE -s --no-print-directory T10354'
test('T10396', normal, run_command, ['$MAKE -s --no-print-directory T10396'])
test('T10399', normal, run_command, ['$MAKE -s --no-print-directory T10399'])
test('T10313', normal, run_command, ['$MAKE -s --no-print-directory T10313'])
+test('T11018', normal, run_command, ['$MAKE -s --no-print-directory T11018'])
test('bundle-export', normal, run_command, ['$MAKE -s --no-print-directory bundle-export'])
diff --git a/testsuite/tests/ghc-api/annotations/exampleTest.stdout b/testsuite/tests/ghc-api/annotations/exampleTest.stdout
index c50df4848e..9ae9f2300a 100644
--- a/testsuite/tests/ghc-api/annotations/exampleTest.stdout
+++ b/testsuite/tests/ghc-api/annotations/exampleTest.stdout
@@ -65,7 +65,9 @@
((AnnotationTuple.hs:18:1-28,AnnDcolon), [AnnotationTuple.hs:18:20-21]),
((AnnotationTuple.hs:18:1-28,AnnFamily), [AnnotationTuple.hs:18:6-11]),
((AnnotationTuple.hs:18:1-28,AnnSemi), [AnnotationTuple.hs:19:1]),
+((AnnotationTuple.hs:18:23,AnnStar), [AnnotationTuple.hs:18:23]),
((AnnotationTuple.hs:18:23-28,AnnRarrow), [AnnotationTuple.hs:18:25-26]),
+((AnnotationTuple.hs:18:28,AnnStar), [AnnotationTuple.hs:18:28]),
((AnnotationTuple.hs:(20,1)-(24,14),AnnFunId), [AnnotationTuple.hs:20:1-5]),
((AnnotationTuple.hs:(20,1)-(24,14),AnnSemi), [AnnotationTuple.hs:25:1]),
((AnnotationTuple.hs:(21,7)-(24,14),AnnEqual), [AnnotationTuple.hs:24:7]),
diff --git a/testsuite/tests/ghc-api/annotations/listcomps.stdout b/testsuite/tests/ghc-api/annotations/listcomps.stdout
index 1c0b8e5ce4..754c170f39 100644
--- a/testsuite/tests/ghc-api/annotations/listcomps.stdout
+++ b/testsuite/tests/ghc-api/annotations/listcomps.stdout
@@ -97,6 +97,8 @@
(AK ListComprehensions.hs:18:22-30 AnnVal = [ListComprehensions.hs:18:28])
+(AK ListComprehensions.hs:18:28 AnnStar = [ListComprehensions.hs:18:28])
+
(AK ListComprehensions.hs:19:22-33 AnnLarrow = [ListComprehensions.hs:19:24-25])
(AK ListComprehensions.hs:19:22-33 AnnVbar = [ListComprehensions.hs:20:20])
diff --git a/testsuite/tests/ghc-api/annotations/parseTree.stdout b/testsuite/tests/ghc-api/annotations/parseTree.stdout
index 7d651aaffb..d3e1a5a7dd 100644
--- a/testsuite/tests/ghc-api/annotations/parseTree.stdout
+++ b/testsuite/tests/ghc-api/annotations/parseTree.stdout
@@ -132,8 +132,12 @@
(AK AnnotationTuple.hs:18:1-28 AnnSemi = [AnnotationTuple.hs:19:1])
+(AK AnnotationTuple.hs:18:23 AnnStar = [AnnotationTuple.hs:18:23])
+
(AK AnnotationTuple.hs:18:23-28 AnnRarrow = [AnnotationTuple.hs:18:25-26])
+(AK AnnotationTuple.hs:18:28 AnnStar = [AnnotationTuple.hs:18:28])
+
(AK AnnotationTuple.hs:(20,1)-(24,14) AnnFunId = [AnnotationTuple.hs:20:1-5])
(AK AnnotationTuple.hs:(20,1)-(24,14) AnnSemi = [AnnotationTuple.hs:25:1])