@@ -612,13 +612,15 @@ data PDecl' t
612612 -- ^ Record declaration
613613 | PClass (Docstring (Either Err PTerm)) SyntaxInfo FC
614614 [(Name, t)] -- constraints
615− Name
615+ Name -- class name
616616 [(Name, t)] -- parameters
617617 [(Name, Docstring (Either Err PTerm))] -- parameter docstrings
618618 [Name] -- determining parameters
619619 [PDecl' t] -- declarations
620+ (Maybe Name) -- instance constructor name
621+ (Docstring (Either Err PTerm)) -- instance constructor docs
620622 -- ^ Type class: arguments are documentation, syntax info, source location, constraints,
621− -- class name, parameters, method declarations
623+ -- class name, parameters, method declarations, optional constructor name
622624 | PInstance
623625 (Docstring (Either Err PTerm)) -- Instance docs
624626 [(Name, Docstring (Either Err PTerm))] -- Parameter docs
@@ -739,7 +741,7 @@ declared (PData _ _ _ _ _ (PLaterdecl n _ _)) = [n]
739741declared (PParams _ _ ds) = concatMap declared ds
740742declared (PNamespace _ ds) = concatMap declared ds
741743declared (PRecord _ _ _ _ n _ _ _ cn _ _) = n : maybeToList cn
742−declared (PClass _ _ _ _ n _ _ _ ms) = n : concatMap declared ms
744+declared (PClass _ _ _ _ n _ _ _ ms cn cd) = n : (maybeToList cn ++ concatMap declared ms)
743745declared (PInstance _ _ _ _ _ _ _ _ _ _) = []
744746declared (PDSL n _) = [n]
745747declared (PSyntax _ _) = []
@@ -759,7 +761,7 @@ tldeclared (PData _ _ _ _ _ (PDatadecl n _ _ ts)) = n : map fstt ts
759761tldeclared (PParams _ _ ds) = []
760762tldeclared (PMutual _ ds) = concatMap tldeclared ds
761763tldeclared (PNamespace _ ds) = concatMap tldeclared ds
762−tldeclared (PClass _ _ _ _ n _ _ _ ms) = concatMap tldeclared ms
764+tldeclared (PClass _ _ _ _ n _ _ _ ms cn _) = n : (maybeToList cn ++ concatMap tldeclared ms)
763765tldeclared (PInstance _ _ _ _ _ _ _ _ _ _) = []
764766tldeclared _ = []
765767
@@ -775,7 +777,7 @@ defined (PData _ _ _ _ _ (PLaterdecl n _ _)) = []
775777defined (PParams _ _ ds) = concatMap defined ds
776778defined (PNamespace _ ds) = concatMap defined ds
777779defined (PRecord _ _ _ _ n _ _ _ cn _ _) = n : maybeToList cn
778−defined (PClass _ _ _ _ n _ _ _ ms) = n : concatMap defined ms
780+defined (PClass _ _ _ _ n _ _ _ ms cn _) = n : (maybeToList cn ++ concatMap defined ms)
779781defined (PInstance _ _ _ _ _ _ _ _ _ _) = []
780782defined (PDSL n _) = [n]
781783defined (PSyntax _ _) = []
@@ -1076,7 +1078,7 @@ highestFC (PQuoteName _) = Nothing
10761078
10771079-- Type class data
10781080
1079−data ClassInfo = CI { instanceName :: Name,
1081+data ClassInfo = CI { instanceCtorName :: Name,
10801082 class_methods :: [(Name, (FnOpts, PTerm))],
10811083 class_defaults :: [(Name, (Name, PDecl))], -- method name -> default impl
10821084 class_default_superclasses :: [PDecl],
@@ -1286,7 +1288,7 @@ getInferType (App _ (App _ _ ty) _) = ty
12861288
12871289-- Handy primitives: Unit, False, Pair, MkPair, =, mkForeign
12881290
1289−primNames = [eqTy, eqCon, inferTy, inferCon]
1291+primNames = [inferTy, inferCon]
12901292
12911293unitTy = sUN "Unit"
12921294unitCon = sUN "MkUnit"
@@ -1350,7 +1352,7 @@ modDocName = sMN 0 "ModuleDocs"
13501352
13511353-- Defined in builtins.idr
13521354sigmaTy = sNS (sUN "Sigma") ["Builtins"]
1353−existsCon = sNS (sUN "MkSigma") ["Builtins"]
1355+sigmaCon = sNS (sUN "MkSigma") ["Builtins"]
13541356
13551357piBind :: [(Name, PTerm)] -> PTerm -> PTerm
13561358piBind = piBindp expl
@@ -1601,10 +1603,10 @@ pprintPTerm ppo bnd docArgs infixes = prettySe startPrec bnd
16011603 annotated rparen
16021604 where annotated = case pun of
16031605 IsType -> annName sigmaTy
1604− IsTerm -> annName existsCon
1606+ IsTerm -> annName sigmaCon
16051607 TypeOrTerm -> id
16061608 (left, addBinding) = case (l, pun) of
1607− (PRef _ n, IsType) -> (bindingOf n False, ((n, False) :))
1609+ (PRef _ n, IsType) -> (bindingOf n False <+> text ":" <+> prettySe startPrec bnd t, ((n, False) :))
16081610 _ -> (prettySe startPrec bnd l, id )
16091611 prettySe p bnd (PAlternative a as) =
16101612 lparen <> text "|" <> prettyAs <> text "|" <> rparen
@@ -1788,7 +1790,7 @@ showDeclImp o (PData _ _ _ _ _ d) = showDImp o { ppopt_impl = True } d
17881790showDeclImp o (PParams _ ns ps) = text "params" <+> braces (text (show ns) <> line <> showDecls o ps <> line)
17891791showDeclImp o (PNamespace n ps) = text "namespace" <+> text n <> braces (line <> showDecls o ps <> line)
17901792showDeclImp _ (PSyntax _ syn) = text "syntax" <+> text (show syn)
1791−showDeclImp o (PClass _ _ _ cs n ps _ _ ds)
1793+showDeclImp o (PClass _ _ _ cs n ps _ _ ds _ _)
17921794 = text "class" <+> text (show cs) <+> text (show n) <+> text (show ps) <> line <> showDecls o ds
17931795showDeclImp o (PInstance _ _ _ _ cs n _ t _ ds)
17941796 = text "instance" <+> text (show cs) <+> text (show n) <+> prettyImp o t <> line <> showDecls o ds