Fixed the handling of actual array parameters to include array variables inside ActualExpression
This commit is contained in:
parent
807b219a39
commit
3d823fb1b5
|
@ -26,6 +26,7 @@ import qualified Data.Set as Set
|
||||||
|
|
||||||
import qualified AST as A
|
import qualified AST as A
|
||||||
import CompState
|
import CompState
|
||||||
|
import Errors
|
||||||
import Metadata
|
import Metadata
|
||||||
import Pass
|
import Pass
|
||||||
import qualified Properties as Prop
|
import qualified Properties as Prop
|
||||||
|
@ -211,7 +212,15 @@ addSizesActualParameters = doGeneric `extM` doProcess
|
||||||
transformActual a@(A.ActualVariable am (A.Array ds _) (A.Variable m n))
|
transformActual a@(A.ActualVariable am (A.Array ds _) (A.Variable m n))
|
||||||
= do let a_sizes = A.Variable m (append_sizes n)
|
= do let a_sizes = A.Variable m (append_sizes n)
|
||||||
return [a, A.ActualVariable A.ValAbbrev (A.Array [A.Dimension $ length ds] A.Int) a_sizes]
|
return [a, A.ActualVariable A.ValAbbrev (A.Array [A.Dimension $ length ds] A.Int) a_sizes]
|
||||||
transformActual a = return [a]
|
transformActual a@(A.ActualExpression (A.Array ds _) (A.ExprVariable _ (A.Variable m n)))
|
||||||
|
= do let a_sizes = A.Variable m (append_sizes n)
|
||||||
|
return [a, A.ActualVariable A.ValAbbrev (A.Array [A.Dimension $ length ds] A.Int) a_sizes]
|
||||||
|
transformActual a = let t = case a of
|
||||||
|
A.ActualVariable _ t _ -> t
|
||||||
|
A.ActualExpression t _ -> t
|
||||||
|
in case t of
|
||||||
|
A.Array {} -> dieP (findMeta a) "Untransformed actual parameter of type array: "
|
||||||
|
_ -> return [a]
|
||||||
|
|
||||||
-- | Flattens all multi-dimensional arrays into one-dimensional arrays, transforming all indexes
|
-- | Flattens all multi-dimensional arrays into one-dimensional arrays, transforming all indexes
|
||||||
-- as appropriate.
|
-- as appropriate.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user