From 09628e56cbe6ae513c2d1530514531ad6314bb0a Mon Sep 17 00:00:00 2001 From: florian Date: Fri, 9 Apr 2021 20:38:46 +0000 Subject: [PATCH] * even if currency is handled by torddef, it is a real number, so using / is perfectly right, resolves #38718 git-svn-id: trunk@49154 - --- .gitattributes | 1 + compiler/ncnv.pas | 2 +- tests/webtbs/tw38718.pp | 12 ++++++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 tests/webtbs/tw38718.pp diff --git a/.gitattributes b/.gitattributes index 9e09692d5c..75f29b2d53 100644 --- a/.gitattributes +++ b/.gitattributes @@ -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 diff --git a/compiler/ncnv.pas b/compiler/ncnv.pas index 5fa5ce714b..4182b2d3ad 100644 --- a/compiler/ncnv.pas +++ b/compiler/ncnv.pas @@ -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.} diff --git a/tests/webtbs/tw38718.pp b/tests/webtbs/tw38718.pp new file mode 100644 index 0000000000..5a0a3e39d1 --- /dev/null +++ b/tests/webtbs/tw38718.pp @@ -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. \ No newline at end of file