Changed a Rain pass to transform the Plus operator on lists into the proper Concat operator
This commit is contained in:
parent
cfccd38c51
commit
7bd5bdf1fa
|
@ -214,7 +214,22 @@ checkExpressionTypes = applyDepthM checkExpression
|
||||||
then checkTimeExpression m op (tlhs, lhs) (trhs, rhs)
|
then checkTimeExpression m op (tlhs, lhs) (trhs, rhs)
|
||||||
else
|
else
|
||||||
if (tlhs == trhs)
|
if (tlhs == trhs)
|
||||||
then (if validOpSameType op tlhs then return e else diePC m $ formatCode "Operator: \"%\" is not valid on type: \"%\"" op tlhs)
|
then
|
||||||
|
-- Types identical. At this point we consider whether the
|
||||||
|
-- user is adding two lists (in which case, correct the
|
||||||
|
-- operator), otherwise we just need to check the operator
|
||||||
|
-- is valid on the types (to avoid two channels of the same
|
||||||
|
-- type being added, for example)
|
||||||
|
case (tlhs, op) of
|
||||||
|
(A.List _, A.Plus) -> return $ A.Dyadic m A.Concat lhs rhs
|
||||||
|
_ -> if validOpSameType op tlhs
|
||||||
|
then return e
|
||||||
|
else diePC m $ formatCode
|
||||||
|
"Operator: \"%\" is not valid on type: \"%\""
|
||||||
|
op tlhs
|
||||||
|
-- Types differ. If they are integers, we can look for
|
||||||
|
-- a common (more general) type for both of them to be cast
|
||||||
|
-- up into in order to perform the operation.
|
||||||
else if (isIntegerType tlhs && isIntegerType trhs)
|
else if (isIntegerType tlhs && isIntegerType trhs)
|
||||||
then case (leastGeneralSharedTypeRain [tlhs,trhs]) of
|
then case (leastGeneralSharedTypeRain [tlhs,trhs]) of
|
||||||
Nothing -> diePC m $ formatCode "Cannot find a suitable type to convert expression to, types are: % and %" tlhs trhs
|
Nothing -> diePC m $ formatCode "Cannot find a suitable type to convert expression to, types are: % and %" tlhs trhs
|
||||||
|
|
Loading…
Reference in New Issue
Block a user