tools/pas2c/Pas2C.hs
changeset 13879 84b2191efde9
parent 13877 aed7ee68305a
child 13881 aba78789f0bf
--- a/tools/pas2c/Pas2C.hs	Fri Oct 05 20:56:40 2018 +0200
+++ b/tools/pas2c/Pas2C.hs	Fri Oct 05 21:04:19 2018 +0200
@@ -698,11 +698,12 @@
          (Identifier "LongInt" _) -> int (-2^31)
          (Identifier "SmallInt" _) -> int (-2^15)
          _ -> error $ "BuiltInFunction 'low': " ++ show e
-initExpr2C' (BuiltInFunction "high" [InitReference e]) = return $
-    case e of
-         (Identifier "LongInt" _) -> int (2^31 - 1)
-         (Identifier "SmallInt" _) -> int (2^15 - 1)
-         _ -> error $ "BuiltInFunction 'high': " ++ show e
+initExpr2C' (BuiltInFunction "high" [e]) = do
+    void $ initExpr2C e
+    t <- gets lastType
+    case t of
+         (BTArray i _ _) -> initExpr2C' $ BuiltInFunction "pred" [InitRange i]
+         a -> error $ "BuiltInFunction 'high': " ++ show a
 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