repP (LazyPat p) = do { p1 <- repP p; repPtilde p1 }
repP (AsPat x p) = do { x' <- lookupBinder x; p1 <- repP p; repPaspat x' p1 }
repP (ParPat p) = repP p
-repP (ListPat ps _) = repListPat ps
+repP (ListPat ps _) = do { qs <- repPs ps; repPlist qs }
repP (TuplePat ps _) = do { qs <- repPs ps; repPtup qs }
repP (ConPatIn dc details)
= do { con_str <- lookupOcc dc
repP (NPatIn l Nothing) = do { a <- repOverloadedLiteral l; repPlit a }
repP other = panic "Exotic pattern inside meta brackets"
-repListPat :: [Pat Name] -> DsM (Core M.Pat)
-repListPat [] = do { nil_con <- coreStringLit "[]"
- ; nil_args <- coreList patTyConName []
- ; repPcon nil_con nil_args }
-repListPat (p:ps) = do { p2 <- repP p
- ; ps2 <- repListPat ps
- ; cons_con <- coreStringLit ":"
- ; repPcon cons_con (nonEmptyCoreList [p2,ps2]) }
-
-
----------------------------------------------------------
-- Declaration ordering helpers
repPwild :: DsM (Core M.Pat)
repPwild = rep2 wildPName []
+repPlist :: Core [M.Pat] -> DsM (Core M.Pat)
+repPlist (MkC ps) = rep2 listPName [ps]
+
--------------- Expressions -----------------
repVarOrCon :: Name -> Core String -> DsM (Core M.ExpQ)
repVarOrCon vc str | isDataOcc (nameOccName vc) = repCon str
floatPrimLName, doublePrimLName, rationalLName,
-- Pat
litPName, varPName, tupPName, conPName, tildePName,
- asPName, wildPName, recPName,
+ asPName, wildPName, recPName, listPName,
-- FieldPat
fieldPatName,
-- Match
asPName = varQual FSLIT("asP") asPIdKey
wildPName = varQual FSLIT("wildP") wildPIdKey
recPName = varQual FSLIT("recP") recPIdKey
+listPName = varQual FSLIT("listP") listPIdKey
-- type FieldPat = ...
fieldPatName = varQual FSLIT("fieldPat") fieldPatIdKey
asPIdKey = mkPreludeMiscIdUnique 225
wildPIdKey = mkPreludeMiscIdUnique 226
recPIdKey = mkPreludeMiscIdUnique 227
+listPIdKey = mkPreludeMiscIdUnique 228
-- type FieldPat = ...
-fieldPatIdKey = mkPreludeMiscIdUnique 228
+fieldPatIdKey = mkPreludeMiscIdUnique 230
-- data Match = ...
-matchIdKey = mkPreludeMiscIdUnique 229
+matchIdKey = mkPreludeMiscIdUnique 231
-- data Clause = ...
-clauseIdKey = mkPreludeMiscIdUnique 230
+clauseIdKey = mkPreludeMiscIdUnique 232
-- data Exp = ...
varEIdKey = mkPreludeMiscIdUnique 240