[fpc-pascal]fpc 1.0 and 1.1 incompatibility

Vincent Snijders vslist at zonnet.nl
Wed Oct 29 22:20:10 CET 2003


Hi,

The program below can be compiled with fpc 1.0.10, but not with this
week's fpc 1.1.

With fpc 1.0.10 it gives the following output, (which is as I
would expect).
TSubClass.Create
TBase.Create

fpc 1.1 gives the following error message:
overloadedcontructor.pas(36,32) Error: Can't determine which overloaded
function to call overloadedcontructor.pas(19,19) Hint: Found
declaration: constructor TBase.Create(TComponent)
overloadedcontructor.pas(26,23) Hint: Found declaration: constructor
TSubClass.Create(TStrings) overloadedcontructor.pas(39) Fatal: There
were 1 errors compiling module, stopping

How would you classify this incompatibility? A bug in fpc 1.0.10, a bug
in fpc 1.1 or something else?

This situation surfaced as I tried to compile lazarus with fpc 1.1. I
found out that I compile this source if I changed the call to the
constructor to
test := TSubClass.Create(TStrings(nil));

Regards,
Vincent Snijders.

program overloadedcontructor;

{$mode objfpc}{$H+}

uses
  Classes;
  
type
  TBase = class
    Constructor Create(Owner: TComponent);
  end;
  
  TSubClass = class(TBase)
    Constructor Create(strings : TStrings);
  end;

{ TBase }

constructor TBase.Create(Owner: TComponent);
begin
  writeln('TBase.Create');
end;

{ TSubClass }

constructor TSubClass.Create(strings: TStrings);
begin
  writeln('TSubClass.Create');
  inherited Create(nil);
end;

var
  test: TBase;

begin
  test := TSubClass.Create(nil);
end.




More information about the fpc-pascal mailing list