Give a more verbose error message when desugaring a HsTypeOut
authorReid Barton <rwbarton@gmail.com>
Sat, 23 Jan 2016 12:13:31 +0000 (13:13 +0100)
committerBen Gamari <ben@smart-cactus.org>
Sat, 23 Jan 2016 12:13:32 +0000 (13:13 +0100)
Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1826

compiler/deSugar/DsExpr.hs

index 22a8707..c3c17c7 100644 (file)
@@ -732,10 +732,14 @@ dsExpr (EAsPat        {})  = panic "dsExpr:EAsPat"
 dsExpr (EViewPat      {})  = panic "dsExpr:EViewPat"
 dsExpr (ELazyPat      {})  = panic "dsExpr:ELazyPat"
 dsExpr (HsType        {})  = panic "dsExpr:HsType" -- removed by typechecker
-dsExpr (HsTypeOut     {})  = panic "dsExpr:HsTypeOut" -- handled in HsApp case
 dsExpr (HsDo          {})  = panic "dsExpr:HsDo"
 dsExpr (HsRecFld      {})  = panic "dsExpr:HsRecFld"
 
+-- Normally handled in HsApp case, but a GHC API user might try to desugar
+-- an HsTypeOut, since it is an HsExpr in a typechecked module after all.
+-- (Such as ghci itself, in #11456.) So improve the error message slightly.
+dsExpr (HsTypeOut {})
+  = panic "dsExpr: tried to desugar a naked type application argument (HsTypeOut)"
 
 findField :: [LHsRecField Id arg] -> Name -> [arg]
 findField rbinds sel