summaryrefslogtreecommitdiff
path: root/compiler/typecheck
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/typecheck')
-rw-r--r--compiler/typecheck/Inst.hs2
-rw-r--r--compiler/typecheck/TcAnnotations.hs2
-rw-r--r--compiler/typecheck/TcArrows.hs8
-rw-r--r--compiler/typecheck/TcBinds.hs6
-rw-r--r--compiler/typecheck/TcDefaults.hs6
-rw-r--r--compiler/typecheck/TcDeriv.hs10
-rw-r--r--compiler/typecheck/TcEnv.hs12
-rw-r--r--compiler/typecheck/TcExpr.hs10
-rw-r--r--compiler/typecheck/TcHsSyn.hs52
-rw-r--r--compiler/typecheck/TcHsType.hs24
-rw-r--r--compiler/typecheck/TcInstDcls.hs4
-rw-r--r--compiler/typecheck/TcMatches.hs18
-rw-r--r--compiler/typecheck/TcPatSyn.hs8
-rw-r--r--compiler/typecheck/TcRnDriver.hs8
-rw-r--r--compiler/typecheck/TcRnTypes.hs10
-rw-r--r--compiler/typecheck/TcRules.hs6
-rw-r--r--compiler/typecheck/TcSigs.hs8
-rw-r--r--compiler/typecheck/TcSplice.hs6
-rw-r--r--compiler/typecheck/TcTyClsDecls.hs48
19 files changed, 124 insertions, 124 deletions
diff --git a/compiler/typecheck/Inst.hs b/compiler/typecheck/Inst.hs
index 89e5569c1e..dfe03318ab 100644
--- a/compiler/typecheck/Inst.hs
+++ b/compiler/typecheck/Inst.hs
@@ -529,7 +529,7 @@ newOverloadedLit
= newNonTrivialOverloadedLit orig lit res_ty
where
orig = LiteralOrigin lit
-newOverloadedLit XOverLit{} _ = panic "newOverloadedLit"
+newOverloadedLit (XOverLit nec) _ = noExtCon nec
-- Does not handle things that 'shortCutLit' can handle. See also
-- newOverloadedLit in TcUnify
diff --git a/compiler/typecheck/TcAnnotations.hs b/compiler/typecheck/TcAnnotations.hs
index 050c5db977..76bffc5c4f 100644
--- a/compiler/typecheck/TcAnnotations.hs
+++ b/compiler/typecheck/TcAnnotations.hs
@@ -66,7 +66,7 @@ tcAnnotation (L loc ann@(HsAnnotation _ _ provenance expr)) = do
where
safeHsErr = vcat [ text "Annotations are not compatible with Safe Haskell."
, text "See https://gitlab.haskell.org/ghc/ghc/issues/10826" ]
-tcAnnotation (L _ (XAnnDecl _)) = panic "tcAnnotation"
+tcAnnotation (L _ (XAnnDecl nec)) = noExtCon nec
annProvenanceToTarget :: Module -> AnnProvenance Name
-> AnnTarget Name
diff --git a/compiler/typecheck/TcArrows.hs b/compiler/typecheck/TcArrows.hs
index 763684bb75..d38010ce14 100644
--- a/compiler/typecheck/TcArrows.hs
+++ b/compiler/typecheck/TcArrows.hs
@@ -126,7 +126,7 @@ tcCmdTop env (L loc (HsCmdTop names cmd)) cmd_ty@(cmd_stk, res_ty)
do { cmd' <- tcCmd env cmd cmd_ty
; names' <- mapM (tcSyntaxName ProcOrigin (cmd_arr env)) names
; return (L loc $ HsCmdTop (CmdTopTc cmd_stk res_ty names') cmd') }
-tcCmdTop _ (L _ XCmdTop{}) _ = panic "tcCmdTop"
+tcCmdTop _ (L _ (XCmdTop nec)) _ = noExtCon nec
----------------------------------------
tcCmd :: CmdEnv -> LHsCmd GhcRn -> CmdType -> TcM (LHsCmd GhcTcId)
@@ -271,14 +271,14 @@ tc_cmd env
= do { (binds', grhss') <- tcLocalBinds binds $
mapM (wrapLocM (tc_grhs stk_ty res_ty)) grhss
; return (GRHSs x grhss' (L l binds')) }
- tc_grhss (XGRHSs _) _ _ = panic "tc_grhss"
+ tc_grhss (XGRHSs nec) _ _ = noExtCon nec
tc_grhs stk_ty res_ty (GRHS x guards body)
= do { (guards', rhs') <- tcStmtsAndThen pg_ctxt tcGuardStmt guards res_ty $
\ res_ty -> tcCmd env body
(stk_ty, checkingExpType "tc_grhs" res_ty)
; return (GRHS x guards' rhs') }
- tc_grhs _ _ (XGRHS _) = panic "tc_grhs"
+ tc_grhs _ _ (XGRHS nec) = noExtCon nec
-------------------------------------------
-- Do notation
@@ -323,7 +323,7 @@ tc_cmd env cmd@(HsCmdArrForm x expr f fixity cmd_args) (cmd_stk, res_ty)
; cmd' <- tcCmdTop env' cmd (stk_ty, res_ty)
; return (cmd', mkCmdArrTy env' (mkPairTy alphaTy stk_ty) res_ty) }
-tc_cmd _ (XCmd {}) _ = panic "tc_cmd"
+tc_cmd _ (XCmd nec) _ = noExtCon nec
-----------------------------------------------------------------
-- Base case for illegal commands
diff --git a/compiler/typecheck/TcBinds.hs b/compiler/typecheck/TcBinds.hs
index 9cdc939310..e7f6258a50 100644
--- a/compiler/typecheck/TcBinds.hs
+++ b/compiler/typecheck/TcBinds.hs
@@ -361,15 +361,15 @@ tcLocalBinds (HsIPBinds x (IPBinds _ ip_binds)) thing_inside
; let d = toDict ipClass p ty `fmap` expr'
; return (ip_id, (IPBind noExt (Right ip_id) d)) }
tc_ip_bind _ (IPBind _ (Right {}) _) = panic "tc_ip_bind"
- tc_ip_bind _ (XIPBind _) = panic "tc_ip_bind"
+ tc_ip_bind _ (XIPBind nec) = noExtCon nec
-- Coerces a `t` into a dictionry for `IP "x" t`.
-- co : t -> IP "x" t
toDict ipClass x ty = mkHsWrap $ mkWpCastR $
wrapIP $ mkClassPred ipClass [x,ty]
-tcLocalBinds (HsIPBinds _ (XHsIPBinds _ )) _ = panic "tcLocalBinds"
-tcLocalBinds (XHsLocalBindsLR _) _ = panic "tcLocalBinds"
+tcLocalBinds (HsIPBinds _ (XHsIPBinds nec)) _ = noExtCon nec
+tcLocalBinds (XHsLocalBindsLR nec) _ = noExtCon nec
{- Note [Implicit parameter untouchables]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/compiler/typecheck/TcDefaults.hs b/compiler/typecheck/TcDefaults.hs
index d091e9c156..926eca1ac0 100644
--- a/compiler/typecheck/TcDefaults.hs
+++ b/compiler/typecheck/TcDefaults.hs
@@ -66,7 +66,7 @@ tcDefaults [L locn (DefaultDecl _ mono_tys)]
tcDefaults decls@(L locn (DefaultDecl _ _) : _)
= setSrcSpan locn $
failWithTc (dupDefaultDeclErr decls)
-tcDefaults (L _ (XDefaultDecl _):_) = panic "tcDefaults"
+tcDefaults (L _ (XDefaultDecl nec):_) = noExtCon nec
tc_default_ty :: [Class] -> LHsType GhcRn -> TcM Type
@@ -100,8 +100,8 @@ dupDefaultDeclErr (L _ (DefaultDecl _ _) : dup_things)
where
pp (L locn (DefaultDecl _ _))
= text "here was another default declaration" <+> ppr locn
- pp (L _ (XDefaultDecl _)) = panic "dupDefaultDeclErr"
-dupDefaultDeclErr (L _ (XDefaultDecl _) : _) = panic "dupDefaultDeclErr"
+ pp (L _ (XDefaultDecl nec)) = noExtCon nec
+dupDefaultDeclErr (L _ (XDefaultDecl nec) : _) = noExtCon nec
dupDefaultDeclErr [] = panic "dupDefaultDeclErr []"
badDefaultTy :: Type -> [Class] -> SDoc
diff --git a/compiler/typecheck/TcDeriv.hs b/compiler/typecheck/TcDeriv.hs
index 736f44e211..7f3c9d5ad1 100644
--- a/compiler/typecheck/TcDeriv.hs
+++ b/compiler/typecheck/TcDeriv.hs
@@ -691,7 +691,7 @@ deriveStandalone (L loc (DerivDecl _ deriv_ty mbl_deriv_strat overlap_mode))
bale_out $
text "The last argument of the instance must be a data or newtype application"
}
-deriveStandalone (L _ (XDerivDecl _)) = panic "deriveStandalone"
+deriveStandalone (L _ (XDerivDecl nec)) = noExtCon nec
-- Typecheck the type in a standalone deriving declaration.
--
@@ -736,10 +736,10 @@ tcStandaloneDerivInstType ctxt
let (tvs, theta, cls, inst_tys) = tcSplitDFunTy dfun_ty
pure (tvs, SupplyContext theta, cls, inst_tys)
-tcStandaloneDerivInstType _ (HsWC _ (XHsImplicitBndrs _))
- = panic "tcStandaloneDerivInstType"
-tcStandaloneDerivInstType _ (XHsWildCardBndrs _)
- = panic "tcStandaloneDerivInstType"
+tcStandaloneDerivInstType _ (HsWC _ (XHsImplicitBndrs nec))
+ = noExtCon nec
+tcStandaloneDerivInstType _ (XHsWildCardBndrs nec)
+ = noExtCon nec
warnUselessTypeable :: TcM ()
warnUselessTypeable
diff --git a/compiler/typecheck/TcEnv.hs b/compiler/typecheck/TcEnv.hs
index f0be9a83ab..533f137385 100644
--- a/compiler/typecheck/TcEnv.hs
+++ b/compiler/typecheck/TcEnv.hs
@@ -706,18 +706,18 @@ tcAddDataFamConPlaceholders inst_decls thing_inside
get_cons (L _ (DataFamInstD { dfid_inst = fid })) = get_fi_cons fid
get_cons (L _ (ClsInstD { cid_inst = ClsInstDecl { cid_datafam_insts = fids } }))
= concatMap (get_fi_cons . unLoc) fids
- get_cons (L _ (ClsInstD _ (XClsInstDecl _))) = panic "get_cons"
- get_cons (L _ (XInstDecl _)) = panic "get_cons"
+ get_cons (L _ (ClsInstD _ (XClsInstDecl nec))) = noExtCon nec
+ get_cons (L _ (XInstDecl nec)) = noExtCon nec
get_fi_cons :: DataFamInstDecl GhcRn -> [Name]
get_fi_cons (DataFamInstDecl { dfid_eqn = HsIB { hsib_body =
FamEqn { feqn_rhs = HsDataDefn { dd_cons = cons } }}})
= map unLoc $ concatMap (getConNames . unLoc) cons
get_fi_cons (DataFamInstDecl { dfid_eqn = HsIB { hsib_body =
- FamEqn { feqn_rhs = XHsDataDefn _ }}})
- = panic "get_fi_cons"
- get_fi_cons (DataFamInstDecl (HsIB _ (XFamEqn _))) = panic "get_fi_cons"
- get_fi_cons (DataFamInstDecl (XHsImplicitBndrs _)) = panic "get_fi_cons"
+ FamEqn { feqn_rhs = XHsDataDefn nec }}})
+ = noExtCon nec
+ get_fi_cons (DataFamInstDecl (HsIB _ (XFamEqn nec))) = noExtCon nec
+ get_fi_cons (DataFamInstDecl (XHsImplicitBndrs nec)) = noExtCon nec
tcAddPatSynPlaceholders :: [PatSynBind GhcRn GhcRn] -> TcM a -> TcM a
diff --git a/compiler/typecheck/TcExpr.hs b/compiler/typecheck/TcExpr.hs
index 4d813b0086..b7a4a42f11 100644
--- a/compiler/typecheck/TcExpr.hs
+++ b/compiler/typecheck/TcExpr.hs
@@ -1425,7 +1425,7 @@ tcTupArgs args tys
go (L l (Missing {}), arg_ty) = return (L l (Missing arg_ty))
go (L l (Present x expr), arg_ty) = do { expr' <- tcPolyExpr expr arg_ty
; return (L l (Present x expr')) }
- go (L _ (XTupArg{}), _) = panic "tcTupArgs"
+ go (L _ (XTupArg nec), _) = noExtCon nec
---------------------------
-- See TcType.SyntaxOpType also for commentary
@@ -1742,7 +1742,7 @@ tcCheckRecSelId rn_expr (Ambiguous _ lbl) res_ty
Just (arg, _) -> do { sel_name <- disambiguateSelector lbl arg
; tcCheckRecSelId rn_expr (Unambiguous sel_name lbl)
res_ty }
-tcCheckRecSelId _ (XAmbiguousFieldOcc _) _ = panic "tcCheckRecSelId"
+tcCheckRecSelId _ (XAmbiguousFieldOcc nec) _ = noExtCon nec
------------------------
tcInferRecSelId :: AmbiguousFieldOcc GhcRn -> TcM (HsExpr GhcTcId, TcRhoType)
@@ -1751,7 +1751,7 @@ tcInferRecSelId (Unambiguous sel (L _ lbl))
; return (expr', ty) }
tcInferRecSelId (Ambiguous _ lbl)
= ambiguousSelector lbl
-tcInferRecSelId (XAmbiguousFieldOcc _) = panic "tcInferRecSelId"
+tcInferRecSelId (XAmbiguousFieldOcc nec) = noExtCon nec
------------------------
tcInferId :: Name -> TcM (HsExpr GhcTcId, TcSigmaType)
@@ -1976,7 +1976,7 @@ too_many_args fun args
where
pp (HsValArg e) = ppr e
pp (HsTypeArg _ (HsWC { hswc_body = L _ t })) = pprHsType t
- pp (HsTypeArg _ (XHsWildCardBndrs _)) = panic "too_many_args"
+ pp (HsTypeArg _ (XHsWildCardBndrs nec)) = noExtCon nec
pp (HsArgPar _) = empty
@@ -2451,7 +2451,7 @@ tcRecordField con_like flds_w_tys (L loc (FieldOcc sel_name lbl)) rhs
; return Nothing }
where
field_lbl = occNameFS $ rdrNameOcc (unLoc lbl)
-tcRecordField _ _ (L _ (XFieldOcc _)) _ = panic "tcRecordField"
+tcRecordField _ _ (L _ (XFieldOcc nec)) _ = noExtCon nec
checkMissingFields :: ConLike -> HsRecordBinds GhcRn -> TcM ()
diff --git a/compiler/typecheck/TcHsSyn.hs b/compiler/typecheck/TcHsSyn.hs
index 52783e7210..b1b31fd897 100644
--- a/compiler/typecheck/TcHsSyn.hs
+++ b/compiler/typecheck/TcHsSyn.hs
@@ -135,7 +135,7 @@ hsLitType (HsInteger _ _ ty) = ty
hsLitType (HsRat _ _ ty) = ty
hsLitType (HsFloatPrim _ _) = floatPrimTy
hsLitType (HsDoublePrim _ _) = doublePrimTy
-hsLitType (XLit p) = pprPanic "hsLitType" (ppr p)
+hsLitType (XLit nec) = noExtCon nec
-- Overloaded literals. Here mainly because it uses isIntTy etc
@@ -389,7 +389,7 @@ zonkTopBndrs ids = initZonkEnv $ \ ze -> zonkIdBndrs ze ids
zonkFieldOcc :: ZonkEnv -> FieldOcc GhcTcId -> TcM (FieldOcc GhcTc)
zonkFieldOcc env (FieldOcc sel lbl)
= fmap ((flip FieldOcc) lbl) $ zonkIdBndr env sel
-zonkFieldOcc _ (XFieldOcc _) = panic "zonkFieldOcc"
+zonkFieldOcc _ (XFieldOcc nec) = noExtCon nec
zonkEvBndrsX :: ZonkEnv -> [EvVar] -> TcM (ZonkEnv, [Var])
zonkEvBndrsX = mapAccumLM zonkEvBndrX
@@ -532,12 +532,12 @@ zonkLocalBinds env (HsIPBinds x (IPBinds dict_binds binds )) = do
= do n' <- mapIPNameTc (zonkIdBndr env) n
e' <- zonkLExpr env e
return (IPBind x n' e')
- zonk_ip_bind (XIPBind _) = panic "zonkLocalBinds : XCIPBind"
+ zonk_ip_bind (XIPBind nec) = noExtCon nec
-zonkLocalBinds _ (HsIPBinds _ (XHsIPBinds _))
- = panic "zonkLocalBinds" -- Not in typechecker output
-zonkLocalBinds _ (XHsLocalBindsLR _)
- = panic "zonkLocalBinds" -- Not in typechecker output
+zonkLocalBinds _ (HsIPBinds _ (XHsIPBinds nec))
+ = noExtCon nec
+zonkLocalBinds _ (XHsLocalBindsLR nec)
+ = noExtCon nec
---------------------------------------------
zonkRecMonoBinds :: ZonkEnv -> LHsBinds GhcTcId -> TcM (ZonkEnv, LHsBinds GhcTc)
@@ -633,7 +633,7 @@ zonk_bind env (AbsBinds { abs_tvs = tyvars, abs_ev_vars = evs
, abe_poly = new_poly_id
, abe_mono = zonkIdOcc env mono_id
, abe_prags = new_prags })
- zonk_export _ (XABExport _) = panic "zonk_bind: XABExport"
+ zonk_export _ (XABExport nec) = noExtCon nec
zonk_bind env (PatSynBind x bind@(PSB { psb_id = (dL->L loc id)
, psb_args = details
@@ -649,8 +649,8 @@ zonk_bind env (PatSynBind x bind@(PSB { psb_id = (dL->L loc id)
, psb_def = lpat'
, psb_dir = dir' } }
-zonk_bind _ (PatSynBind _ (XPatSynBind _)) = panic "zonk_bind"
-zonk_bind _ (XHsBindsLR _) = panic "zonk_bind"
+zonk_bind _ (PatSynBind _ (XPatSynBind nec)) = noExtCon nec
+zonk_bind _ (XHsBindsLR nec) = noExtCon nec
zonkPatSynDetails :: ZonkEnv
-> HsPatSynDetails (Located TcId)
@@ -704,7 +704,7 @@ zonkMatchGroup env zBody (MG { mg_alts = (dL->L l ms)
; return (MG { mg_alts = cL l ms'
, mg_ext = MatchGroupTc arg_tys' res_ty'
, mg_origin = origin }) }
-zonkMatchGroup _ _ (XMatchGroup {}) = panic "zonkMatchGroup"
+zonkMatchGroup _ _ (XMatchGroup nec) = noExtCon nec
zonkMatch :: ZonkEnv
-> (ZonkEnv -> Located (body GhcTcId) -> TcM (Located (body GhcTc)))
@@ -715,7 +715,7 @@ zonkMatch env zBody (dL->L loc match@(Match { m_pats = pats
= do { (env1, new_pats) <- zonkPats env pats
; new_grhss <- zonkGRHSs env1 zBody grhss
; return (cL loc (match { m_pats = new_pats, m_grhss = new_grhss })) }
-zonkMatch _ _ (dL->L _ (XMatch _)) = panic "zonkMatch"
+zonkMatch _ _ (dL->L _ (XMatch nec)) = noExtCon nec
zonkMatch _ _ _ = panic "zonkMatch: Impossible Match"
-- due to #15884
@@ -732,10 +732,10 @@ zonkGRHSs env zBody (GRHSs x grhss (dL->L l binds)) = do
= do (env2, new_guarded) <- zonkStmts new_env zonkLExpr guarded
new_rhs <- zBody env2 rhs
return (GRHS xx new_guarded new_rhs)
- zonk_grhs (XGRHS _) = panic "zonkGRHSs"
+ zonk_grhs (XGRHS nec) = noExtCon nec
new_grhss <- mapM (wrapLocM zonk_grhs) grhss
return (GRHSs x new_grhss (cL l new_binds))
-zonkGRHSs _ _ (XGRHSs _) = panic "zonkGRHSs"
+zonkGRHSs _ _ (XGRHSs nec) = noExtCon nec
{-
************************************************************************
@@ -841,7 +841,7 @@ zonkExpr env (ExplicitTuple x tup_args boxed)
; return (cL l (Present x e')) }
zonk_tup_arg (dL->L l (Missing t)) = do { t' <- zonkTcTypeToTypeX env t
; return (cL l (Missing t')) }
- zonk_tup_arg (dL->L _ (XTupArg{})) = panic "zonkExpr.XTupArg"
+ zonk_tup_arg (dL->L _ (XTupArg nec)) = noExtCon nec
zonk_tup_arg _ = panic "zonk_tup_arg: Impossible Match"
-- due to #15884
@@ -877,7 +877,7 @@ zonkExpr env (HsMultiIf ty alts)
= do { (env', guard') <- zonkStmts env zonkLExpr guard
; expr' <- zonkLExpr env' expr
; return $ GRHS x guard' expr' }
- zonk_alt (XGRHS _) = panic "zonkExpr.HsMultiIf"
+ zonk_alt (XGRHS nec) = noExtCon nec
zonkExpr env (HsLet x (dL->L l binds) expr)
= do (new_env, new_binds) <- zonkLocalBinds env binds
@@ -1057,7 +1057,7 @@ zonkCmd env (HsCmdDo ty (dL->L l stmts))
new_ty <- zonkTcTypeToTypeX env ty
return (HsCmdDo new_ty (cL l new_stmts))
-zonkCmd _ (XCmd{}) = panic "zonkCmd"
+zonkCmd _ (XCmd nec) = noExtCon nec
@@ -1077,7 +1077,7 @@ zonk_cmd_top env (HsCmdTop (CmdTopTc stack_tys ty ids) cmd)
-- rules for arrows
return (HsCmdTop (CmdTopTc new_stack_tys new_ty new_ids) new_cmd)
-zonk_cmd_top _ (XCmdTop {}) = panic "zonk_cmd_top"
+zonk_cmd_top _ (XCmdTop nec) = noExtCon nec
-------------------------------------------------------------------------
zonkCoFn :: ZonkEnv -> HsWrapper -> TcM (ZonkEnv, HsWrapper)
@@ -1110,7 +1110,7 @@ zonkOverLit env lit@(OverLit {ol_ext = OverLitTc r ty, ol_witness = e })
; e' <- zonkExpr env e
; return (lit { ol_witness = e', ol_ext = OverLitTc r ty' }) }
-zonkOverLit _ XOverLit{} = panic "zonkOverLit"
+zonkOverLit _ (XOverLit nec) = noExtCon nec
-------------------------------------------------------------------------
zonkArithSeq :: ZonkEnv -> ArithSeqInfo GhcTcId -> TcM (ArithSeqInfo GhcTc)
@@ -1166,7 +1166,7 @@ zonkStmt env _ (ParStmt bind_ty stmts_w_bndrs mzip_op bind_op)
; (env3, new_return) <- zonkSyntaxExpr env2 return_op
; return (ParStmtBlock x new_stmts (zonkIdOccs env3 bndrs)
new_return) }
- zonk_branch _ (XParStmtBlock{}) = panic "zonkStmt"
+ zonk_branch _ (XParStmtBlock nec) = noExtCon nec
zonkStmt env zBody (RecStmt { recS_stmts = segStmts, recS_later_ids = lvs, recS_rec_ids = rvs
, recS_ret_fn = ret_id, recS_mfix_fn = mfix_id
@@ -1264,13 +1264,13 @@ zonkStmt env _zBody (ApplicativeStmt body_ty args mb_join)
get_pat (_, ApplicativeArgOne _ pat _ _) = pat
get_pat (_, ApplicativeArgMany _ _ _ pat) = pat
- get_pat (_, XApplicativeArg _) = panic "zonkStmt"
+ get_pat (_, XApplicativeArg nec) = noExtCon nec
replace_pat pat (op, ApplicativeArgOne x _ a isBody)
= (op, ApplicativeArgOne x pat a isBody)
replace_pat pat (op, ApplicativeArgMany x a b _)
= (op, ApplicativeArgMany x a b pat)
- replace_pat _ (_, XApplicativeArg _) = panic "zonkStmt"
+ replace_pat _ (_, XApplicativeArg nec) = noExtCon nec
zonk_args env args
= do { (env1, new_args_rev) <- zonk_args_rev env (reverse args)
@@ -1294,9 +1294,9 @@ zonkStmt env _zBody (ApplicativeStmt body_ty args mb_join)
= do { (env1, new_stmts) <- zonkStmts env zonkLExpr stmts
; new_ret <- zonkExpr env1 ret
; return (ApplicativeArgMany x new_stmts new_ret pat) }
- zonk_arg _ (XApplicativeArg _) = panic "zonkStmt.XApplicativeArg"
+ zonk_arg _ (XApplicativeArg nec) = noExtCon nec
-zonkStmt _ _ (XStmtLR _) = panic "zonkStmt"
+zonkStmt _ _ (XStmtLR nec) = noExtCon nec
-------------------------------------------------------------------------
zonkRecFields :: ZonkEnv -> HsRecordBinds GhcTcId -> TcM (HsRecordBinds GhcTcId)
@@ -1540,7 +1540,7 @@ zonkRule env rule@(HsRule { rd_tmvs = tm_bndrs{-::[RuleBndr TcId]-}
= do { (env', v') <- zonk_it env v
; return (env', cL l (RuleBndr x (cL loc v'))) }
zonk_tm_bndr _ (dL->L _ (RuleBndrSig {})) = panic "zonk_tm_bndr RuleBndrSig"
- zonk_tm_bndr _ (dL->L _ (XRuleBndr {})) = panic "zonk_tm_bndr XRuleBndr"
+ zonk_tm_bndr _ (dL->L _ (XRuleBndr nec)) = noExtCon nec
zonk_tm_bndr _ _ = panic "zonk_tm_bndr: Impossible Match"
-- due to #15884
@@ -1552,7 +1552,7 @@ zonkRule env rule@(HsRule { rd_tmvs = tm_bndrs{-::[RuleBndr TcId]-}
-- DV: used to be return (env,v) but that is plain
-- wrong because we may need to go inside the kind
-- of v and zonk there!
-zonkRule _ (XRuleDecl _) = panic "zonkRule"
+zonkRule _ (XRuleDecl nec) = noExtCon nec
{-
************************************************************************
diff --git a/compiler/typecheck/TcHsType.hs b/compiler/typecheck/TcHsType.hs
index 489a35c455..18fd249f59 100644
--- a/compiler/typecheck/TcHsType.hs
+++ b/compiler/typecheck/TcHsType.hs
@@ -195,7 +195,7 @@ kcHsSigType names (HsIB { hsib_body = hs_ty
bindImplicitTKBndrs_Skol sig_vars $
tc_lhs_type typeLevelMode hs_ty liftedTypeKind
-kcHsSigType _ (XHsImplicitBndrs _) = panic "kcHsSigType"
+kcHsSigType _ (XHsImplicitBndrs nec) = noExtCon nec
tcClassSigType :: SkolemInfo -> [Located Name] -> LHsSigType GhcRn -> TcM Type
-- Does not do validity checking
@@ -254,7 +254,7 @@ tc_hs_sig_type skol_info hs_sig_type ctxt_kind
; return (mkInvForAllTys kvs ty1) }
-tc_hs_sig_type _ (XHsImplicitBndrs _) _ = panic "tc_hs_sig_type"
+tc_hs_sig_type _ (XHsImplicitBndrs nec) _ = noExtCon nec
tcTopLHsType :: LHsSigType GhcRn -> ContextKind -> TcM Type
-- tcTopLHsType is used for kind-checking top-level HsType where
@@ -279,7 +279,7 @@ tcTopLHsType hs_sig_type ctxt_kind
; traceTc "End tcTopLHsType }" (vcat [ppr hs_ty, ppr final_ty])
; return final_ty}
-tcTopLHsType (XHsImplicitBndrs _) _ = panic "tcTopLHsType"
+tcTopLHsType (XHsImplicitBndrs nec) _ = noExtCon nec
-----------------
tcHsDeriv :: LHsSigType GhcRn -> TcM ([TyVar], (Class, [Type], [Kind]))
@@ -381,7 +381,7 @@ tcHsTypeApp wc_ty kind
; ty <- zonkPromoteType ty
; checkValidType TypeAppCtxt ty
; return ty }
-tcHsTypeApp (XHsWildCardBndrs _) _ = panic "tcHsTypeApp"
+tcHsTypeApp (XHsWildCardBndrs nec) _ = noExtCon nec
{- Note [Wildcards in visible type application]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -1847,7 +1847,7 @@ kcLHsQTyVars_Cusk name flav
ctxt_kind | tcFlavourIsOpen flav = TheKind liftedTypeKind
| otherwise = AnyKind
-kcLHsQTyVars_Cusk _ _ (XLHsQTyVars _) _ = panic "kcLHsQTyVars"
+kcLHsQTyVars_Cusk _ _ (XLHsQTyVars nec) _ = noExtCon nec
------------------------------
kcLHsQTyVars_NonCusk name flav
@@ -1895,7 +1895,7 @@ kcLHsQTyVars_NonCusk name flav
ctxt_kind | tcFlavourIsOpen flav = TheKind liftedTypeKind
| otherwise = AnyKind
-kcLHsQTyVars_NonCusk _ _ (XLHsQTyVars _) _ = panic "kcLHsQTyVars"
+kcLHsQTyVars_NonCusk _ _ (XLHsQTyVars nec) _ = noExtCon nec
{- Note [No polymorphic recursion]
@@ -2140,7 +2140,7 @@ tcHsTyVarBndr new_tv (UserTyVar _ (L _ tv_nm))
tcHsTyVarBndr new_tv (KindedTyVar _ (L _ tv_nm) lhs_kind)
= do { kind <- tcLHsKindSig (TyVarBndrKindCtxt tv_nm) lhs_kind
; new_tv tv_nm kind }
-tcHsTyVarBndr _ (XTyVarBndr _) = panic "tcHsTyVarBndr"
+tcHsTyVarBndr _ (XTyVarBndr nec) = noExtCon nec
-----------------
tcHsQTyVarBndr :: ContextKind
@@ -2173,7 +2173,7 @@ tcHsQTyVarBndr _ new_tv (KindedTyVar _ (L _ tv_nm) lhs_kind)
hs_tv = HsTyVar noExt NotPromoted (noLoc tv_nm)
-- Used for error messages only
-tcHsQTyVarBndr _ _ (XTyVarBndr _) = panic "tcHsTyVarBndr"
+tcHsQTyVarBndr _ _ (XTyVarBndr nec) = noExtCon nec
--------------------------------------
@@ -2530,8 +2530,8 @@ tcHsPartialSigType ctxt sig_ty
; traceTc "tcHsPartialSigType" (ppr all_tvs)
; return (wcs, wcx, tv_names, all_tvs, theta, tau) }
-tcHsPartialSigType _ (HsWC _ (XHsImplicitBndrs _)) = panic "tcHsPartialSigType"
-tcHsPartialSigType _ (XHsWildCardBndrs _) = panic "tcHsPartialSigType"
+tcHsPartialSigType _ (HsWC _ (XHsImplicitBndrs nec)) = noExtCon nec
+tcHsPartialSigType _ (XHsWildCardBndrs nec) = noExtCon nec
tcPartialContext :: HsContext GhcRn -> TcM (TcThetaType, Maybe TcType)
tcPartialContext hs_theta
@@ -2641,8 +2641,8 @@ tcHsPatSigType ctxt sig_ty
-- NB: tv's Name may be fresh (in the case of newPatSigTyVar)
; return (name, tv) }
-tcHsPatSigType _ (HsWC _ (XHsImplicitBndrs _)) = panic "tcHsPatSigType"
-tcHsPatSigType _ (XHsWildCardBndrs _) = panic "tcHsPatSigType"
+tcHsPatSigType _ (HsWC _ (XHsImplicitBndrs nec)) = noExtCon nec
+tcHsPatSigType _ (XHsWildCardBndrs nec) = noExtCon nec
tcPatSig :: Bool -- True <=> pattern binding
-> LHsSigWcType GhcRn
diff --git a/compiler/typecheck/TcInstDcls.hs b/compiler/typecheck/TcInstDcls.hs
index 9642756b99..b362cf7af9 100644
--- a/compiler/typecheck/TcInstDcls.hs
+++ b/compiler/typecheck/TcInstDcls.hs
@@ -461,7 +461,7 @@ tcLocalInstDecl (L loc (ClsInstD { cid_inst = decl }))
= do { (insts, fam_insts, deriv_infos) <- tcClsInstDecl (L loc decl)
; return (insts, fam_insts, deriv_infos) }
-tcLocalInstDecl (L _ (XInstDecl _)) = panic "tcLocalInstDecl"
+tcLocalInstDecl (L _ (XInstDecl nec)) = noExtCon nec
tcClsInstDecl :: LClsInstDecl GhcRn
-> TcM ([InstInfo GhcRn], [FamInst], [DerivInfo])
@@ -539,7 +539,7 @@ tcClsInstDecl (L loc (ClsInstDecl { cid_poly_ty = hs_ty, cid_binds = binds
. dfid_eqn
. unLoc) adts)
-tcClsInstDecl (L _ (XClsInstDecl _)) = panic "tcClsInstDecl"
+tcClsInstDecl (L _ (XClsInstDecl nec)) = noExtCon nec
{-
************************************************************************
diff --git a/compiler/typecheck/TcMatches.hs b/compiler/typecheck/TcMatches.hs
index 48410e0a7c..1a198497ec 100644
--- a/compiler/typecheck/TcMatches.hs
+++ b/compiler/typecheck/TcMatches.hs
@@ -222,7 +222,7 @@ tcMatches ctxt pat_tys rhs_ty (MG { mg_alts = L l matches
; return (MG { mg_alts = L l matches'
, mg_ext = MatchGroupTc pat_tys rhs_ty
, mg_origin = origin }) }
-tcMatches _ _ _ (XMatchGroup {}) = panic "tcMatches"
+tcMatches _ _ _ (XMatchGroup nec) = noExtCon nec
-------------
tcMatch :: (Outputable (body GhcRn)) => TcMatchCtxt body
@@ -242,7 +242,7 @@ tcMatch ctxt pat_tys rhs_ty match
; return (Match { m_ext = noExt
, m_ctxt = mc_what ctxt, m_pats = pats'
, m_grhss = grhss' }) }
- tc_match _ _ _ (XMatch _) = panic "tcMatch"
+ tc_match _ _ _ (XMatch nec) = noExtCon nec
-- For (\x -> e), tcExpr has already said "In the expression \x->e"
-- so we don't want to add "In the lambda abstraction \x->e"
@@ -267,7 +267,7 @@ tcGRHSs ctxt (GRHSs _ grhss (L l binds)) res_ty
mapM (wrapLocM (tcGRHS ctxt res_ty)) grhss
; return (GRHSs noExt grhss' (L l binds')) }
-tcGRHSs _ (XGRHSs _) _ = panic "tcGRHSs"
+tcGRHSs _ (XGRHSs nec) _ = noExtCon nec
-------------
tcGRHS :: TcMatchCtxt body -> ExpRhoType -> GRHS GhcRn (Located (body GhcRn))
@@ -280,7 +280,7 @@ tcGRHS ctxt res_ty (GRHS _ guards rhs)
; return (GRHS noExt guards' rhs') }
where
stmt_ctxt = PatGuard (mc_what ctxt)
-tcGRHS _ _ (XGRHS _) = panic "tcGRHS"
+tcGRHS _ _ (XGRHS nec) = noExtCon nec
{-
************************************************************************
@@ -470,7 +470,7 @@ tcLcStmt m_tc ctxt (ParStmt _ bndr_stmts_s _ _) elt_ty thing_inside
; (pairs', thing) <- loop pairs
; return (ids, pairs', thing) }
; return ( ParStmtBlock x stmts' ids noSyntaxExpr : pairs', thing ) }
- loop (XParStmtBlock{}:_) = panic "tcLcStmt"
+ loop (XParStmtBlock nec:_) = noExtCon nec
tcLcStmt m_tc ctxt (TransStmt { trS_form = form, trS_stmts = stmts
, trS_bndrs = bindersMap
@@ -1072,12 +1072,12 @@ tcApplicativeStmts ctxt pairs rhs_ty thing_inside
}
; return (ApplicativeArgMany x stmts' ret' pat') }
- goArg (XApplicativeArg _, _, _) = panic "tcApplicativeStmts"
+ goArg (XApplicativeArg nec, _, _) = noExtCon nec
get_arg_bndrs :: ApplicativeArg GhcTcId -> [Id]
get_arg_bndrs (ApplicativeArgOne _ pat _ _) = collectPatBinders pat
get_arg_bndrs (ApplicativeArgMany _ _ _ pat) = collectPatBinders pat
- get_arg_bndrs (XApplicativeArg _) = panic "tcApplicativeStmts"
+ get_arg_bndrs (XApplicativeArg nec) = noExtCon nec
{- Note [ApplicativeDo and constraints]
@@ -1134,5 +1134,5 @@ checkArgs fun (MG { mg_alts = L _ (match1:matches) })
args_in_match :: LMatch GhcRn body -> Int
args_in_match (L _ (Match { m_pats = pats })) = length pats
- args_in_match (L _ (XMatch _)) = panic "checkArgs"
-checkArgs _ (XMatchGroup{}) = panic "checkArgs"
+ args_in_match (L _ (XMatch nec)) = noExtCon nec
+checkArgs _ (XMatchGroup nec) = noExtCon nec
diff --git a/compiler/typecheck/TcPatSyn.hs b/compiler/typecheck/TcPatSyn.hs
index 5dcee99bfd..4c73b4c282 100644
--- a/compiler/typecheck/TcPatSyn.hs
+++ b/compiler/typecheck/TcPatSyn.hs
@@ -102,7 +102,7 @@ recoverPSB (PSB { psb_id = (dL->L _ name)
matcher_id = mkLocalId matcher_name $
mkSpecForAllTys [alphaTyVar] alphaTy
-recoverPSB (XPatSynBind {}) = panic "recoverPSB"
+recoverPSB (XPatSynBind nec) = noExtCon nec
{- Note [Pattern synonym error recovery]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -187,7 +187,7 @@ tcInferPatSynDecl (PSB { psb_id = lname@(dL->L _ name), psb_args = details
, mkTyVarTys ex_tvs, prov_theta, prov_evs)
(map nlHsVar args, map idType args)
pat_ty rec_fields } }
-tcInferPatSynDecl (XPatSynBind _) = panic "tcInferPatSynDecl"
+tcInferPatSynDecl (XPatSynBind nec) = noExtCon nec
mkProvEvidence :: EvId -> Maybe (PredType, EvTerm)
-- See Note [Equality evidence in pattern synonyms]
@@ -434,7 +434,7 @@ tcCheckPatSynDecl psb@PSB{ psb_id = lname@(dL->L _ name), psb_args = details
-- Why do we need tcSubType here?
-- See Note [Pattern synonyms and higher rank types]
; return (mkLHsWrap wrap $ nlHsVar arg_id) }
-tcCheckPatSynDecl (XPatSynBind _) _ = panic "tcCheckPatSynDecl"
+tcCheckPatSynDecl (XPatSynBind nec) _ = noExtCon nec
{- [Pattern synonyms and higher rank types]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -882,7 +882,7 @@ tcPatSynBuilderBind (PSB { psb_id = (dL->L loc name)
= mg { mg_alts = cL l [cL loc (match { m_pats = nlWildPatName : pats })] }
add_dummy_arg other_mg = pprPanic "add_dummy_arg" $
pprMatches other_mg
-tcPatSynBuilderBind (XPatSynBind _) = panic "tcPatSynBuilderBind"
+tcPatSynBuilderBind (XPatSynBind nec) = noExtCon nec
tcPatSynBuilderOcc :: PatSyn -> TcM (HsExpr GhcTcId, TcSigmaType)
-- monadic only for failure
diff --git a/compiler/typecheck/TcRnDriver.hs b/compiler/typecheck/TcRnDriver.hs
index 60ff3335dd..6f6566c4db 100644
--- a/compiler/typecheck/TcRnDriver.hs
+++ b/compiler/typecheck/TcRnDriver.hs
@@ -552,7 +552,7 @@ tc_rn_src_decls ds
("Declaration splices are not "
++ "permitted inside top-level "
++ "declarations added with addTopDecls"))
- ; Just (XSpliceDecl _, _) -> panic "tc_rn_src_decls"
+ ; Just (XSpliceDecl nec, _) -> noExtCon nec
}
-- Rename TH-generated top-level declarations
; (tcg_env, th_rn_decls) <- setGblEnv tcg_env
@@ -595,7 +595,7 @@ tc_rn_src_decls ds
; return (tcg_env, tcl_env, lie1 `andWC` lie2)
}
- ; Just (XSpliceDecl _, _) -> panic "tc_rn_src_decls"
+ ; Just (XSpliceDecl nec, _) -> noExtCon nec
}
}
@@ -632,8 +632,8 @@ tcRnHsBootDecls hsc_src decls
-- Check for illegal declarations
; case group_tail of
Just (SpliceDecl _ d _, _) -> badBootDecl hsc_src "splice" d
- Just (XSpliceDecl _, _) -> panic "tcRnHsBootDecls"
- Nothing -> return ()
+ Just (XSpliceDecl nec, _) -> noExtCon nec
+ Nothing -> return ()
; mapM_ (badBootDecl hsc_src "foreign") for_decls
; mapM_ (badBootDecl hsc_src "default") def_decls
; mapM_ (badBootDecl hsc_src "rule") rule_decls
diff --git a/compiler/typecheck/TcRnTypes.hs b/compiler/typecheck/TcRnTypes.hs
index bfedaf2ccc..dbf1d5c9b7 100644
--- a/compiler/typecheck/TcRnTypes.hs
+++ b/compiler/typecheck/TcRnTypes.hs
@@ -1020,7 +1020,7 @@ splice. In particular it is not set when the splice is renamed or typechecked.
'RunSplice' is needed to provide a reference where 'addModFinalizer' can insert
the finalizer (see Note [Delaying modFinalizers in untyped splices]), and
'addModFinalizer' runs when doing Q things. Therefore, It doesn't make sense to
-set 'RunSplice' when renaming or typechecking the splice, where 'Splice',
+set 'RunSplice' when renaming or typechecking the splice, where 'Splice',
'Brack' or 'Comp' are used instead.
-}
@@ -3667,7 +3667,7 @@ exprCtOrigin (EAsPat {}) = panic "exprCtOrigin EAsPat"
exprCtOrigin (EViewPat {}) = panic "exprCtOrigin EViewPat"
exprCtOrigin (ELazyPat {}) = panic "exprCtOrigin ELazyPat"
exprCtOrigin (HsWrap {}) = panic "exprCtOrigin HsWrap"
-exprCtOrigin (XExpr {}) = panic "exprCtOrigin XExpr"
+exprCtOrigin (XExpr nec) = noExtCon nec
-- | Extract a suitable CtOrigin from a MatchGroup
matchesCtOrigin :: MatchGroup GhcRn (LHsExpr GhcRn) -> CtOrigin
@@ -3678,17 +3678,17 @@ matchesCtOrigin (MG { mg_alts = alts })
| otherwise
= Shouldn'tHappenOrigin "multi-way match"
-matchesCtOrigin (XMatchGroup{}) = panic "matchesCtOrigin"
+matchesCtOrigin (XMatchGroup nec) = noExtCon nec
-- | Extract a suitable CtOrigin from guarded RHSs
grhssCtOrigin :: GRHSs GhcRn (LHsExpr GhcRn) -> CtOrigin
grhssCtOrigin (GRHSs { grhssGRHSs = lgrhss }) = lGRHSCtOrigin lgrhss
-grhssCtOrigin (XGRHSs _) = panic "grhssCtOrigin"
+grhssCtOrigin (XGRHSs nec) = noExtCon nec
-- | Extract a suitable CtOrigin from a list of guarded RHSs
lGRHSCtOrigin :: [LGRHS GhcRn (LHsExpr GhcRn)] -> CtOrigin
lGRHSCtOrigin [L _ (GRHS _ _ (L _ e))] = exprCtOrigin e
-lGRHSCtOrigin [L _ (XGRHS _)] = panic "lGRHSCtOrigin"
+lGRHSCtOrigin [L _ (XGRHS nec)] = noExtCon nec
lGRHSCtOrigin _ = Shouldn'tHappenOrigin "multi-way GRHS"
pprCtLoc :: CtLoc -> SDoc
diff --git a/compiler/typecheck/TcRules.hs b/compiler/typecheck/TcRules.hs
index f1d549568a..9b4c38c735 100644
--- a/compiler/typecheck/TcRules.hs
+++ b/compiler/typecheck/TcRules.hs
@@ -69,7 +69,7 @@ tcRuleDecls (HsRules { rds_src = src
; return $ HsRules { rds_ext = noExt
, rds_src = src
, rds_rules = tc_decls } }
-tcRuleDecls (XRuleDecls _) = panic "tcRuleDecls"
+tcRuleDecls (XRuleDecls nec) = noExtCon nec
tcRule :: RuleDecl GhcRn -> TcM (RuleDecl GhcTcId)
tcRule (HsRule { rd_ext = ext
@@ -144,7 +144,7 @@ tcRule (HsRule { rd_ext = ext
, rd_tmvs = map (noLoc . RuleBndr noExt . noLoc) (all_qtkvs ++ tpl_ids)
, rd_lhs = mkHsDictLet lhs_binds lhs'
, rd_rhs = mkHsDictLet rhs_binds rhs' } }
-tcRule (XRuleDecl _) = panic "tcRule"
+tcRule (XRuleDecl nec) = noExtCon nec
generateRuleConstraints :: Maybe [LHsTyVarBndr GhcRn] -> [LRuleBndr GhcRn]
-> LHsExpr GhcRn -> LHsExpr GhcRn
@@ -203,7 +203,7 @@ tcRuleTmBndrs (L _ (RuleBndrSig _ (L _ name) rn_ty) : rule_bndrs)
; (tyvars, tmvars) <- tcExtendNameTyVarEnv tvs $
tcRuleTmBndrs rule_bndrs
; return (map snd tvs ++ tyvars, id : tmvars) }
-tcRuleTmBndrs (L _ (XRuleBndr _) : _) = panic "tcRuleTmBndrs"
+tcRuleTmBndrs (L _ (XRuleBndr nec) : _) = noExtCon nec
ruleCtxt :: FastString -> SDoc
ruleCtxt name = text "When checking the transformation rule" <+>
diff --git a/compiler/typecheck/TcSigs.hs b/compiler/typecheck/TcSigs.hs
index 5d8d92af80..7f0ff2c7eb 100644
--- a/compiler/typecheck/TcSigs.hs
+++ b/compiler/typecheck/TcSigs.hs
@@ -258,8 +258,8 @@ isCompleteHsSig :: LHsSigWcType GhcRn -> Bool
isCompleteHsSig (HsWC { hswc_ext = wcs
, hswc_body = HsIB { hsib_body = hs_ty } })
= null wcs && no_anon_wc hs_ty
-isCompleteHsSig (HsWC _ (XHsImplicitBndrs _)) = panic "isCompleteHsSig"
-isCompleteHsSig (XHsWildCardBndrs _) = panic "isCompleteHsSig"
+isCompleteHsSig (HsWC _ (XHsImplicitBndrs nec)) = noExtCon nec
+isCompleteHsSig (XHsWildCardBndrs nec) = noExtCon nec
no_anon_wc :: LHsType GhcRn -> Bool
no_anon_wc lty = go lty
@@ -300,7 +300,7 @@ no_anon_wc_bndrs ltvs = all (go . unLoc) ltvs
where
go (UserTyVar _ _) = True
go (KindedTyVar _ _ ki) = no_anon_wc ki
- go (XTyVarBndr{}) = panic "no_anon_wc_bndrs"
+ go (XTyVarBndr nec) = noExtCon nec
{- Note [Fail eagerly on bad signatures]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -465,7 +465,7 @@ tcPatSynSig name sig_ty
mkSpecForAllTys ex $
mkPhiTy prov $
body
-tcPatSynSig _ (XHsImplicitBndrs _) = panic "tcPatSynSig"
+tcPatSynSig _ (XHsImplicitBndrs nec) = noExtCon nec
ppr_tvs :: [TyVar] -> SDoc
ppr_tvs tvs = braces (vcat [ ppr tv <+> dcolon <+> ppr (tyVarKind tv)
diff --git a/compiler/typecheck/TcSplice.hs b/compiler/typecheck/TcSplice.hs
index c495a72d49..b60a057518 100644
--- a/compiler/typecheck/TcSplice.hs
+++ b/compiler/typecheck/TcSplice.hs
@@ -206,9 +206,9 @@ tcBrackTy (ExpBr {}) = tcMetaTy expQTyConName -- Result type is ExpQ (= Q Exp)
tcBrackTy (TypBr {}) = tcMetaTy typeQTyConName -- Result type is Type (= Q Typ)
tcBrackTy (DecBrG {}) = tcMetaTy decsQTyConName -- Result type is Q [Dec]
tcBrackTy (PatBr {}) = tcMetaTy patQTyConName -- Result type is PatQ (= Q Pat)
-tcBrackTy (DecBrL {}) = panic "tcBrackTy: Unexpected DecBrL"
-tcBrackTy (TExpBr {}) = panic "tcUntypedBracket: Unexpected TExpBr"
-tcBrackTy (XBracket {}) = panic "tcUntypedBracket: Unexpected XBracket"
+tcBrackTy (DecBrL {}) = panic "tcBrackTy: Unexpected DecBrL"
+tcBrackTy (TExpBr {}) = panic "tcUntypedBracket: Unexpected TExpBr"
+tcBrackTy (XBracket nec) = noExtCon nec
---------------
tcPendingSplice :: PendingRnSplice -> TcM PendingTcSplice
diff --git a/compiler/typecheck/TcTyClsDecls.hs b/compiler/typecheck/TcTyClsDecls.hs
index 1ac12b096b..ad66355cb7 100644
--- a/compiler/typecheck/TcTyClsDecls.hs
+++ b/compiler/typecheck/TcTyClsDecls.hs
@@ -185,7 +185,7 @@ tcTyClGroup (TyClGroup { group_tyclds = tyclds
; setGblEnv gbl_env $
tcInstDecls1 instds }
-tcTyClGroup (XTyClGroup _) = panic "tcTyClGroup"
+tcTyClGroup (XTyClGroup nec) = noExtCon nec
tcTyClDecls :: [LTyClDecl GhcRn] -> RoleAnnotEnv -> TcM [TyCon]
tcTyClDecls tyclds role_annots
@@ -1031,8 +1031,8 @@ getInitialKind cusk (SynDecl { tcdLName = dL->L _ name
HsKindSig _ _ k -> Just k
_ -> Nothing
-getInitialKind _ (DataDecl _ _ _ _ (XHsDataDefn _)) = panic "getInitialKind"
-getInitialKind _ (XTyClDecl _) = panic "getInitialKind"
+getInitialKind _ (DataDecl _ _ _ _ (XHsDataDefn nec)) = noExtCon nec
+getInitialKind _ (XTyClDecl nec) = noExtCon nec
---------------------------------
getFamDeclInitialKinds
@@ -1071,7 +1071,7 @@ getFamDeclInitialKind parent_cusk mb_parent_tycon
ClosedTypeFamily _ -> ASSERT( isNothing mb_parent_tycon )
ClosedTypeFamilyFlavour
ctxt = TyFamResKindCtxt name
-getFamDeclInitialKind _ _ (XFamilyDecl _) = panic "getFamDeclInitialKind"
+getFamDeclInitialKind _ _ (XFamilyDecl nec) = noExtCon nec
------------------------------------------------------------------------
kcLTyClDecl :: LTyClDecl GhcRn -> TcM ()
@@ -1132,9 +1132,9 @@ kcTyClDecl (FamDecl _ (FamilyDecl { fdLName = (dL->L _ fam_tc_name)
do { fam_tc <- kcLookupTcTyCon fam_tc_name
; mapM_ (kcTyFamInstEqn fam_tc) eqns }
_ -> return ()
-kcTyClDecl (FamDecl _ (XFamilyDecl _)) = panic "kcTyClDecl"
-kcTyClDecl (DataDecl _ _ _ _ (XHsDataDefn _)) = panic "kcTyClDecl"
-kcTyClDecl (XTyClDecl _) = panic "kcTyClDecl"
+kcTyClDecl (FamDecl _ (XFamilyDecl nec)) = noExtCon nec
+kcTyClDecl (DataDecl _ _ _ _ (XHsDataDefn nec)) = noExtCon nec
+kcTyClDecl (XTyClDecl nec) = noExtCon nec
-------------------
kcConDecl :: ConDecl GhcRn -> TcM ()
@@ -1172,8 +1172,8 @@ kcConDecl (ConDeclGADT { con_names = names
; mapM_ (tcHsOpenType . getBangType) (hsConDeclArgTys args)
; _ <- tcHsOpenType res_ty
; return () }
-kcConDecl (XConDecl _) = panic "kcConDecl"
-kcConDecl (ConDeclGADT _ _ _ (XLHsQTyVars _) _ _ _ _) = panic "kcConDecl"
+kcConDecl (XConDecl nec) = noExtCon nec
+kcConDecl (ConDeclGADT _ _ _ (XLHsQTyVars nec) _ _ _ _) = noExtCon nec
{-
Note [Recursion and promoting data constructors]
@@ -1369,7 +1369,7 @@ tcTyClDecl1 _parent roles_info
meths fundeps sigs ats at_defs
; return (classTyCon clas) }
-tcTyClDecl1 _ _ (XTyClDecl _) = panic "tcTyClDecl1"
+tcTyClDecl1 _ _ (XTyClDecl nec) = noExtCon nec
{- *********************************************************************
@@ -1532,9 +1532,9 @@ tcDefaultAssocDecl fam_tc [dL->L loc (FamEqn { feqn_tycon = L _ tc_name
-- We check for well-formedness and validity later,
-- in checkValidClass
}
-tcDefaultAssocDecl _ [dL->L _ (XFamEqn _)] = panic "tcDefaultAssocDecl"
-tcDefaultAssocDecl _ [dL->L _ (FamEqn _ _ _ (XLHsQTyVars _) _ _)]
- = panic "tcDefaultAssocDecl"
+tcDefaultAssocDecl _ [dL->L _ (XFamEqn nec)] = noExtCon nec
+tcDefaultAssocDecl _ [dL->L _ (FamEqn _ _ _ (XLHsQTyVars nec) _ _)]
+ = noExtCon nec
tcDefaultAssocDecl _ [_]
= panic "tcDefaultAssocDecl: Impossible Match" -- due to #15884
@@ -1666,7 +1666,7 @@ tcFamDecl1 parent (FamilyDecl { fdInfo = fam_info
; return fam_tc } }
| otherwise = panic "tcFamInst1" -- Silence pattern-exhaustiveness checker
-tcFamDecl1 _ (XFamilyDecl _) = panic "tcFamDecl1"
+tcFamDecl1 _ (XFamilyDecl nec) = noExtCon nec
-- | Maybe return a list of Bools that say whether a type family was declared
-- injective in the corresponding type arguments. Length of the list is equal to
@@ -1794,7 +1794,7 @@ tcDataDefn roles_info
DataType -> return (mkDataTyConRhs data_cons)
NewType -> ASSERT( not (null data_cons) )
mkNewTyConRhs tc_name tycon (head data_cons)
-tcDataDefn _ _ _ _ (XHsDataDefn _) = panic "tcDataDefn"
+tcDataDefn _ _ _ _ (XHsDataDefn nec) = noExtCon nec
-------------------------
@@ -1832,8 +1832,8 @@ kcTyFamInstEqn tc_fam_tc
where
vis_arity = length (tyConVisibleTyVars tc_fam_tc)
-kcTyFamInstEqn _ (dL->L _ (XHsImplicitBndrs _)) = panic "kcTyFamInstEqn"
-kcTyFamInstEqn _ (dL->L _ (HsIB _ (XFamEqn _))) = panic "kcTyFamInstEqn"
+kcTyFamInstEqn _ (dL->L _ (XHsImplicitBndrs nec)) = noExtCon nec
+kcTyFamInstEqn _ (dL->L _ (HsIB _ (XFamEqn nec))) = noExtCon nec
kcTyFamInstEqn _ _ = panic "kcTyFamInstEqn: Impossible Match" -- due to #15884
@@ -2354,9 +2354,9 @@ tcConDecl rep_tycon tag_map tmpl_bndrs res_tmpl
; traceTc "tcConDecl 2" (ppr names)
; mapM buildOneDataCon names
}
-tcConDecl _ _ _ _ (ConDeclGADT _ _ _ (XLHsQTyVars _) _ _ _ _)
- = panic "tcConDecl"
-tcConDecl _ _ _ _ (XConDecl _) = panic "tcConDecl"
+tcConDecl _ _ _ _ (ConDeclGADT _ _ _ (XLHsQTyVars nec) _ _ _ _)
+ = noExtCon nec
+tcConDecl _ _ _ _ (XConDecl nec) = noExtCon nec
tcConIsInfixH98 :: Name
-> HsConDetails (LHsType GhcRn) (Located [LConDeclField GhcRn])
@@ -3669,8 +3669,8 @@ tcMkDataFamInstCtxt decl@(DataFamInstDecl { dfid_eqn =
HsIB { hsib_body = eqn }})
= tcMkFamInstCtxt (pprDataFamInstFlavour decl <+> text "instance")
(unLoc (feqn_tycon eqn))
-tcMkDataFamInstCtxt (DataFamInstDecl (XHsImplicitBndrs _))
- = panic "tcMkDataFamInstCtxt"
+tcMkDataFamInstCtxt (DataFamInstDecl (XHsImplicitBndrs nec))
+ = noExtCon nec
tcAddDataFamInstCtxt :: DataFamInstDecl GhcRn -> TcM a -> TcM a
tcAddDataFamInstCtxt decl
@@ -3867,7 +3867,7 @@ wrongNumberOfRoles tyvars d@(dL->L _ (RoleAnnotDecl _ _ annots))
text "Expected" <+> (ppr $ length tyvars) <> comma <+>
text "got" <+> (ppr $ length annots) <> colon)
2 (ppr d)
-wrongNumberOfRoles _ (dL->L _ (XRoleAnnotDecl _)) = panic "wrongNumberOfRoles"
+wrongNumberOfRoles _ (dL->L _ (XRoleAnnotDecl nec)) = noExtCon nec
wrongNumberOfRoles _ _ = panic "wrongNumberOfRoles: Impossible Match"
-- due to #15884
@@ -3878,7 +3878,7 @@ illegalRoleAnnotDecl (dL->L loc (RoleAnnotDecl _ tycon _))
setSrcSpan loc $
addErrTc (text "Illegal role annotation for" <+> ppr tycon <> char ';' $$
text "they are allowed only for datatypes and classes.")
-illegalRoleAnnotDecl (dL->L _ (XRoleAnnotDecl _)) = panic "illegalRoleAnnotDecl"
+illegalRoleAnnotDecl (dL->L _ (XRoleAnnotDecl nec)) = noExtCon nec
illegalRoleAnnotDecl _ = panic "illegalRoleAnnotDecl: Impossible Match"
-- due to #15884