summaryrefslogtreecommitdiff
path: root/src/Language/Fiddle/Compiler/ConsistencyCheck.hs
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2024-10-17 00:36:03 -0600
committerJosh Rahm <joshuarahm@gmail.com>2024-10-17 00:36:03 -0600
commit62dffb99e29eba9004ef2764fbdd9b0462de4742 (patch)
tree663298cb18eff8f6d7966aba1ec7845d58e19894 /src/Language/Fiddle/Compiler/ConsistencyCheck.hs
parentc31a34382d6fe1307a0c6fe1710c42f27fe833ca (diff)
downloadfiddle-62dffb99e29eba9004ef2764fbdd9b0462de4742.tar.gz
fiddle-62dffb99e29eba9004ef2764fbdd9b0462de4742.tar.bz2
fiddle-62dffb99e29eba9004ef2764fbdd9b0462de4742.zip
Add ContExpression syntax tree.
This is for expressions which must be calculatable at compile time.
Diffstat (limited to 'src/Language/Fiddle/Compiler/ConsistencyCheck.hs')
-rw-r--r--src/Language/Fiddle/Compiler/ConsistencyCheck.hs5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/Language/Fiddle/Compiler/ConsistencyCheck.hs b/src/Language/Fiddle/Compiler/ConsistencyCheck.hs
index 3d95ea0..3e81153 100644
--- a/src/Language/Fiddle/Compiler/ConsistencyCheck.hs
+++ b/src/Language/Fiddle/Compiler/ConsistencyCheck.hs
@@ -78,6 +78,8 @@ deriving instance AdvanceStage S PackageBody
deriving instance AdvanceStage S FiddleDecl
+deriving instance AdvanceStage S (ConstExpression u)
+
instance AdvanceStage S FiddleUnit where
advanceStage () fu@(FiddleUnit _ decls a) =
FiddleUnit (Present $ getUnitInterface fu) <$> mapM (advanceStage ()) decls <*> pure a
@@ -256,8 +258,7 @@ advanceDecl offset = \case
bitsTypeSize :: RegisterBitsTypeRef S F A -> M (N Bits)
bitsTypeSize (RegisterBitsArray tr nExpr _) = do
sz <- bitsTypeSize tr
- n <- expressionToIntM nExpr
- return (sz .*. n)
+ return (sz .*. trueValue nExpr)
bitsTypeSize
RegisterBitsReference
{ bitsRefQualificationMetadata =