summaryrefslogtreecommitdiff
path: root/compiler/parser
diff options
context:
space:
mode:
authorKevin Buhr <buhr@asaurus.net>2019-07-27 13:25:31 -0500
committerKevin Buhr <buhr@asaurus.net>2019-07-27 13:25:31 -0500
commit05ed304ef456e3e2a22355bd25a011a10fcff29e (patch)
treebe270cd462f07609e2cf1c90076f12749f1e52d6 /compiler/parser
parent26314386789e3717427bab4bcb97755535bb12d4 (diff)
downloadhaskell-wip/B16999.tar.gz
Disallow (->) as a data constructor in "data" declaration (fixes #16999)wip/B16999
Diffstat (limited to 'compiler/parser')
-rw-r--r--compiler/parser/RdrHsSyn.hs4
1 files changed, 3 insertions, 1 deletions
diff --git a/compiler/parser/RdrHsSyn.hs b/compiler/parser/RdrHsSyn.hs
index a574fbe338..defad0fb51 100644
--- a/compiler/parser/RdrHsSyn.hs
+++ b/compiler/parser/RdrHsSyn.hs
@@ -565,13 +565,15 @@ done.
tyConToDataCon :: SrcSpan -> RdrName -> Either (SrcSpan, SDoc) (Located RdrName)
tyConToDataCon loc tc
| isTcOcc occ || isDataOcc occ
- , isLexCon (occNameFS occ)
+ , isLexCon cs
+ , cs /= fsLit "->" -- Fixes #16999
= return (cL loc (setRdrNameSpace tc srcDataName))
| otherwise
= Left (loc, msg)
where
occ = rdrNameOcc tc
+ cs = occNameFS occ
msg = text "Not a data constructor:" <+> quotes (ppr tc)
mkPatSynMatchGroup :: Located RdrName