freebsd-ports/lang/modula-3-lib/files/patch-bi
John Polstra d5a92ea924 Split the Modula-3 port into two pieces, creating a new port
"modula-3-lib".  It installs only the shared libraries needed for
executing Modula-3 programs.  This saves a lot of disk space for
people who need to run Modula-3 programs but don't need to build
them.  The original "modula-3" port now depends on this one, and
uses it to install the compiler and the rest of the development
system.

Also, everything is now built with optimization.  I have been
testing this for at least a month, and haven't seen any problems
from it.  It makes the libraries and executables substantially
smaller.

This new port also includes some hooks that will make SOCKS support
possible in the near future.
1996-10-29 23:01:55 +00:00

39 lines
1.4 KiB
Text

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;