summaryrefslogtreecommitdiff
path: root/lang/modula-3-lib/files/patch-bi
diff options
context:
space:
mode:
Diffstat (limited to 'lang/modula-3-lib/files/patch-bi')
-rw-r--r--lang/modula-3-lib/files/patch-bi39
1 files changed, 39 insertions, 0 deletions
diff --git a/lang/modula-3-lib/files/patch-bi b/lang/modula-3-lib/files/patch-bi
new file mode 100644
index 000000000000..74a018c9ba18
--- /dev/null
+++ b/lang/modula-3-lib/files/patch-bi
@@ -0,0 +1,39 @@
+Bug fix from SRC:
+ bug assigning arrays
+
+ This patch applies to all platforms.
+
+ The Modula-3 language definition says that it is possible to assign
+ one array to another if they have the same shape. There is a bug
+ in the compiler front-end that causes the compiler to report that
+ two array types are not assignable if they have different base
+ indices, even if they have the same size.
+
+Index: m3/m3front/src/types/ArrayType.m3
+--- ArrayType.m3.orig Tue May 23 15:24:27 1995
++++ ArrayType.m3 Mon Sep 30 11:12:31 1996
+@@ -286,7 +286,9 @@
+ a := Reduce (ta); b := Reduce (tb);
+ IF (a = NIL) OR (b = NIL) THEN EXIT END;
+ IF (a.index # b.index) THEN
+- IF Type.Number (a.index) # Type.Number (b.index) THEN RETURN FALSE END;
++ IF NOT TInt.EQ (Type.Number (a.index), Type.Number (b.index)) THEN
++ RETURN FALSE
++ END;
+ END;
+ ta := a.element;
+ tb := b.element;
+Index: m3/m3front/src/types/OpenArrayType.m3
+--- OpenArrayType.m3.orig Tue May 23 15:24:22 1995
++++ OpenArrayType.m3 Mon Sep 30 11:13:12 1996
+@@ -188,7 +188,9 @@
+
+ (* peel off the fixed dimensions as long as the sizes are equal *)
+ WHILE ArrayType.Split (ta, ia, ea) AND ArrayType.Split (tb, ib, eb) DO
+- IF Type.Number (ia) # Type.Number (ib) THEN RETURN FALSE END;
++ IF NOT TInt.EQ (Type.Number (ia), Type.Number (ib)) THEN
++ RETURN FALSE
++ END;
+ ta := ea;
+ tb := eb;
+ END;