瀏覽代碼

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

git-svn-id: trunk@49154 -
florian 4 年之前
父節點
當前提交
09628e56cb
共有 3 個文件被更改,包括 14 次插入1 次删除
  1. 1 0
      .gitattributes
  2. 1 1
      compiler/ncnv.pas
  3. 12 0
      tests/webtbs/tw38718.pp

+ 1 - 0
.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

+ 1 - 1
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.}

+ 12 - 0
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.