* even if currency is handled by torddef, it is a real number, so using / is perfectly right, resolves #38718

git-svn-id: trunk@49154 -
This commit is contained in:
florian 2021-04-09 20:38:46 +00:00
parent 243ddea686
commit 09628e56cb
3 changed files with 14 additions and 1 deletions

1
.gitattributes vendored
View File

@ -18775,6 +18775,7 @@ tests/webtbs/tw3865.pp svneol=native#text/plain
tests/webtbs/tw38695.pp svneol=native#text/pascal
tests/webtbs/tw3870.pp svneol=native#text/plain
tests/webtbs/tw38703.pp svneol=native#text/pascal
tests/webtbs/tw38718.pp svneol=native#text/pascal
tests/webtbs/tw38733.pp svneol=native#text/pascal
tests/webtbs/tw3893.pp svneol=native#text/plain
tests/webtbs/tw3898.pp svneol=native#text/plain

View File

@ -942,7 +942,7 @@ implementation
{An attempt to convert the result of a floating point division
(with the / operator) to an integer type will fail. Give a hint
to use the div operator.}
if (node.nodetype=slashn) and (def.typ=orddef) then
if (node.nodetype=slashn) and (def.typ=orddef) and not(is_currency(def)) then
cgmessage(type_h_use_div_for_int);
{In expressions like int64:=longint+longint, an integer overflow could be avoided
by simply converting the operands to int64 first. Give a hint to do this.}

12
tests/webtbs/tw38718.pp Normal file
View File

@ -0,0 +1,12 @@
{ %opt=-vh -Seh }
program CurrencyTest;
{$mode objfpc}{$H+}
var
C: Currency;
D: Integer;
begin
C := 1234.56;
D := 2;
C := C / D; // Hint: Use DIV instead to get an integer result
Writeln(C);
end.