@@ -486,9 +486,9 @@ class IsCborable a
486
486
487
487
instance IsCborable ByteString
488
488
489
- instance IsCborable CRef
489
+ instance IsCborable CRefType
490
490
491
- instance IsCborable CGRef
491
+ instance IsCborable CGRefType
492
492
493
493
cbor :: (IsCborable b , IsConstrainable c b ) => c -> Rule -> Constrained
494
494
cbor v r@ (Named n _ _) =
@@ -507,9 +507,9 @@ class IsComparable a
507
507
508
508
instance IsComparable Int
509
509
510
- instance IsComparable CRef
510
+ instance IsComparable CRefType
511
511
512
- instance IsComparable CGRef
512
+ instance IsComparable CGRefType
513
513
514
514
le :: (IsComparable a , IsConstrainable c a ) => c -> Word64 -> Constrained
515
515
le v bound =
@@ -633,10 +633,14 @@ instance IsType0 HuddleItem where
633
633
toType0 (HIGroup g) = toType0 g
634
634
toType0 (HIGRule g) =
635
635
error $
636
- " Attempt to reference generic rule from HuddleItem not supported: " <> show g
636
+ " Attempt to reference a raw generic rule: "
637
+ <> show g
638
+ <> " . Most likely this indicates you haven't provided generic parameters."
637
639
toType0 (HIGRule' g) =
638
640
error $
639
- " Attempt to reference generic rule from HuddleItem not supported: " <> show g
641
+ " Attempt to reference a raw generic rule: "
642
+ <> show g
643
+ <> " . Most likely this indicates you haven't provided generic parameters."
640
644
641
645
class CanQuantify a where
642
646
-- | Apply a lower bound
@@ -960,12 +964,13 @@ binding2 fRule t0 t1 =
960
964
type GRuleDef' = Named (FnWithArg GRef Type0 )
961
965
962
966
data GRuleCallAux = GRuleCallAux
963
- { defFn :: FnWithArg GRef Type0 ,
964
- callArg :: Type2
967
+ { defFn :: FnWithArg GRef Type0
968
+ , callArg :: Type2
965
969
}
966
970
967
971
type GRuleCall' = Named GRuleCallAux
968
972
973
+ -- | Create a generic rule definition binding a single generic parameter.
969
974
binding' :: (GRef -> Rule ) -> GRuleDef'
970
975
binding' fRule =
971
976
Named
@@ -983,15 +988,18 @@ instance IsGRuleDef GRuleDef' where
983
988
984
989
instance IsGRuleDef HuddleItem where
985
990
toGRuleDef (HIGRule' gd) = gd
986
- toGRuleDef _ = error " Attempt to use a non-generic rule as a GRuleDef"
991
+ toGRuleDef hi =
992
+ error $
993
+ " Attempt to apply generic parameters to a non-generic rule: " <> show hi
987
994
995
+ -- | Call a generic definition, applying the given type parameter.
988
996
(<--) :: (IsType0 t0 , IsGRuleDef gd ) => gd -> t0 -> GRuleCall'
989
997
(toGRuleDef -> f) <-- t0 = fmap toCall f
990
998
where
991
999
toCall rd =
992
1000
GRuleCallAux
993
- { defFn = rd,
994
- callArg = t2
1001
+ { defFn = rd
1002
+ , callArg = t2
995
1003
}
996
1004
t2 = case toType0 t0 of
997
1005
NoChoice x -> x
@@ -1228,7 +1236,7 @@ toCDDL' mkPseudoRoot hdl =
1228
1236
toGenericCall' (Named n gr _) =
1229
1237
C. T2Name
1230
1238
(C. Name n)
1231
- (Just . C. GenericArg $ ( toCDDLType1 (callArg gr) ) NE. :| [] )
1239
+ (Just . C. GenericArg $ toCDDLType1 (callArg gr) NE. :| [] )
1232
1240
1233
1241
toGenRuleDef :: GRuleDef -> C. WithComments C. Rule
1234
1242
toGenRuleDef (Named n gr c) =
0 commit comments