For gpc mailing list:

this email comes as a follow-up of this bug report

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

 

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.