Rearranged declareSizesArray to easily support IsExpr
This commit is contained in:
parent
a9692f884a
commit
c3e1a32909
|
@ -29,6 +29,7 @@ import CompState
|
||||||
import Errors
|
import Errors
|
||||||
import Metadata
|
import Metadata
|
||||||
import Pass
|
import Pass
|
||||||
|
import PrettyShow
|
||||||
import qualified Properties as Prop
|
import qualified Properties as Prop
|
||||||
import Types
|
import Types
|
||||||
import Utils
|
import Utils
|
||||||
|
@ -125,9 +126,12 @@ declareSizesArray = doGeneric `ext1M` doStructured
|
||||||
= do t <- typeOfSpec spec
|
= do t <- typeOfSpec spec
|
||||||
case (spec,t) of
|
case (spec,t) of
|
||||||
(_,Just (A.Array ds _)) -> if elem A.UnknownDimension ds
|
(_,Just (A.Array ds _)) -> if elem A.UnknownDimension ds
|
||||||
then case spec of
|
then do outerV <- case spec of
|
||||||
A.Is _ _ _ outerV ->
|
A.Is _ _ _ v -> return v
|
||||||
do let innerV = findInnerVar outerV
|
A.IsExpr _ _ _ (A.ExprVariable _ v) -> return v
|
||||||
|
-- TODO reshapes
|
||||||
|
_ -> dieP m $ "Could not handle unknown array spec: " ++ pshow spec
|
||||||
|
let innerV = findInnerVar outerV
|
||||||
varSrcSizes <- case innerV of
|
varSrcSizes <- case innerV of
|
||||||
A.Variable _ srcN -> return (A.Variable m' $ append_sizes srcN)
|
A.Variable _ srcN -> return (A.Variable m' $ append_sizes srcN)
|
||||||
A.SubscriptedVariable _ (A.SubscriptField _ fieldName) recordV ->
|
A.SubscriptedVariable _ (A.SubscriptField _ fieldName) recordV ->
|
||||||
|
@ -141,7 +145,6 @@ declareSizesArray = doGeneric `ext1M` doStructured
|
||||||
s' <- doStructured s
|
s' <- doStructured s
|
||||||
defineSizesName m' (append_sizes n) sizeSpecType
|
defineSizesName m' (append_sizes n) sizeSpecType
|
||||||
return (A.Spec m sp $ A.Spec m sizeSpec $ s')
|
return (A.Spec m sp $ A.Spec m sizeSpec $ s')
|
||||||
_ -> doGeneric str --TODO IsExpr and Reshapes
|
|
||||||
else do let n_sizes = append_sizes n
|
else do let n_sizes = append_sizes n
|
||||||
sizeSpecType = makeStaticSizeSpec m' n_sizes ds
|
sizeSpecType = makeStaticSizeSpec m' n_sizes ds
|
||||||
sizeSpec = A.Specification m' n_sizes sizeSpecType
|
sizeSpec = A.Specification m' n_sizes sizeSpecType
|
||||||
|
|
Loading…
Reference in New Issue
Block a user