summaryrefslogtreecommitdiff
path: root/fpcsrc/tests/tbs/tb0207.pp
blob: 07d6649404c9345287b8784bc57e9c84d36ae2e2 (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
{ %KNOWNRUNERROR=1 Free Pascal does not compute args from left to right }

{ Old file: tbs0243.pp }
{ Arguments of functions are computed from right to left this }

program simpletest;

var i : longint;

  function _next : longint;
    begin
      inc(i);
      _next:=i;
    end;

  procedure test(a,b : longint);
    begin
      Writeln('first arg is ',a);
      Writeln('second arg is ',b);
    end;

  procedure check(a,b : longint);
    begin
      if a>b then
        begin
           Writeln('FPC does not follow PASCAL rules for parameter passing');
           Halt(1);
        end;
    end;

begin
{ this could give
  first arg is 1
  second arg is 2
  but FPC parses the second arg before the first one ! }
test(_next,_next);
writeln('third arg is ',_next);
writeln('fourth arg is ',_next,' fifth arg is ',_next);
check(_next,_next);
end.