--- a/tools/pas2c/Pas2C.hs Fri Oct 05 21:04:19 2018 +0200
+++ b/tools/pas2c/Pas2C.hs Fri Oct 05 21:30:06 2018 +0200
@@ -698,12 +698,16 @@
(Identifier "LongInt" _) -> int (-2^31)
(Identifier "SmallInt" _) -> int (-2^15)
_ -> error $ "BuiltInFunction 'low': " ++ show e
-initExpr2C' (BuiltInFunction "high" [e]) = do
+initExpr2C' hi@(BuiltInFunction "high" [e@(InitReference e')]) = do
void $ initExpr2C e
t <- gets lastType
case t of
(BTArray i _ _) -> initExpr2C' $ BuiltInFunction "pred" [InitRange i]
- a -> error $ "BuiltInFunction 'high': " ++ show a
+ BTInt _ -> case e' of
+ (Identifier "LongInt" _) -> return $ int (2147483647)
+ (Identifier "LongWord" _) -> return $ text "4294967295"
+ _ -> error $ "BuiltInFunction 'high' in initExpr: " ++ show e'
+ a -> error $ "BuiltInFunction 'high' in initExpr: " ++ show a ++ ": " ++ show hi
initExpr2C' (BuiltInFunction "succ" [BuiltInFunction "pred" [e]]) = initExpr2C' e
initExpr2C' (BuiltInFunction "pred" [BuiltInFunction "succ" [e]]) = initExpr2C' e
initExpr2C' (BuiltInFunction "succ" [e]) = liftM (<> text " + 1") $ initExpr2C' e