@@ -919,15 +919,15 @@ expandParams dec ps ns infs tm = en tm
919 PLet n' (en ty) (en v) (en (shadow n n' s))
919 PLet n' (en ty) (en v) (en (shadow n n' s))
920 | otherwise = PLet n (en ty) (en v) (en s)
920 | otherwise = PLet n (en ty) (en v) (en s)
921 -- FIXME: Should only do this in a type signature!
921 -- FIXME: Should only do this in a type signature!
922− en (PDPair f (PRef f' n) t r)
922+ en (PDPair f p (PRef f' n) t r)
923 | n `elem` (map fst ps ++ ns) && t /= Placeholder
923 | n `elem` (map fst ps ++ ns) && t /= Placeholder
924 = let n' = mkShadow n in
924 = let n' = mkShadow n in
925− PDPair f (PRef f' n') (en t) (en (shadow n n' r))
925+ PDPair f p (PRef f' n') (en t) (en (shadow n n' r))
926 en (PEq f l r) = PEq f (en l) (en r)
926 en (PEq f l r) = PEq f (en l) (en r)
927 en (PRewrite f l r g) = PRewrite f (en l) (en r) (fmap en g)
927 en (PRewrite f l r g) = PRewrite f (en l) (en r) (fmap en g)
928 en (PTyped l r) = PTyped (en l) (en r)
928 en (PTyped l r) = PTyped (en l) (en r)
929 en (PPair f p l r) = PPair f p (en l) (en r)
929 en (PPair f p l r) = PPair f p (en l) (en r)
930− en (PDPair f l t r) = PDPair f (en l) (en t) (en r)
930+ en (PDPair f p l t r) = PDPair f p (en l) (en t) (en r)
931 en (PAlternative a as) = PAlternative a (map en as)
931 en (PAlternative a as) = PAlternative a (map en as)
932 en (PHidden t) = PHidden (en t)
932 en (PHidden t) = PHidden (en t)
933 en (PUnifyLog t) = PUnifyLog (en t)
933 en (PUnifyLog t) = PUnifyLog (en t)
@@ -1021,7 +1021,7 @@ expandParamsD rhsonly ist dec ps ns (PClauses fc opts n cs)
1021 bnames (PRef _ n) = [n]
1021 bnames (PRef _ n) = [n]
1022 bnames (PApp _ _ args) = concatMap bnames (map getTm args)
1022 bnames (PApp _ _ args) = concatMap bnames (map getTm args)
1023 bnames (PPair _ _ l r) = bnames l ++ bnames r
1023 bnames (PPair _ _ l r) = bnames l ++ bnames r
1024− bnames (PDPair _ l Placeholder r) = bnames l ++ bnames r
1024+ bnames (PDPair _ _ l Placeholder r) = bnames l ++ bnames r
1025 bnames _ = []
1025 bnames _ = []
1027expandParamsD rhs ist dec ps ns (PData doc syn fc co pd)
1027expandParamsD rhs ist dec ps ns (PData doc syn fc co pd)
@@ -1086,7 +1086,7 @@ getPriority i tm = 1 -- pri tm
1086 pri (PCase _ f as) = max 1 (max (pri f) (foldr max 0 (map (pri.snd) as)))
1086 pri (PCase _ f as) = max 1 (max (pri f) (foldr max 0 (map (pri.snd) as)))
1087 pri (PTyped l r) = pri l
1087 pri (PTyped l r) = pri l
1088 pri (PPair _ _ l r) = max 1 (max (pri l) (pri r))
1088 pri (PPair _ _ l r) = max 1 (max (pri l) (pri r))
1089− pri (PDPair _ l t r) = max 1 (max (pri l) (max (pri t) (pri r)))
1089+ pri (PDPair _ _ l t r) = max 1 (max (pri l) (max (pri t) (pri r)))
1090 pri (PAlternative a as) = maximum (map pri as)
1090 pri (PAlternative a as) = maximum (map pri as)
1091 pri (PConstant _) = 0
1091 pri (PConstant _) = 0
1092 pri Placeholder = 1
1092 pri Placeholder = 1
@@ -1264,11 +1264,11 @@ implicitise syn ignore ist tm = -- trace ("INCOMING " ++ showImp True tm) $
1264 = do (decls, ns) <- get
1264 = do (decls, ns) <- get
1265 let isn = namesIn uvars ist l ++ namesIn uvars ist r
1265 let isn = namesIn uvars ist l ++ namesIn uvars ist r
1266 put (decls, nub (ns ++ (isn `dropAll` (env ++ map fst (getImps decls)))))
1266 put (decls, nub (ns ++ (isn `dropAll` (env ++ map fst (getImps decls)))))
1267− imps top env (PDPair _ (PRef _ n) t r)
1267+ imps top env (PDPair _ _ (PRef _ n) t r)
1268 = do (decls, ns) <- get
1268 = do (decls, ns) <- get
1269 let isn = nub (namesIn uvars ist t ++ namesIn uvars ist r) \\ [n]
1269 let isn = nub (namesIn uvars ist t ++ namesIn uvars ist r) \\ [n]
1270 put (decls, nub (ns ++ (isn \\ (env ++ map fst (getImps decls)))))
1270 put (decls, nub (ns ++ (isn \\ (env ++ map fst (getImps decls)))))
1271− imps top env (PDPair _ l t r)
1271+ imps top env (PDPair _ _ l t r)
1272 = do (decls, ns) <- get
1272 = do (decls, ns) <- get
1273 let isn = namesIn uvars ist l ++ namesIn uvars ist t ++
1273 let isn = namesIn uvars ist l ++ namesIn uvars ist t ++
1274 namesIn uvars ist r
1274 namesIn uvars ist r
@@ -1334,11 +1334,11 @@ addImpl' inpat env infns ist ptm
1334 = let l' = ai env ds l
1334 = let l' = ai env ds l
1335 r' = ai env ds r in
1335 r' = ai env ds r in
1336 PPair fc p l' r'
1336 PPair fc p l' r'
1337− ai env ds (PDPair fc l t r)
1337+ ai env ds (PDPair fc p l t r)
1338 = let l' = ai env ds l
1338 = let l' = ai env ds l
1339 t' = ai env ds t
1339 t' = ai env ds t
1340 r' = ai env ds r in
1340 r' = ai env ds r in
1341− PDPair fc l' t' r'
1341+ PDPair fc p l' t' r'
1342 ai env ds (PAlternative a as)
1342 ai env ds (PAlternative a as)
1343 = let as' = map (ai env ds) as in
1343 = let as' = map (ai env ds) as in
1344 PAlternative a as'
1344 PAlternative a as'
@@ -1534,7 +1534,7 @@ stripUnmatchable i (PApp fc fn args) = PApp fc fn (fmap (fmap su) args) where
1534 if null alts' then Placeholder
1534 if null alts' then Placeholder
1535 else PAlternative b alts'
1535 else PAlternative b alts'
1536 su (PPair fc p l r) = PPair fc p (su l) (su r)
1536 su (PPair fc p l r) = PPair fc p (su l) (su r)
1537− su (PDPair fc l t r) = PDPair fc (su l) (su t) (su r)
1537+ su (PDPair fc p l t r) = PDPair fc p (su l) (su t) (su r)
1538 su t = t
1538 su t = t
1539stripUnmatchable i tm = tm
1539stripUnmatchable i tm = tm
@@ -1645,10 +1645,10 @@ matchClause' names i x y = checkRpts $ match (fullApp x) (fullApp y) where
1645 match (PPair _ _ l r) (PPair _ _ l' r') = do ml <- match' l l'
1645 match (PPair _ _ l r) (PPair _ _ l' r') = do ml <- match' l l'
1646 mr <- match' r r'
1646 mr <- match' r r'
1647 return (ml ++ mr)
1647 return (ml ++ mr)
1648− match (PDPair _ l t r) (PDPair _ l' t' r') = do ml <- match' l l'
1648+ match (PDPair _ _ l t r) (PDPair _ _ l' t' r') = do ml <- match' l l'
1649− mt <- match' t t'
1649+ mt <- match' t t'
1650− mr <- match' r r'
1650+ mr <- match' r r'
1651− return (ml ++ mt ++ mr)
1651+ return (ml ++ mt ++ mr)
1652 match (PAlternative a as) (PAlternative a' as')
1652 match (PAlternative a as) (PAlternative a' as')
1653 = do ms <- zipWithM match' as as'
1653 = do ms <- zipWithM match' as as'
1654 return (concat ms)
1654 return (concat ms)
@@ -1726,7 +1726,7 @@ substMatchShadow n shs tm t = sm shs t where
1726 (fmap (sm xs) tm)
1726 (fmap (sm xs) tm)
1727 sm xs (PTyped x y) = PTyped (sm xs x) (sm xs y)
1727 sm xs (PTyped x y) = PTyped (sm xs x) (sm xs y)
1728 sm xs (PPair f p x y) = PPair f p (sm xs x) (sm xs y)
1728 sm xs (PPair f p x y) = PPair f p (sm xs x) (sm xs y)
1729− sm xs (PDPair f x t y) = PDPair f (sm xs x) (sm xs t) (sm xs y)
1729+ sm xs (PDPair f p x t y) = PDPair f p (sm xs x) (sm xs t) (sm xs y)
1730 sm xs (PAlternative a as) = PAlternative a (map (sm xs) as)
1730 sm xs (PAlternative a as) = PAlternative a (map (sm xs) as)
1731 sm xs (PHidden x) = PHidden (sm xs x)
1731 sm xs (PHidden x) = PHidden (sm xs x)
1732 sm xs (PUnifyLog x) = PUnifyLog (sm xs x)
1732 sm xs (PUnifyLog x) = PUnifyLog (sm xs x)
@@ -1749,7 +1749,7 @@ shadow n n' t = sm t where
1749 sm (PRewrite f x y tm) = PRewrite f (sm x) (sm y) (fmap sm tm)
1749 sm (PRewrite f x y tm) = PRewrite f (sm x) (sm y) (fmap sm tm)
1750 sm (PTyped x y) = PTyped (sm x) (sm y)
1750 sm (PTyped x y) = PTyped (sm x) (sm y)
1751 sm (PPair f p x y) = PPair f p (sm x) (sm y)
1751 sm (PPair f p x y) = PPair f p (sm x) (sm y)
1752− sm (PDPair f x t y) = PDPair f (sm x) (sm t) (sm y)
1752+ sm (PDPair f p x t y) = PDPair f p (sm x) (sm t) (sm y)
1753 sm (PAlternative a as) = PAlternative a (map sm as)
1753 sm (PAlternative a as) = PAlternative a (map sm as)
1754 sm (PTactics ts) = PTactics (map (fmap sm) ts)
1754 sm (PTactics ts) = PTactics (map (fmap sm) ts)
1755 sm (PProof ts) = PProof (map (fmap sm) ts)
1755 sm (PProof ts) = PProof (map (fmap sm) ts)
@@ -1822,7 +1822,7 @@ mkUniqueNames env tm = evalState (mkUniq tm) env where
1822 mkUniq (PPair fc p l r)
1822 mkUniq (PPair fc p l r)
1823 = do l' <- mkUniq l; r' <- mkUniq r
1823 = do l' <- mkUniq l; r' <- mkUniq r
1824 return $! PPair fc p l' r'
1824 return $! PPair fc p l' r'
1825− mkUniq (PDPair fc (PRef fc' n) t sc)
1825+ mkUniq (PDPair fc p (PRef fc' n) t sc)
1826 | t /= Placeholder
1826 | t /= Placeholder
1827 = do env <- get
1827 = do env <- get
1828 (n', sc') <- if n `elem` env
1828 (n', sc') <- if n `elem` env
@@ -1832,10 +1832,10 @@ mkUniqueNames env tm = evalState (mkUniq tm) env where
1832 put (n' : env)
1832 put (n' : env)
1833 t' <- mkUniq t
1833 t' <- mkUniq t
1834 sc'' <- mkUniq sc'
1834 sc'' <- mkUniq sc'
1835− return $! PDPair fc (PRef fc' n') t' sc''
1835+ return $! PDPair fc p (PRef fc' n') t' sc''
1836− mkUniq (PDPair fc l t r)
1836+ mkUniq (PDPair fc p l t r)
1837 = do l' <- mkUniq l; t' <- mkUniq t; r' <- mkUniq r
1837 = do l' <- mkUniq l; t' <- mkUniq t; r' <- mkUniq r
1838− return $! PDPair fc l' t' r'
1838+ return $! PDPair fc p l' t' r'
1839 mkUniq (PAlternative b as)
1839 mkUniq (PAlternative b as)
1840 = liftM (PAlternative b) (mapM mkUniq as)
1840 = liftM (PAlternative b) (mapM mkUniq as)
1841 mkUniq (PHidden t) = liftM PHidden (mkUniq t)
1841 mkUniq (PHidden t) = liftM PHidden (mkUniq t)