summaryrefslogtreecommitdiff
path: root/lang/modula-3-lib/files/patch-bi
blob: 74a018c9ba18f9c79101b9fa084a1f241638c0a6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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;