Generate size arrays using IsExpr rather than Is.
This wasn't actually wrong, but everywhere else uses IsExpr for Val abbreviations.
This commit is contained in:
parent
d9e00294f9
commit
d8d6ab12cc
|
@ -164,12 +164,12 @@ declareSizesArray = applyDepthSM doStructured
|
|||
let sizeDiff = length srcDs - length ds
|
||||
subSrcSizeVar = A.SubscriptedVariable m (A.SubscriptFromFor m (makeConstant m sizeDiff) (makeConstant m $ length ds)) varSrcSizes
|
||||
sizeType = A.Array [makeDimension m $ length ds] A.Int
|
||||
sizeSpecType = case sliceSize of
|
||||
sizeExpr = case sliceSize of
|
||||
Just exp -> let subDims = [A.SubscriptedVariable m (A.Subscript m A.NoCheck $ makeConstant m n) varSrcSizes | n <- [1 .. (length srcDs - 1)]] in
|
||||
A.IsExpr m A.ValAbbrev sizeType $
|
||||
A.Literal m sizeType $ A.ArrayLiteral m $
|
||||
[A.ArrayElemExpr exp] ++ map (A.ArrayElemExpr . A.ExprVariable m) subDims
|
||||
Nothing -> A.Is m A.ValAbbrev sizeType subSrcSizeVar
|
||||
A.Literal m sizeType $ A.ArrayLiteral m $
|
||||
[A.ArrayElemExpr exp] ++ map (A.ArrayElemExpr . A.ExprVariable m) subDims
|
||||
Nothing -> A.ExprVariable m subSrcSizeVar
|
||||
sizeSpecType = A.IsExpr m A.ValAbbrev sizeType sizeExpr
|
||||
defineSizesName m n_sizes sizeSpecType
|
||||
return $ A.Specification m n_sizes sizeSpecType
|
||||
|
||||
|
|
|
@ -257,11 +257,12 @@ qcTestDeclareSizes =
|
|||
(foldr (A.SubscriptedVariable emptyMeta) (variable "src") subs)
|
||||
,specSizes, defSrc)
|
||||
where
|
||||
specSizes = A.Is emptyMeta A.ValAbbrev (A.Array [dimension $ length destDims] A.Int) $
|
||||
A.SubscriptedVariable emptyMeta (A.SubscriptFromFor emptyMeta
|
||||
(intLiteral $ toInteger $ length srcDims - length destDims)
|
||||
(intLiteral $ toInteger $ length destDims)
|
||||
) (variable "src_sizes")
|
||||
specSizes = A.IsExpr emptyMeta A.ValAbbrev (A.Array [dimension $ length destDims] A.Int) $
|
||||
A.ExprVariable m $
|
||||
A.SubscriptedVariable emptyMeta (A.SubscriptFromFor emptyMeta
|
||||
(intLiteral $ toInteger $ length srcDims - length destDims)
|
||||
(intLiteral $ toInteger $ length destDims)
|
||||
) (variable "src_sizes")
|
||||
defSrc = do defineTestName "src" (A.Declaration emptyMeta (A.Array srcDims A.Byte)) A.Original
|
||||
defineTestName "src_sizes" (A.IsExpr emptyMeta A.ValAbbrev (A.Array srcDims A.Byte) dummyExpr) A.ValAbbrev
|
||||
dummyExpr = A.True emptyMeta
|
||||
|
|
Loading…
Reference in New Issue
Block a user