Changed the behaviour of genArraySizesLiteral to include the curly brackets
This commit is contained in:
parent
a583403372
commit
9a6f9186a9
|
@ -301,10 +301,10 @@ seqComma :: [CGen ()] -> CGen ()
|
|||
seqComma ps = sequence_ $ intersperse genComma ps
|
||||
|
||||
genLeftB :: CGen ()
|
||||
genLeftB = tell ["{ "]
|
||||
genLeftB = tell ["{"]
|
||||
|
||||
genRightB :: CGen ()
|
||||
genRightB = tell [" }"]
|
||||
genRightB = tell ["}"]
|
||||
--}}}
|
||||
|
||||
-- | A function that applies a subscript to a variable.
|
||||
|
@ -581,9 +581,7 @@ cgenUnfoldedExpression ops (A.Literal _ t lr)
|
|||
case t of
|
||||
A.Array ds _ ->
|
||||
do genComma
|
||||
genLeftB
|
||||
call genArraySizesLiteral ops ds
|
||||
genRightB
|
||||
_ -> return ()
|
||||
cgenUnfoldedExpression ops (A.ExprVariable m var) = call genUnfoldedVariable ops m var
|
||||
cgenUnfoldedExpression ops e = call genExpression ops e
|
||||
|
@ -598,9 +596,7 @@ cgenUnfoldedVariable ops m var
|
|||
unfoldArray ds var
|
||||
genRightB
|
||||
genComma
|
||||
genLeftB
|
||||
call genArraySizesLiteral ops ds
|
||||
genRightB
|
||||
A.Record _ ->
|
||||
do genLeftB
|
||||
fs <- recordFields m t
|
||||
|
@ -1057,7 +1053,8 @@ cgenSlice ops v (A.Variable _ on) start count ds
|
|||
-- element 0 of a 0-length array -- which is valid.
|
||||
= (tell ["&"] >> call genVariableUnchecked ops v,
|
||||
call genArraySize ops False
|
||||
(do tell ["occam_check_slice ("]
|
||||
(do genLeftB
|
||||
tell ["occam_check_slice ("]
|
||||
call genExpression ops start
|
||||
tell [", "]
|
||||
call genExpression ops count
|
||||
|
@ -1069,7 +1066,9 @@ cgenSlice ops v (A.Variable _ on) start count ds
|
|||
sequence_ [do tell [", "]
|
||||
genName on
|
||||
tell ["_sizes[", show i, "]"]
|
||||
| i <- [1..(length ds - 1)]]))
|
||||
| i <- [1..(length ds - 1)]]
|
||||
genRightB
|
||||
))
|
||||
|
||||
cgenArraySize :: GenOps -> Bool -> CGen () -> A.Name -> CGen ()
|
||||
cgenArraySize ops isPtr size n
|
||||
|
@ -1081,9 +1080,9 @@ cgenArraySize ops isPtr size n
|
|||
tell [";"]
|
||||
else do tell ["const int "]
|
||||
genName n
|
||||
tell ["_sizes[]={"]
|
||||
tell ["_sizes[]="]
|
||||
size
|
||||
tell ["};"]
|
||||
tell [";"]
|
||||
|
||||
noSize :: A.Name -> CGen ()
|
||||
noSize n = return ()
|
||||
|
@ -1154,7 +1153,7 @@ cgenRetypeSizes ops m am destT destN srcT srcV
|
|||
die "genRetypeSizes expecting free dimension"
|
||||
A.Dimension n -> tell [show n]
|
||||
| d <- destDS]
|
||||
call genArraySize ops False (seqComma dims) destN
|
||||
call genArraySize ops False (genLeftB >> seqComma dims >> genRightB) destN
|
||||
|
||||
-- Not array; just check the size is 1.
|
||||
_ ->
|
||||
|
@ -1233,7 +1232,7 @@ cdeclareArraySizes ops ds name
|
|||
-- dimensions are fixed.
|
||||
cgenArraySizesLiteral :: GenOps -> [A.Dimension] -> CGen ()
|
||||
cgenArraySizesLiteral ops ds
|
||||
= seqComma dims
|
||||
= genLeftB >> seqComma dims >> genRightB
|
||||
where
|
||||
dims :: [CGen ()]
|
||||
dims = [case d of
|
||||
|
|
|
@ -253,12 +253,12 @@ testStop =
|
|||
testArraySizes :: Test
|
||||
testArraySizes = TestList
|
||||
[
|
||||
testBothSame "genArraySizesLiteral 0" "3" (tcall genArraySizesLiteral [A.Dimension 3])
|
||||
,testBothSame "genArraySizesLiteral 1" "3,6,8" (tcall genArraySizesLiteral [A.Dimension 3, A.Dimension 6, A.Dimension 8])
|
||||
testBothSame "genArraySizesLiteral 0" "{3}" (tcall genArraySizesLiteral [A.Dimension 3])
|
||||
,testBothSame "genArraySizesLiteral 1" "{3,6,8}" (tcall genArraySizesLiteral [A.Dimension 3, A.Dimension 6, A.Dimension 8])
|
||||
,testBothFail "genArraySizesLiteral 2" (tcall genArraySizesLiteral [A.Dimension 6, A.UnknownDimension])
|
||||
,testBothSame "genArraySizesSize 0" "[1]" (tcall genArraySizesSize [A.Dimension 7])
|
||||
,testBothSame "genArraySize 0" "const int*foo_sizes=@;" (tcall3 genArraySize True at foo)
|
||||
,testBothSame "genArraySize 1" "const int foo_sizes[]={@};" (tcall3 genArraySize False at foo)
|
||||
,testBothSame "genArraySize 1" "const int foo_sizes[]=@;" (tcall3 genArraySize False at foo)
|
||||
,testBothSame "genArrayLiteralElems 0" "$" $ (tcall genArrayLiteralElems [A.ArrayElemExpr undefined]) . unfolded
|
||||
,testBothSame "genArrayLiteralElems 1" "$,$,$" $ (tcall genArrayLiteralElems [A.ArrayElemExpr undefined, A.ArrayElemExpr undefined, A.ArrayElemExpr undefined]) . unfolded
|
||||
,testBothSame "genArrayLiteralElems 2" "$,$,$" $ (tcall genArrayLiteralElems [A.ArrayElemExpr undefined, A.ArrayElemArray [A.ArrayElemExpr undefined, A.ArrayElemExpr undefined]]) . unfolded
|
||||
|
|
Loading…
Reference in New Issue
Block a user