summaryrefslogtreecommitdiff
path: root/src/Language/Fiddle/Compiler/ConsistencyCheck.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Language/Fiddle/Compiler/ConsistencyCheck.hs')
-rw-r--r--src/Language/Fiddle/Compiler/ConsistencyCheck.hs14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/Language/Fiddle/Compiler/ConsistencyCheck.hs b/src/Language/Fiddle/Compiler/ConsistencyCheck.hs
index 552ea40..e0c7876 100644
--- a/src/Language/Fiddle/Compiler/ConsistencyCheck.hs
+++ b/src/Language/Fiddle/Compiler/ConsistencyCheck.hs
@@ -149,18 +149,21 @@ advanceObjTypeBody (ObjTypeBody us decls a) startOffset = do
return (ret, offset)
(RegisterDecl _ mod ident size Nothing a) -> do
(sizeExpr, reifiedSize) <- advanceAndGetSize size
- doReturn (RegisterDecl offset mod ident sizeExpr Nothing a)
+ let span = Present (FieldSpan (N offset) (N reifiedSize))
+ doReturn (RegisterDecl span mod ident sizeExpr Nothing a)
=<< checkBitsSizeMod8 a reifiedSize
(RegisterDecl _ mod ident size (Just body) a) -> do
declaredSize <- expressionToIntM size
(actualSize, body') <- advanceRegisterBody body
checkSizeMismatch a declaredSize actualSize
(sizeExpr, reifiedSize) <- advanceAndGetSize size
- doReturn (RegisterDecl offset mod ident sizeExpr (Just body') a)
+ let span = Present (FieldSpan (N offset) (N reifiedSize))
+ doReturn (RegisterDecl span mod ident sizeExpr (Just body') a)
=<< checkBitsSizeMod8 a reifiedSize
- (ReservedDecl size a) -> do
+ (ReservedDecl _ i size a) -> do
(sizeExpr, reifiedSize) <- advanceAndGetSize size
- doReturn (ReservedDecl sizeExpr a) reifiedSize
+ let span = Present (FieldSpan (N offset) (N reifiedSize))
+ doReturn (ReservedDecl span i sizeExpr a) reifiedSize
(TypeSubStructure (Identity body) name a) -> do
(size, body') <- advanceObjTypeBody body offset
doReturn (TypeSubStructure (Identity body') name a) size
@@ -231,8 +234,9 @@ advanceDecl offset = \case
)
DefinedBits _ mod ident typ annot -> do
size <- bitsTypeSize typ
+ let span = Present (FieldSpan (N offset) (N size))
(size,)
- <$> (DefinedBits offset mod ident <$> advanceStage () typ <*> pure annot)
+ <$> (DefinedBits span mod ident <$> advanceStage () typ <*> pure annot)
BitsSubStructure subBody subName ann -> do
(sz, body') <- advanceRegisterBody subBody
return (sz, BitsSubStructure body' subName ann)