summaryrefslogtreecommitdiff
path: root/tests/webtbs/tw30524a.pp
blob: b96160c760b2bfc80202b4a5057da6f0b2f3daab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
{ %NORUN }

program tw30524a;

{$ifdef FPC}
{$MODE DELPHI}
{$endif}

{uses
  Generics.Defaults;}

type
  Tuple<T> = record
    Item1: T;
    class operator Equal( a, b: Tuple<T> ): Boolean; // FPC Error: Compilation raised exception internally
    class operator NotEqual( a, b: Tuple<T> ): Boolean;
  end;

  Tuple = record
    class function Create<T>( Item1: T ): Tuple<T>; overload; static;
  end;

class function Tuple.Create<T>( Item1: T ): Tuple<T>;
begin
  Result.Item1 := Item1;
end;

class operator Tuple<T>.Equal( a, b: Tuple<T> ): Boolean;
begin
  Result := False;//TEqualityComparer<T>.Default.Equals( a.Item1, b.Item1 );
end;

class operator Tuple<T>.NotEqual( a, b: Tuple<T> ): Boolean;
begin
  Result := not( a = b );
end;

var
  t: Tuple<LongInt>;
begin
  t := Tuple.Create<LongInt>(42);
end.