wrong overload procedure called
Original Reporter info from Mantis: skalogryyz
-
Reporter name: Dmitry Boyarintsev
Original Reporter info from Mantis: skalogryyz
- Reporter name: Dmitry Boyarintsev
Description:
the compiler is calling a smaller size version of the function
Even though the parameter passed with larger size expression
(w-10, with w : Integer is at least of integer type).
Steps to reproduce:
program Project1;
{$mode objfpc}{$H+}
procedure Test(const v1, v2: ShortInt); overload;
begin
WriteLn('I''m short');
end;
procedure Test(const v1, v2: Integer); overload;
begin
WriteLn('I''m integer');
end;
var w: Integer;
begin
w := 100000;
Test(w - 10, 10);
ReadLn;
end.
--- result is:
I'm short
even though "I'm integer" is expected. Such code would fail with range check enabled
Mantis conversion info:
- Mantis ID: 34540
- Version: 3.0.4
- Monitored by: » MrShoor (Alexander), » @flyingsheep (Bart Broersma)