On Fri, 22 Apr 2022 20:51:56 +0200 Martin Frb via fpc-pascal <fpc-pascal@lists.freepascal.org> wrote:
>[...] > Well, I tested: It uses the type of the first Param. So it calls a > function for both param of type Byte. The cardinal argument is > converted. (potentially truncated). I agree that Delphi should have used a better algorithm, like checking the var/out arguments first and otherwise use the smallest integer that fits all related params. Same for strings and boolean. pas2js uses a similar algorithm. In $mode Delphi fpc must use the Delphi algorithm. In other modes it could use a better algorithm. If fpc would use the above algorithm in mode objfpc, the Add would work like FPC's add: generic function Add<T>(a,b: T): T; begin Result:=a+b; end; Add(aByte,aCardinal) -> cardinal And you don't need to put a var/out param leftmost: generic procedure Adding<T>(a,b: T; out c: T); begin c:=a+b; end; Adding(3,4,aWord); Mattias _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal