On a second though, the actual error seems to be elsewhere, so still can use proper indexing
--- a/tools/pas2c/Pas2C.hs Mon Nov 19 04:21:44 2018 +0300
+++ b/tools/pas2c/Pas2C.hs Mon Nov 19 06:57:36 2018 +0300
@@ -774,12 +774,6 @@
where
bt = BTEnum $ map (\(Identifier i _) -> map toLower i) ids
type2C' (ArrayDecl Nothing t) = type2C (PointerTo t)
- type2C' (ArrayDecl (Just r1) (ArrayDecl (Just r2) t)) = do
- t' <- type2C t
- lt <- gets lastType
- r1' <- initExpr2C (InitRange r1)
- r2' <- initExpr2C (InitRange r2)
- return $ \i -> t' i <> brackets r2' <> brackets r1'
type2C' (ArrayDecl (Just r) t) = do
t' <- type2C t
lt <- gets lastType
--- a/tools/pas2c/PascalParser.hs Mon Nov 19 04:21:44 2018 +0300
+++ b/tools/pas2c/PascalParser.hs Mon Nov 19 06:57:36 2018 +0300
@@ -167,7 +167,7 @@
if null r then
return $ ArrayDecl Nothing t
else
- return $ foldr (\a b -> ArrayDecl (Just a) b) (ArrayDecl (Just $ head r) t) (tail r)
+ return $ foldr (\a b -> ArrayDecl (Just a) b) (ArrayDecl (Just $ last r) t) (init r)
recordDecl = do
try $ do
optional $ (try $ string' "packed") >> comments