on master help sign in
Add a special name for instance constructors.
commit1a79f2bc4ee3c8ee016cff34aeb5e4c5ffc55a1d authorMatus Tejiscak <ziman@functor.sk> dateThu 27 Feb 2014, 16:44 (13 years ago) parent87e9604
4 files changed+7−1
src/Idris/Core/DeepSeq.hs+1 src/Idris/Core/TT.hs+2 src/Idris/ElabDecls.hs+1−1 src/Idris/IBC.hs+3
src/Idris/Core/DeepSeq.hs+1
@@ -19,6 +19,7 @@ instance NFData SpecialName where
1919 rnf (MethodN x1) = rnf x1 `seq` ()
2020 rnf (CaseN x1) = rnf x1 `seq` ()
2121 rnf (ElimN x1) = rnf x1 `seq` ()
22+ rnf (InstanceCtorN x1) = rnf x1 `seq` ()
2223
2324instance NFData Raw where
2425 rnf (Var x1) = rnf x1 `seq` ()
src/Idris/Core/TT.hs+2
@@ -279,6 +279,7 @@ data SpecialName = WhereN Int Name Name
279279 | MethodN Name
280280 | CaseN Name
281281 | ElimN Name
282+ | InstanceCtorN Name
282283 deriving (Eq, Ord)
283284{-!
284285deriving instance Binary SpecialName
@@ -322,6 +323,7 @@ instance Show SpecialName where
322323 show (ParentN p c) = show p ++ "#" ++ T.unpack c
323324 show (CaseN n) = "case block in " ++ show n
324325 show (ElimN n) = "<<" ++ show n ++ " eliminator>>"
326+ show (InstanceCtorN n) = "constructor of " ++ show n
325327
326328-- Show a name in a way decorated for code generation, not human reading
327329showCG :: Name -> String
src/Idris/ElabDecls.hs+1−1
@@ -1721,7 +1721,7 @@ elabClass :: ElabInfo -> SyntaxInfo -> String ->
17211721 FC -> [PTerm] ->
17221722 Name -> [(Name, PTerm)] -> [PDecl] -> Idris ()
17231723elabClass info syn doc fc constraints tn ps ds
1724− = do let cn = sUN ("instance" ++ show tn) -- MN 0 ("instance" ++ show tn)
1724+ = do let cn = SN (InstanceCtorN tn) -- sUN ("instance" ++ show tn) -- MN 0 ("instance" ++ show tn)
17251725 let tty = pibind ps PType
17261726 let constraint = PApp fc (PRef fc tn)
17271727 (map (pexp . PRef fc) (map fst ps))
src/Idris/IBC.hs+3
@@ -559,6 +559,7 @@ instance Binary SpecialName where
559559 put x1
560560 CaseN x1 -> do putWord8 4; put x1
561561 ElimN x1 -> do putWord8 5; put x1
562+ InstanceCtorN x1 -> do putWord8 6; put x1
562563 get
563564 = do i <- getWord8
564565 case i of
@@ -578,6 +579,8 @@ instance Binary SpecialName where
578579 return (CaseN x1)
579580 5 -> do x1 <- get
580581 return (ElimN x1)
582+ 6 -> do x1 <- get
583+ return (InstanceCtorN x1)
581584 _ -> error "Corrupted binary data for SpecialName"
582585
583586