@@ -61,7 +61,7 @@ import System.Random.Stateful (
6161import System.Random.Stateful (
6262 SplitGen (.. )
6363 )
64- import Codec.CBOR.Cuddle.CDDL.CBORGenerator (WrappedTerm (.. ))
64+ import Codec.CBOR.Cuddle.CDDL.CBORGenerator (WrappedTerm (.. ), CBORGenerator ( .. ) )
6565import Codec.CBOR.Cuddle.IndexMappable (IndexMappable (.. ))
6666#endif
6767
@@ -358,22 +358,22 @@ genForCTree (CTree.Tag tag node) = do
358358 case enc of
359359 S x -> pure $ S $ TTagged tag x
360360 _ -> error " Tag controller does not correspond to a single term"
361- genForCTree (CTree. CTreeE x) = genForNode x
361+ genForCTree (CTree. CTreeE (MRuleRef n)) = genForNode n
362+ genForCTree (CTree. CTreeE (MGenerator (CBORGenerator gen) _)) = gen StateGenM
362363
363- genForNode :: RandomGen g => CTree. Node MonoReferenced -> M g WrappedTerm
364+ genForNode :: RandomGen g => Name -> M g WrappedTerm
364365genForNode = genForCTree <=< resolveRef
365366
366367-- | Take a reference and resolve it to the relevant Tree, following multiple
367368-- links if necessary.
368- resolveRef :: RandomGen g => CTree. Node MonoReferenced -> M g (CTree MonoReferenced )
369- resolveRef ( MRuleRef n) = do
369+ resolveRef :: RandomGen g => Name -> M g (CTree MonoReferenced )
370+ resolveRef n = do
370371 (CTreeRoot cddl) <- ask @ " cddl"
371372 -- Since we follow a reference, we increase the 'depth' of the gen monad.
372373 modify @ " depth" (+ 1 )
373374 case Map. lookup n cddl of
374375 Nothing -> error $ " Unbound reference: " <> show n
375376 Just val -> pure val
376- resolveRef (MGenerator _ _) = undefined
377377
378378-- | Generate a CBOR Term corresponding to a top-level name.
379379--
0 commit comments