Hi,

Why is it that type helpers must be declared in the Interface section
of a unit and cannot be private in Implementation section?

Consider this (useless) example:

unit thtest;

{$mode objfpc}{$H+}
{$modeswitch typehelpers}

interface

type
  TSomeType = record end;
  TA = Array of TSomeType;

  { TAHelper }

  TAHelper = type helper for TA
    constructor Create(A: TA);
    procedure DoIt;
  end;

procedure X;

implementation

procedure X;
var
  A: TA;
begin
  A.DoIt;
end;

{ TAHelper }

constructor TAHelper.Create(A: TA);
begin
  Self := A;
end;

procedure TAHelper.DoIt;
begin
  ;
end;

end.

This compiles fine.
But when you move the declaration of TAHelper to the implementation
section, then you get a compiler error:

thtest.pp(21,5) Fatal: Syntax error, "CREATE" expected but "DOIT" found
Line 21 is
  A.DoIt;

I'm using fpc 3.0.0 (32-bit) on Windows.

Bart
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to