Hello!
Here again is a new GPC alpha version.
Changes since gpc-970420:
General news:
* `Absolute' now works in declaring statements, too.
(Declaring statements are variable declarations in a function's statement part, a GPC extension. `Absolute' variables are a Borland extension supported by GPC.)
* Initialization with `=' now has priority with respect to comparision. (Comparisions usually don't occur in initializers.) This means that BP-style typed constants now work as expected.
In `--extended-pascal' mode, initialization with `=' is turned OFF, and comparision in initializers works like before.
* Added/corrected some dialect-specific warnings.
* With `--automake', non-Pascal input files may now occur before the first Pascal input file.
* First fragments of a reference manual exist now: GPC's online Texinfo documentation now contains more-ore-less complete information about Integer types - sorted alphabetically from `Byte' to `Word'.
* The alpha version number, "970510" for this release, is now output instead of "2.0" when `gpc' is invoked with the `-v' option. I hope this does not break anything ...
Bug fixes:
* `Page' now can be called with zero or one parameter.
* Removed some wrong warnings from `-Wall'.
* Parameter lists of methods now may contain a reference to the object they are methods of:
MyObject = object Procedure Foo ( Var Bar: MyObject ); end (* MyObject *);
* Units exporting different parts of the same object hierarchy work now. You still get a warning, but code works.
(When a derived object is exported, complete information about the parent is exported, too. When two Units exported the same parent like this, GPC complained about incompatible definitions of the same identifier.)
* Errorneous parent types in object declarations no more crash GPC.
* Borland-style #27 character constants now work as the first thing in a line, too. (This bug usually showed up in `case' statements.)
Borland Pascal:
* Procedural variables work. They can be written like in Borland Pascal, or with the type names only. The same holds for pointers to functions.
* ^A .. ^Z character constants work. (Even better than with BP itself.;)
* The "link directive" (*$L foo.o *) or (*$L /usr/lib/libfoo.a *) works. As a GPC extension, you also can specify (*$L foo.pas *) or (*$L foo.c *): With `--automake', GPC compiles the specified source if necessary and links the object code. Without `--automake', GPC still links the `.o' file corresponding to the given source name.
* `SizeOf' applied to object variables works now. The size is read at run time from the VMT. The object must be initialized.
* `TypeOf' applied to object variables works now, too. As a GPC extension, you can explicitly assign a value to "TypeOf ( MyObj )" if extended syntax is ON (*$X+*).
Extended Pascal:
* Schemata work. (-:
Well ... my tiny test programs work. This involves parameter passing and `new'ing pointers to undiscriminated Schemata. However I am not very experienced with Schemata, so I cannot give any warranty for them. (Which does not mean that I would give any other warranty, either expressed or implied, ... you know.;) Please help me to test them!
I took special care that the String parameter stuff did not break due to the implementation of Schemata. (Read: Passing of String parameters might be broken now; please check.;-)
One nice thing: `SizeOf' works with Strings and Schemata. When `p' is a pointer to a String or Schema, `SizeOf ( p^ )' looks into the String or Schema pointed to and determines the correct size at run time.
The source - a diff against gpc-970420 - is being uploaded to
ftp://agnes.dida.physik.uni-essen.de/gnu-pascal/alpha/
together with binaries for DOS (DJGPP), DOS and OS/2 (EMX), Linux (ELF), and FreeBSD.
Thanks to Abimbola A. Olowofoyeku, Frank Heckenbach, Jan-Jaap van der Heijden, Kevin A. Foss, and Markus Gerwinski for finding the bugs.
And again: Is anybody interested to help to document all this?
For example, to write a list of Extended Pascal [Borland Pascal] features which work [do not yet work] in GPC which replace the somehow outdated chapter "Extensions", "Extended Pascal", and "Borland Pascal" in the on-line manual? Or to complete and improve the description of the compiler options in the chapter "Invoking GPC"? If you do something in this direction, just post it here.
Greetings,
Peter
Peter Gerwinski [670510], Essen, Germany, free physicist and programmer peter.gerwinski@uni-essen.de - http://home.pages.de/~peter.gerwinski/ [970201] maintainer GNU Pascal [970510] - http://home.pages.de/~gnu-pascal/ [970125]