For gpc mailing list:
this email comes as a follow-up of this bug report
https://sourceware.org/bugzilla/show_bug.cgi?id=17815 https://sourceware.org/bugzilla/show_bug.cgi?id=17815
The start of the thread can be found at:
https://sourceware.org/ml/gdb-patches/2015-01/msg00164.html https://sourceware.org/ml/gdb-patches/2015-01/msg00164.html
Pedro asked:
How about adding this to the test suite?
The whole testsuite/gdb.pascal is almost empty,
I never invested time to develop it :(
At the time I started it, GPC (the GNU pascal compiler)
was still active, but development apparently
stopped since quite some time.
I am unable to install GPC, which means that I cannot test it.
Would a testsuite that supports only Free Pascal be acceptable?
Do you actually mean, whether it's ok for a new
test (not test suite) to go in untested on GPC? It certainly is.
Better test on FPC than nowhere. :-)
That is indeed what I meant.
AFAICS, the tests themselves don't really care which compiler
is in use other than for marking xfails; you just call
gdb_compile_pascal,
and that works with either. That's my impression from quickly
skimming testsuite/lib/pascal.exp.
The problem is that GPC and Free Pascal support several
pascal 'dialects'. But this requires command line options.
The -Mobjfpc option is required for Free Pascal compiler
to understand class type definition, but is rejected in default mode.
I expect GNU GPC to also reject class in 'normal' mode...
Maybe someone on the gpc mailing list knows if classes are supported
by GPC and if it requires a special compiler option.
Pierre Muller
FYI: Here is the example code that is included in the bug report.
$ cat ~/pas/test/test-class-pascal.pas
type
TA = class
public
x, y : integer;
constructor Create;
function check(b : TA) : boolean;
destructor Done; virtual;
end;
constructor TA.Create;
begin
x:=-1;
y:=-1;
end;
destructor TA.Done;
begin
end;
function TA.check (b : TA) : boolean;
begin
check:=(x < b.x);
end;
var
a, b : TA;
begin
a:=TA.Create;
b:=TA.Create;
a.x := 67;
a.y := 33;
a.check (b);
end.