@@ -17,7 +17,8 @@ import Agda.Utils.List1 as List1 (toList, fromList)
1717import qualified Agda.Utils.List1 as List1
1818import qualified Agda.Utils.List2 as List2
1919import Agda.Utils.Float (toStringWithoutDotZero )
20- import Agda.Utils.Function (applyWhen )
20+ import Agda.Utils.Function
21+ import Agda.Utils.Null
2122import Agda.Utils.Functor (dget , (<&>) )
2223import Agda.Utils.Impossible (__IMPOSSIBLE__ )
2324
@@ -27,9 +28,16 @@ import Render.Literal ()
2728import Render.Name ()
2829import Render.RichText
2930import Render.TypeChecking ()
31+ import Prelude hiding (null )
3032
3133--------------------------------------------------------------------------------
3234
35+ #if MIN_VERSION_Agda(2,7,0)
36+ instance Render a => Render (TacticAttribute' a ) where
37+ render (TacticAttribute t) =
38+ ifNull (render t) empty $ \ d -> " @" <> parens (" tactic" <+> d)
39+ #endif
40+
3341instance Render a => Render (Ranged a ) where
3442 render = render . rangedThing
3543
@@ -172,6 +180,28 @@ instance Render a => Render (Binder' a) where
172180
173181-- | NamedBinding
174182instance Render NamedBinding where
183+ #if MIN_VERSION_Agda(2,7,0)
184+ render (NamedBinding withH
185+ x@ (Arg (ArgInfo h (Modality r q c) _o _fv (Annotation lock))
186+ (Named _mn xb@ (Binder _mp (BName _y _fix t _fin))))) =
187+ applyWhen withH prH $
188+ applyWhenJust (isLabeled x) (\ l -> (text l <+> ) . (" =" <+> )) (render xb)
189+ -- isLabeled looks at _mn and _y
190+ -- pretty xb prints also the pattern _mp
191+ where
192+ prH = (render r <> )
193+ . renderHiding h mparens
194+ . (coh <+> )
195+ . (qnt <+> )
196+ . (lck <+> )
197+ . (tac <+> )
198+ coh = render c
199+ qnt = render q
200+ tac = render t
201+ lck = render lock
202+ -- Parentheses are needed when an attribute @... is printed
203+ mparens = applyUnless (null coh && null qnt && null lck && null tac) parens
204+ #else
175205 render (NamedBinding withH x) =
176206 prH $
177207 if
@@ -192,13 +222,20 @@ instance Render NamedBinding where
192222 mparens'
193223 | noUserQuantity x, Nothing <- bnameTactic bn = id
194224 | otherwise = parens
225+ #endif
195226
196227renderTactic :: BoundName -> Inlines -> Inlines
197228renderTactic = renderTactic' . bnameTactic
198229
199230renderTactic' :: TacticAttribute -> Inlines -> Inlines
231+ #if MIN_VERSION_Agda(2,7,0)
232+ renderTactic' t = (render t <+> )
233+ #else
200234renderTactic' Nothing d = d
201235renderTactic' (Just t) d = " @" <> (parens (" tactic " <> render t) <+> d)
236+ #endif
237+
238+
202239
203240--------------------------------------------------------------------------------
204241
@@ -266,6 +303,17 @@ instance Render WhereClause where
266303 | isNoName (unqualify x) =
267304 vcat [" where" , vcat $ fmap render ds]
268305 render (AnyWhere _range ds) = vcat [" where" , vcat $ fmap render ds]
306+ #if MIN_VERSION_Agda(2,7,0)
307+ render (SomeWhere _ erased m a ds) =
308+ vcat [ hsep $ privateWhenUserWritten a
309+ [ " module" , renderErased erased (render m), " where" ]
310+ , vcat $ map render ds
311+ ]
312+ where
313+ privateWhenUserWritten = \ case
314+ PrivateAccess _ UserWritten -> (" private" : )
315+ _ -> id
316+ #else
269317#if MIN_VERSION_Agda(2,6,4)
270318 render (SomeWhere _range _er m a ds) =
271319#else
@@ -279,6 +327,7 @@ instance Render WhereClause where
279327 [" module" , render m, " where" ],
280328 vcat $ fmap render ds
281329 ]
330+ #endif
282331
283332instance Render LHS where
284333 render (LHS p eqs es) =
@@ -343,10 +392,12 @@ instance Render Declaration where
343392 where
344393 mkInst (InstanceDef _) f = sep [" instance" , f]
345394 mkInst NotInstanceDef f = f
346-
347- mkOverlap j f
348- | isOverlappable j = " overlap" <+> f
349- | otherwise = f
395+ #if MIN_VERSION_Agda(2,7,0)
396+ mkOverlap i d | isYesOverlap i = " overlap" <+> d
397+ #else
398+ mkOverlap i d | isOverlappable i = " overlap" <+> d
399+ #endif
400+ | otherwise = d
350401 Field _ fs ->
351402 sep
352403 [ " field" ,
@@ -418,15 +469,25 @@ instance Render Declaration where
418469 render e
419470 ]
420471 ]
472+
473+ #if MIN_VERSION_Agda(2,7,0)
474+ Record _ erased x dir tel e cs -> pRecord erased x dir tel (Just e) cs
475+ #else
421476#if MIN_VERSION_Agda(2,6,4)
422- Record _ _er x dir tel e cs ->
477+ Record _ _er x dir tel e cs -> pRecord x dir tel ( Just e) cs
423478#else
424- Record _ x dir tel e cs ->
479+ Record _ x dir tel e cs -> pRecord x dir tel ( Just e) cs
425480#endif
426- pRecord x dir tel (Just e) cs
427- RecordDef _ x dir tel cs ->
428- pRecord x dir tel Nothing cs
481+ #endif
482+ #if MIN_VERSION_Agda(2,7,0)
483+ RecordDef _ x dir tel cs -> pRecord defaultErased x dir tel Nothing cs
484+ #else
485+ RecordDef _ x dir tel cs -> pRecord x dir tel Nothing cs
486+ #endif
487+ #if MIN_VERSION_Agda(2,7,0)
488+ #else
429489 RecordDirective r -> pRecordDirective r
490+ #endif
430491 Infix f xs -> render f <+> fsep (punctuate " ," $ fmap render (toList xs))
431492 Syntax n _ -> " syntax" <+> render n <+> " ..."
432493 PatternSyn _ n as p ->
@@ -511,6 +572,9 @@ pHasEta0 = \case
511572 YesEta -> " eta-equality"
512573 NoEta () -> " no-eta-equality"
513574
575+ instance Render RecordDirective where
576+ render = pRecordDirective
577+
514578pRecordDirective ::
515579 RecordDirective ->
516580 Inlines
@@ -523,7 +587,36 @@ pRecordDirective = \case
523587 Eta eta -> pHasEta0 (rangedThing eta)
524588 PatternOrCopattern {} -> " pattern"
525589
526-
590+ #if MIN_VERSION_Agda(2,7,0)
591+ pRecord
592+ :: Erased
593+ -> Name
594+ -> [RecordDirective ]
595+ -> [LamBinding ]
596+ -> Maybe Expr
597+ -> [Declaration ]
598+ -> Inlines
599+ pRecord erased x directives tel me ds = vcat
600+ [ sep
601+ [ hsep [ " record"
602+ , renderErased erased (render x)
603+ , fsep (map render tel)
604+ ]
605+ , pType me
606+ ]
607+ , vcat $ concat
608+ [ map render directives
609+ , map render ds
610+ ]
611+ ]
612+ where pType (Just e) = hsep
613+ [ " :"
614+ , render e
615+ , " where"
616+ ]
617+ pType Nothing =
618+ " where"
619+ #else
527620pRecord ::
528621 Name ->
529622 RecordDirectives ->
@@ -561,6 +654,7 @@ pRecord x (RecordDirectives ind eta pat con) tel me cs =
561654 YesEta -> " eta-equality"
562655 NoEta _ -> " no-eta-equality"
563656 pCon = maybeToList $ ((" constructor" <+> ) . render) . fst <$> con
657+ #endif
564658
565659instance Render OpenShortHand where
566660 render DoOpen = " open"
@@ -607,6 +701,11 @@ instance Render Pragma where
607701 render (NotProjectionLikePragma _ q) =
608702 hsep [ " NOT_PROJECTION_LIKE" , render q ]
609703#endif
704+ #if MIN_VERSION_Agda(2,7,0)
705+ render (InjectiveForInferencePragma _ i) =
706+ hsep $ [" INJECTIVE_FOR_INFERENCE" , render i]
707+ render (OverlapPragma _ x m) = hsep [render m, render x]
708+ #endif
610709
611710instance Render Fixity where
612711 render (Fixity _ Unrelated _) = __IMPOSSIBLE__
0 commit comments