@@ -873,11 +873,63 @@ data PTerm = PQuote Raw -- ^ Inclusion of a core term into the high-level langua
873873 deriving (Eq, Data, Typeable)
874874
875875data PAltType = ExactlyOne Bool -- ^ flag sets whether delay is allowed
876− | FirstSuccess
876+ | FirstSuccess
877877 deriving (Eq, Data, Typeable)
878878
879+
880+mapPTermFC :: (FC -> FC) -> PTerm -> PTerm
881+mapPTermFC f (PQuote q) = PQuote q
882+mapPTermFC f (PRef fc n) = PRef (f fc) n
883+mapPTermFC f (PInferRef fc n) = PInferRef (f fc) n
884+mapPTermFC f (PPatvar fc n) = PPatvar (f fc) n
885+mapPTermFC f (PLam fc n fc' t1 t2) = PLam (f fc) n (f fc') (mapPTermFC f t1) (mapPTermFC f t2)
886+mapPTermFC f (PPi plic n fc t1 t2) = PPi plic n (f fc) (mapPTermFC f t1) (mapPTermFC f t2)
887+mapPTermFC f (PLet fc n fc' t1 t2 t3) = PLet (f fc) n (f fc') (mapPTermFC f t1) (mapPTermFC f t2) (mapPTermFC f t3)
888+mapPTermFC f (PTyped t1 t2) = PTyped (mapPTermFC f t1) (mapPTermFC f t2)
889+mapPTermFC f (PApp fc t args) = PApp (f fc) (mapPTermFC f t) (map (fmap (mapPTermFC f)) args)
890+mapPTermFC f (PAppImpl t1 impls) = PAppImpl (mapPTermFC f t1) impls
891+mapPTermFC f (PAppBind fc t args) = PAppBind (f fc) (mapPTermFC f t) (map (fmap (mapPTermFC f)) args)
892+mapPTermFC f (PMatchApp fc n) = PMatchApp (f fc) n
893+mapPTermFC f (PIfThenElse fc t1 t2 t3) = PIfThenElse (f fc) (mapPTermFC f t1) (mapPTermFC f t2) (mapPTermFC f t3)
894+mapPTermFC f (PCase fc t cases) = PCase (f fc) (mapPTermFC f t) (map (\(l,r) -> (mapPTermFC f l, mapPTermFC f r)) cases)
895+mapPTermFC f (PTrue fc info) = PTrue (f fc) info
896+mapPTermFC f (PResolveTC fc) = PResolveTC (f fc)
897+mapPTermFC f (PRewrite fc t1 t2 t3) = PRewrite (f fc) (mapPTermFC f t1) (mapPTermFC f t2) (fmap (mapPTermFC f) t3)
898+mapPTermFC f (PPair fc info t1 t2) = PPair (f fc) info (mapPTermFC f t1) (mapPTermFC f t2)
899+mapPTermFC f (PDPair fc info t1 t2 t3) = PDPair (f fc) info (mapPTermFC f t1) (mapPTermFC f t2) (mapPTermFC f t3)
900+mapPTermFC f (PAs fc n t) = PAs (f fc) n (mapPTermFC f t)
901+mapPTermFC f (PAlternative ty ts) = PAlternative ty (map (mapPTermFC f) ts)
902+mapPTermFC f (PHidden t) = PHidden (mapPTermFC f t)
903+mapPTermFC f (PType fc) = PType (f fc)
904+mapPTermFC f (PUniverse u) = PUniverse u
905+mapPTermFC f (PGoal fc t1 n t2) = PGoal (f fc) (mapPTermFC f t1) n (mapPTermFC f t2)
906+mapPTermFC f (PConstant fc c) = PConstant (f fc) c
907+mapPTermFC f Placeholder = Placeholder
908+mapPTermFC f (PDoBlock dos) = PDoBlock (map (mapPDoFC f) dos)
909+ where mapPDoFC f (DoExp fc t) = DoExp (f fc) (mapPTermFC f t)
910+ mapPDoFC f (DoBind fc n nfc t) = DoBind (f fc) n (f nfc) (mapPTermFC f t)
911+ mapPDoFC f (DoBindP fc t1 t2 alts) =
912+ DoBindP (f fc) (mapPTermFC f t1) (mapPTermFC f t2) (map (\(l,r)-> (mapPTermFC f l, mapPTermFC f r)) alts)
913+ mapPDoFC f (DoLet fc n nfc t1 t2) = DoLet (f fc) n (f nfc) (mapPTermFC f t1) (mapPTermFC f t2)
914+ mapPDoFC f (DoLetP fc t1 t2) = DoLetP (f fc) (mapPTermFC f t1) (mapPTermFC f t2)
915+mapPTermFC f (PIdiom fc t) = PIdiom (f fc) (mapPTermFC f t)
916+mapPTermFC f (PReturn fc) = PReturn (f fc)
917+mapPTermFC f (PMetavar fc n) = PMetavar (f fc) n
918+mapPTermFC f (PProof tacs) = PProof (map (fmap (mapPTermFC f)) tacs)
919+mapPTermFC f (PTactics tacs) = PTactics (map (fmap (mapPTermFC f)) tacs)
920+mapPTermFC f (PElabError err) = PElabError err
921+mapPTermFC f PImpossible = PImpossible
922+mapPTermFC f (PCoerced t) = PCoerced (mapPTermFC f t)
923+mapPTermFC f (PDisamb msg t) = PDisamb msg (mapPTermFC f t)
924+mapPTermFC f (PUnifyLog t) = PUnifyLog (mapPTermFC f t)
925+mapPTermFC f (PNoImplicits t) = PNoImplicits (mapPTermFC f t)
926+mapPTermFC f (PQuasiquote t1 t2) = PQuasiquote (mapPTermFC f t1) (fmap (mapPTermFC f) t2)
927+mapPTermFC f (PUnquote t) = PUnquote (mapPTermFC f t)
928+mapPTermFC f (PRunElab fc tm ns) = PRunElab (f fc) (mapPTermFC f tm) ns
929+mapPTermFC f (PQuoteName n) = PQuoteName n
930+
879931{-!
880−deriving instance Binary PTerm
932+dg instance Binary PTerm
881933deriving instance NFData PTerm
882934!-}
883935
@@ -968,6 +1020,14 @@ instance Sized a => Sized (PTactic' a) where
9681020 size Skip = 1
9691021 size (TFail ts) = 1 + size ts
9701022 size SourceFC = 1
1023+ size DoUnify = 1
1024+ size (CaseTac x) = 1 + size x
1025+ size (Equiv t) = 1 + size t
1026+ size (Claim x y) = 1 + size x + size y
1027+ size Unfocus = 1
1028+ size (MatchRefine x) = 1 + size x
1029+ size (LetTacTy x y z) = 1 + size x + size y + size z
1030+ size TCInstance = 1
9711031
9721032type PTactic = PTactic' PTerm
9731033
@@ -1092,6 +1152,8 @@ highestFC (PNoImplicits tm) = highestFC tm
10921152highestFC (PQuasiquote _ _) = Nothing
10931153highestFC (PUnquote tm) = highestFC tm
10941154highestFC (PQuoteName _) = Nothing
1155+highestFC (PRunElab fc _ _) = Just fc
1156+highestFC (PAppImpl t _) = highestFC t
10951157
10961158-- Type class data
10971159
@@ -1429,6 +1491,7 @@ consoleDecorate ist (AnnTextFmt fmt) = Idris.Colours.colourise (colour fmt)
14291491consoleDecorate ist (AnnTerm _ _) = id
14301492consoleDecorate ist (AnnSearchResult _) = id
14311493consoleDecorate ist (AnnErr _) = id
1494+consoleDecorate ist (AnnNamespace _ _) = id
14321495
14331496isPostulateName :: Name -> IState -> Bool
14341497isPostulateName n ist = S.member n (idris_postulates ist)