Hello again,
sorry, but I overlooked a small, but severe bug in gpc-970226 which made
in impossible to redefine built-in identifiers like "Byte" or "Assign"
in Units - which is especially annoying because GPC does define, but
not yet implement "Assign", so you *must* redefine it.
As a side-effect, another bug vanished, too: Unexported functions were
visible in the whole file. Now they have the correct scope. (: Yes, I
know how this is related to redefinitions of built-in identifiers. ;)
And there was another bug preventing us to initialize variables of a
type which has been previously declared to be "Char" in a Unit or Module.
(Weird, eh?:-)
Below is the patch to make it all work; it's on agnes as well. I will
upload new binaries this evening, about 23:00 MET.
Till the next bug fix,
Peter
8< -----------------------------------------------------------------------
--- gpc-970226/gpc-module.c Thu Feb 27 11:34:07 1997
+++ gpc/gpc-module.c Thu Feb 27 11:11:48 1997
@@ -1120,10 +1120,10 @@
store_flags (t, s);
if (depth == 0)
{
- if (IDENTIFIER_GLOBAL_VALUE (t))
- store_tree (IDENTIFIER_GLOBAL_VALUE (t), s, depth + 1);
- else if (IDENTIFIER_LOCAL_VALUE (t))
+ if (IDENTIFIER_LOCAL_VALUE (t))
store_tree (IDENTIFIER_LOCAL_VALUE (t), s, depth + 1);
+ else if (IDENTIFIER_GLOBAL_VALUE (t))
+ store_tree (IDENTIFIER_GLOBAL_VALUE (t), s, depth + 1);
else
store_tree (IDENTIFIER_LIMBO_VALUE (t), s, depth + 1);
}
@@ -1388,7 +1388,7 @@
t = get_identifier (id);
load_flags (t, s);
if (depth == 0)
- IDENTIFIER_GLOBAL_VALUE (t) = load_tree (s, depth + 1);
+ IDENTIFIER_LOCAL_VALUE (t) = load_tree (s, depth + 1);
break;
}
--- gpc-970226/gpc-typeck.c Thu Feb 27 11:34:07 1997
+++ gpc/gpc-typeck.c Thu Feb 27 11:26:33 1997
@@ -5811,6 +5811,9 @@
/* Handle scalar types, including conversions. */
if (code == INTEGER_TYPE || code == REAL_TYPE || code == POINTER_TYPE
+#ifdef GPC
+ || code == CHAR_TYPE
+#endif
|| code == ENUMERAL_TYPE || code == COMPLEX_TYPE)
{
/* Note that convert_for_assignment calls default_conversion