Stopped the built-in operators from being transformed into PROCs
This commit is contained in:
parent
ca3c982a7e
commit
a3ec0aab7f
|
@ -45,6 +45,11 @@ simplifyExprs =
|
||||||
, transformConstr
|
, transformConstr
|
||||||
]
|
]
|
||||||
|
|
||||||
|
-- These are a special case, and do not get pulled up, nor turned into PROCs:
|
||||||
|
builtInOperatorFunction :: A.Name -> Bool
|
||||||
|
builtInOperatorFunction = (`elem` occamBuiltInOperatorFunctions) . A.nameName
|
||||||
|
|
||||||
|
|
||||||
-- | Convert FUNCTION declarations to PROCs.
|
-- | Convert FUNCTION declarations to PROCs.
|
||||||
functionsToProcs :: Pass
|
functionsToProcs :: Pass
|
||||||
functionsToProcs = pass "Convert FUNCTIONs to PROCs"
|
functionsToProcs = pass "Convert FUNCTIONs to PROCs"
|
||||||
|
@ -55,6 +60,7 @@ functionsToProcs = pass "Convert FUNCTIONs to PROCs"
|
||||||
where
|
where
|
||||||
doSpecification :: A.Specification -> PassM A.Specification
|
doSpecification :: A.Specification -> PassM A.Specification
|
||||||
doSpecification (A.Specification m n (A.Function mf smrm rts fs evp))
|
doSpecification (A.Specification m n (A.Function mf smrm rts fs evp))
|
||||||
|
| not (builtInOperatorFunction n)
|
||||||
= do -- Create new names for the return values.
|
= do -- Create new names for the return values.
|
||||||
specs <- sequence [makeNonceVariable "return_formal" mf t A.Abbrev | t <- rts]
|
specs <- sequence [makeNonceVariable "return_formal" mf t A.Abbrev | t <- rts]
|
||||||
let names = [n | A.Specification mf n _ <- specs]
|
let names = [n | A.Specification mf n _ <- specs]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user