summaryrefslogtreecommitdiff
path: root/src/Language/Fiddle/Compiler/ConsistencyCheck.hs
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2024-11-27 13:16:06 -0700
committerJosh Rahm <joshuarahm@gmail.com>2024-11-27 13:16:06 -0700
commit673c99472da3de2d52bd29fec91978166f008766 (patch)
treeb51e2f7f1ff2bb935ac1461f808d67c006235821 /src/Language/Fiddle/Compiler/ConsistencyCheck.hs
parent83cfdf2bd4f9815a67576a0e34ef8b2bf19492aa (diff)
downloadfiddle-673c99472da3de2d52bd29fec91978166f008766.tar.gz
fiddle-673c99472da3de2d52bd29fec91978166f008766.tar.bz2
fiddle-673c99472da3de2d52bd29fec91978166f008766.zip
Add metadata information to the BitsSubStructure and compile it correctly.
Diffstat (limited to 'src/Language/Fiddle/Compiler/ConsistencyCheck.hs')
-rw-r--r--src/Language/Fiddle/Compiler/ConsistencyCheck.hs8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/Language/Fiddle/Compiler/ConsistencyCheck.hs b/src/Language/Fiddle/Compiler/ConsistencyCheck.hs
index f85d9d4..c4924da 100644
--- a/src/Language/Fiddle/Compiler/ConsistencyCheck.hs
+++ b/src/Language/Fiddle/Compiler/ConsistencyCheck.hs
@@ -299,9 +299,11 @@ advanceDecl offset = \case
(size,)
<$> (DefinedBits qmeta' mod ident <$> advanceStage () typ <*> pure annot)
- BitsSubStructure subBody subName ann -> do
- (sz, body') <- advanceRegisterBody offset subBody
- return (sz, BitsSubStructure body' subName ann)
+ BitsSubStructure qmeta modifier subBody subName ann -> do
+ (size, body') <- advanceRegisterBody offset subBody
+ let span = Present (FieldSpan offset size)
+ qmeta' = fmap (\q -> q {bitsSpan = span}) qmeta
+ return (size, BitsSubStructure qmeta' modifier body' subName ann)
bitsTypeSize :: RegisterBitsTypeRef S F A -> M (N Bits)
bitsTypeSize (RegisterBitsArray tr nExpr _) = do