[fpc-pascal] User-defined operators and dummy parameters

Mark Morgan Lloyd markMLl.fpc-pascal at telemetry.co.uk
Sat Aug 10 12:04:26 CEST 2013


Is it possible to pass a dummy parameter to a user-defined operator, 
with no expectation that it be referenced?

The following test program compiles OK but fails at runtime with an 
error 217 on all platforms if the record is empty. It works if it 
contains a variant, but not reliably with other types.

program test;

{$mode objfpc}{$H+}

type    t1= array of integer;
         r_= record
//              x: variant
             end;

var     a1: t1;
         reduce: r_ = ();


procedure print(const a: t1);

var     i: integer;

begin
   for i := Low(a) to High(a) do
     Write(a[i], ' ');
   WriteLn
end { print } ;


operator + (const r: r_; const a: t1) s: variant;

var     i: integer;

begin
   s := 0;
   for i := Low(a) to High(a) do
     s += a[i]
end { + } ;


begin
//  a1 := t1([1,2,3,4,5]);      Doesn't work without tuple support
   SetLength(a1, 5);
   a1[0] := 1;
   a1[1] := 2;
   a1[2] := 3;
   a1[3] := 4;
   a1[4] := 5;
   WriteLn('a1:');
   print(a1);
   WriteLn('+/ a1:');
   WriteLn(reduce + a1);
   WriteLn
end.

This is of no particular importance, I'm just exploring capabilities.

-- 
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]



More information about the fpc-pascal mailing list