diff options
author | Kevin Buhr <buhr@asaurus.net> | 2019-07-27 13:25:31 -0500 |
---|---|---|
committer | Kevin Buhr <buhr@asaurus.net> | 2019-07-27 13:25:31 -0500 |
commit | 05ed304ef456e3e2a22355bd25a011a10fcff29e (patch) | |
tree | be270cd462f07609e2cf1c90076f12749f1e52d6 /compiler/parser | |
parent | 26314386789e3717427bab4bcb97755535bb12d4 (diff) | |
download | haskell-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.hs | 4 |
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 |