Added a function for testing that defines all the occam built-in operators, which helped fix all the failures in OccamPasses

This commit is contained in:
Neil Brown 2009-04-18 18:09:20 +00:00
parent 46b1b29e12
commit aa7d6b9b44
2 changed files with 17 additions and 0 deletions

View File

@ -49,6 +49,7 @@ import Test.QuickCheck
import qualified AST as A
import CompState
import Errors
import Intrinsics
import Metadata (emptyMeta)
import Pass
import Pattern
@ -645,3 +646,17 @@ instance Die (StateT CompState IO) where
fail s
--}}}
defineOccamOperators :: CSM m => m ()
defineOccamOperators
= sequence_
[ let n = A.Name emptyMeta $ occamDefaultOperator rawOp ts
nd = A.NameDef emptyMeta (A.nameName n) rawOp
(A.Function emptyMeta (A.PlainSpec, A.PlainRec)
[rt] [A.Formal A.ValAbbrev t (A.Name emptyMeta $ "arg" ++ show i)
| (i, t) <- zip [0..] ts
] Nothing)
A.Original A.NameNonce A.Unplaced
in defineName n nd
| (rawOp, rt, ts) <- occamIntrinsicOperators
]

View File

@ -50,6 +50,8 @@ startState
undefined
defineVariable "var" A.Int
defineOccamOperators
-- | Test 'OccamPasses.foldConstants'.
testFoldConstants :: Test
testFoldConstants = TestList