@@ -846,15 +846,15 @@ expandParams dec ps ns infs tm = en tm
846 PLet n' (en ty) (en v) (en (shadow n n' s))
846 PLet n' (en ty) (en v) (en (shadow n n' s))
847 | otherwise = PLet n (en ty) (en v) (en s)
847 | otherwise = PLet n (en ty) (en v) (en s)
848 -- FIXME: Should only do this in a type signature!
848 -- FIXME: Should only do this in a type signature!
849− en (PDPair f (PRef f' n) t r)
849+ en (PDPair f p (PRef f' n) t r)
850 | n `elem` (map fst ps ++ ns) && t /= Placeholder
850 | n `elem` (map fst ps ++ ns) && t /= Placeholder
851 = let n' = mkShadow n in
851 = let n' = mkShadow n in
852− PDPair f (PRef f' n') (en t) (en (shadow n n' r))
852+ PDPair f p (PRef f' n') (en t) (en (shadow n n' r))
853 en (PEq f l r) = PEq f (en l) (en r)
853 en (PEq f l r) = PEq f (en l) (en r)
854 en (PRewrite f l r g) = PRewrite f (en l) (en r) (fmap en g)
854 en (PRewrite f l r g) = PRewrite f (en l) (en r) (fmap en g)
855 en (PTyped l r) = PTyped (en l) (en r)
855 en (PTyped l r) = PTyped (en l) (en r)
856 en (PPair f p l r) = PPair f p (en l) (en r)
856 en (PPair f p l r) = PPair f p (en l) (en r)
857− en (PDPair f l t r) = PDPair f (en l) (en t) (en r)
857+ en (PDPair f p l t r) = PDPair f p (en l) (en t) (en r)
858 en (PAlternative a as) = PAlternative a (map en as)
858 en (PAlternative a as) = PAlternative a (map en as)
859 en (PHidden t) = PHidden (en t)
859 en (PHidden t) = PHidden (en t)
860 en (PUnifyLog t) = PUnifyLog (en t)
860 en (PUnifyLog t) = PUnifyLog (en t)
@@ -948,7 +948,7 @@ expandParamsD rhsonly ist dec ps ns (PClauses fc opts n cs)
948 bnames (PRef _ n) = [n]
948 bnames (PRef _ n) = [n]
949 bnames (PApp _ _ args) = concatMap bnames (map getTm args)
949 bnames (PApp _ _ args) = concatMap bnames (map getTm args)
950 bnames (PPair _ _ l r) = bnames l ++ bnames r
950 bnames (PPair _ _ l r) = bnames l ++ bnames r
951− bnames (PDPair _ l Placeholder r) = bnames l ++ bnames r
951+ bnames (PDPair _ _ l Placeholder r) = bnames l ++ bnames r
952 bnames _ = []
952 bnames _ = []
954expandParamsD rhs ist dec ps ns (PData doc syn fc co pd)
954expandParamsD rhs ist dec ps ns (PData doc syn fc co pd)
@@ -1013,7 +1013,7 @@ getPriority i tm = 1 -- pri tm
1013 pri (PCase _ f as) = max 1 (max (pri f) (foldr max 0 (map (pri.snd) as)))
1013 pri (PCase _ f as) = max 1 (max (pri f) (foldr max 0 (map (pri.snd) as)))
1014 pri (PTyped l r) = pri l
1014 pri (PTyped l r) = pri l
1015 pri (PPair _ _ l r) = max 1 (max (pri l) (pri r))
1015 pri (PPair _ _ l r) = max 1 (max (pri l) (pri r))
1016− pri (PDPair _ l t r) = max 1 (max (pri l) (max (pri t) (pri r)))
1016+ pri (PDPair _ _ l t r) = max 1 (max (pri l) (max (pri t) (pri r)))
1017 pri (PAlternative a as) = maximum (map pri as)
1017 pri (PAlternative a as) = maximum (map pri as)
1018 pri (PConstant _) = 0
1018 pri (PConstant _) = 0
1019 pri Placeholder = 1
1019 pri Placeholder = 1
@@ -1191,11 +1191,11 @@ implicitise syn ignore ist tm = -- trace ("INCOMING " ++ showImp True tm) $
1191 = do (decls, ns) <- get
1191 = do (decls, ns) <- get
1192 let isn = namesIn uvars ist l ++ namesIn uvars ist r
1192 let isn = namesIn uvars ist l ++ namesIn uvars ist r
1193 put (decls, nub (ns ++ (isn `dropAll` (env ++ map fst (getImps decls)))))
1193 put (decls, nub (ns ++ (isn `dropAll` (env ++ map fst (getImps decls)))))
1194− imps top env (PDPair _ (PRef _ n) t r)
1194+ imps top env (PDPair _ _ (PRef _ n) t r)
1195 = do (decls, ns) <- get
1195 = do (decls, ns) <- get
1196 let isn = nub (namesIn uvars ist t ++ namesIn uvars ist r) \\ [n]
1196 let isn = nub (namesIn uvars ist t ++ namesIn uvars ist r) \\ [n]
1197 put (decls, nub (ns ++ (isn \\ (env ++ map fst (getImps decls)))))
1197 put (decls, nub (ns ++ (isn \\ (env ++ map fst (getImps decls)))))
1198− imps top env (PDPair _ l t r)
1198+ imps top env (PDPair _ _ l t r)
1199 = do (decls, ns) <- get
1199 = do (decls, ns) <- get
1200 let isn = namesIn uvars ist l ++ namesIn uvars ist t ++
1200 let isn = namesIn uvars ist l ++ namesIn uvars ist t ++
1201 namesIn uvars ist r
1201 namesIn uvars ist r
@@ -1261,11 +1261,11 @@ addImpl' inpat env infns ist ptm
1261 = let l' = ai env ds l
1261 = let l' = ai env ds l
1262 r' = ai env ds r in
1262 r' = ai env ds r in
1263 PPair fc p l' r'
1263 PPair fc p l' r'
1264− ai env ds (PDPair fc l t r)
1264+ ai env ds (PDPair fc p l t r)
1265 = let l' = ai env ds l
1265 = let l' = ai env ds l
1266 t' = ai env ds t
1266 t' = ai env ds t
1267 r' = ai env ds r in
1267 r' = ai env ds r in
1268− PDPair fc l' t' r'
1268+ PDPair fc p l' t' r'
1269 ai env ds (PAlternative a as)
1269 ai env ds (PAlternative a as)
1270 = let as' = map (ai env ds) as in
1270 = let as' = map (ai env ds) as in
1271 PAlternative a as'
1271 PAlternative a as'
@@ -1461,7 +1461,7 @@ stripUnmatchable i (PApp fc fn args) = PApp fc fn (fmap (fmap su) args) where
1461 if null alts' then Placeholder
1461 if null alts' then Placeholder
1462 else PAlternative b alts'
1462 else PAlternative b alts'
1463 su (PPair fc p l r) = PPair fc p (su l) (su r)
1463 su (PPair fc p l r) = PPair fc p (su l) (su r)
1464− su (PDPair fc l t r) = PDPair fc (su l) (su t) (su r)
1464+ su (PDPair fc p l t r) = PDPair fc p (su l) (su t) (su r)
1465 su t = t
1465 su t = t
1466stripUnmatchable i tm = tm
1466stripUnmatchable i tm = tm
@@ -1572,10 +1572,10 @@ matchClause' names i x y = checkRpts $ match (fullApp x) (fullApp y) where
1572 match (PPair _ _ l r) (PPair _ _ l' r') = do ml <- match' l l'
1572 match (PPair _ _ l r) (PPair _ _ l' r') = do ml <- match' l l'
1573 mr <- match' r r'
1573 mr <- match' r r'
1574 return (ml ++ mr)
1574 return (ml ++ mr)
1575− match (PDPair _ l t r) (PDPair _ l' t' r') = do ml <- match' l l'
1575+ match (PDPair _ _ l t r) (PDPair _ _ l' t' r') = do ml <- match' l l'
1576− mt <- match' t t'
1576+ mt <- match' t t'
1577− mr <- match' r r'
1577+ mr <- match' r r'
1578− return (ml ++ mt ++ mr)
1578+ return (ml ++ mt ++ mr)
1579 match (PAlternative a as) (PAlternative a' as')
1579 match (PAlternative a as) (PAlternative a' as')
1580 = do ms <- zipWithM match' as as'
1580 = do ms <- zipWithM match' as as'
1581 return (concat ms)
1581 return (concat ms)
@@ -1653,7 +1653,7 @@ substMatchShadow n shs tm t = sm shs t where
1653 (fmap (sm xs) tm)
1653 (fmap (sm xs) tm)
1654 sm xs (PTyped x y) = PTyped (sm xs x) (sm xs y)
1654 sm xs (PTyped x y) = PTyped (sm xs x) (sm xs y)
1655 sm xs (PPair f p x y) = PPair f p (sm xs x) (sm xs y)
1655 sm xs (PPair f p x y) = PPair f p (sm xs x) (sm xs y)
1656− sm xs (PDPair f x t y) = PDPair f (sm xs x) (sm xs t) (sm xs y)
1656+ sm xs (PDPair f p x t y) = PDPair f p (sm xs x) (sm xs t) (sm xs y)
1657 sm xs (PAlternative a as) = PAlternative a (map (sm xs) as)
1657 sm xs (PAlternative a as) = PAlternative a (map (sm xs) as)
1658 sm xs (PHidden x) = PHidden (sm xs x)
1658 sm xs (PHidden x) = PHidden (sm xs x)
1659 sm xs (PUnifyLog x) = PUnifyLog (sm xs x)
1659 sm xs (PUnifyLog x) = PUnifyLog (sm xs x)
@@ -1676,7 +1676,7 @@ shadow n n' t = sm t where
1676 sm (PRewrite f x y tm) = PRewrite f (sm x) (sm y) (fmap sm tm)
1676 sm (PRewrite f x y tm) = PRewrite f (sm x) (sm y) (fmap sm tm)
1677 sm (PTyped x y) = PTyped (sm x) (sm y)
1677 sm (PTyped x y) = PTyped (sm x) (sm y)
1678 sm (PPair f p x y) = PPair f p (sm x) (sm y)
1678 sm (PPair f p x y) = PPair f p (sm x) (sm y)
1679− sm (PDPair f x t y) = PDPair f (sm x) (sm t) (sm y)
1679+ sm (PDPair f p x t y) = PDPair f p (sm x) (sm t) (sm y)
1680 sm (PAlternative a as) = PAlternative a (map sm as)
1680 sm (PAlternative a as) = PAlternative a (map sm as)
1681 sm (PTactics ts) = PTactics (map (fmap sm) ts)
1681 sm (PTactics ts) = PTactics (map (fmap sm) ts)
1682 sm (PProof ts) = PProof (map (fmap sm) ts)
1682 sm (PProof ts) = PProof (map (fmap sm) ts)
@@ -1749,7 +1749,7 @@ mkUniqueNames env tm = evalState (mkUniq tm) env where
1749 mkUniq (PPair fc p l r)
1749 mkUniq (PPair fc p l r)
1750 = do l' <- mkUniq l; r' <- mkUniq r
1750 = do l' <- mkUniq l; r' <- mkUniq r
1751 return $! PPair fc p l' r'
1751 return $! PPair fc p l' r'
1752− mkUniq (PDPair fc (PRef fc' n) t sc)
1752+ mkUniq (PDPair fc p (PRef fc' n) t sc)
1753 | t /= Placeholder
1753 | t /= Placeholder
1754 = do env <- get
1754 = do env <- get
1755 (n', sc') <- if n `elem` env
1755 (n', sc') <- if n `elem` env
@@ -1759,10 +1759,10 @@ mkUniqueNames env tm = evalState (mkUniq tm) env where
1759 put (n' : env)
1759 put (n' : env)
1760 t' <- mkUniq t
1760 t' <- mkUniq t
1761 sc'' <- mkUniq sc'
1761 sc'' <- mkUniq sc'
1762− return $! PDPair fc (PRef fc' n') t' sc''
1762+ return $! PDPair fc p (PRef fc' n') t' sc''
1763− mkUniq (PDPair fc l t r)
1763+ mkUniq (PDPair fc p l t r)
1764 = do l' <- mkUniq l; t' <- mkUniq t; r' <- mkUniq r
1764 = do l' <- mkUniq l; t' <- mkUniq t; r' <- mkUniq r
1765− return $! PDPair fc l' t' r'
1765+ return $! PDPair fc p l' t' r'
1766 mkUniq (PAlternative b as)
1766 mkUniq (PAlternative b as)
1767 = liftM (PAlternative b) (mapM mkUniq as)
1767 = liftM (PAlternative b) (mapM mkUniq as)
1768 mkUniq (PHidden t) = liftM PHidden (mkUniq t)
1768 mkUniq (PHidden t) = liftM PHidden (mkUniq t)