mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-13 06:29:32 +02:00
* weight currency->float conversions the same regardless if
the currency type is handled by the integer unit or the x87 fpu, resolves #38309 git-svn-id: trunk@48089 -
This commit is contained in:
parent
57d9884d96
commit
aec18c2426
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -18632,6 +18632,7 @@ tests/webtbs/tw3827.pp svneol=native#text/plain
|
||||
tests/webtbs/tw3829.pp svneol=native#text/plain
|
||||
tests/webtbs/tw38295.pp svneol=native#text/pascal
|
||||
tests/webtbs/tw38299.pp svneol=native#text/pascal
|
||||
tests/webtbs/tw38309.pp svneol=native#text/pascal
|
||||
tests/webtbs/tw38310a.pp svneol=native#text/pascal
|
||||
tests/webtbs/tw38310b.pp svneol=native#text/pascal
|
||||
tests/webtbs/tw38310c.pp svneol=native#text/pascal
|
||||
|
@ -843,11 +843,11 @@ implementation
|
||||
{ and conversion to float is favoured) }
|
||||
doconv:=tc_int_2_real;
|
||||
if is_extended(def_to) then
|
||||
eq:=te_convert_l2
|
||||
eq:=te_convert_l1
|
||||
else if is_double(def_to) then
|
||||
eq:=te_convert_l3
|
||||
eq:=te_convert_l2
|
||||
else if is_single(def_to) then
|
||||
eq:=te_convert_l4
|
||||
eq:=te_convert_l3
|
||||
else
|
||||
eq:=te_convert_l2;
|
||||
end;
|
||||
|
56
tests/webtbs/tw38309.pp
Normal file
56
tests/webtbs/tw38309.pp
Normal file
@ -0,0 +1,56 @@
|
||||
program c;
|
||||
|
||||
{$mode objfpc}
|
||||
|
||||
uses
|
||||
Math;
|
||||
|
||||
type
|
||||
generic TBase<T> = class
|
||||
private const
|
||||
AConst = 1;
|
||||
private
|
||||
GenVarA: T;
|
||||
GenVarB: T;
|
||||
function Foo: Boolean;
|
||||
end;
|
||||
|
||||
function TBase.Foo: Boolean;
|
||||
begin
|
||||
//Fails with trunk win-64 if TCur type is defined (e.g. not commented out) (*)
|
||||
Result := SameValue(AConst, GenVarB);
|
||||
|
||||
//Fails with trunk win-64, EVEN if TCur definition is commented out
|
||||
//Fails with 3.2.0 win-32, EVEN if TCur definition is commented out
|
||||
//Fails with 3.2.0 win-64, EVEN if TCur definition is commented out, if it is defined it gives the errormesage twice for this line
|
||||
Result := SameValue(GenVarA, GenVarB);
|
||||
|
||||
//Fails with trunk win-64 if TCur type is defined (e.g. not commented out)
|
||||
Result := SameValue(GenVarA, AConst);
|
||||
end;
|
||||
|
||||
type
|
||||
TCur = specialize TBase<Currency>;
|
||||
|
||||
const
|
||||
CurConst = 1;
|
||||
var
|
||||
CurVarA: Currency = 1;
|
||||
CurVarB: Currency = 2;
|
||||
|
||||
begin
|
||||
//Fails with trunk win-64
|
||||
SameValue(CurConst, CurVarA);
|
||||
|
||||
//Fails with 3.2.0 win-64
|
||||
SameValue(Currency(CurConst), CurVarA);
|
||||
|
||||
//Fails with 3.2.0 win-64
|
||||
SameValue(CurVarA, CurVarB);
|
||||
|
||||
//Fails with trunk win-64
|
||||
SameValue(CurVarA, CurConst);
|
||||
|
||||
//Fails with 3.2.0 win-64
|
||||
SameValue(CurVarA, Currency(CurConst));
|
||||
end.
|
Loading…
Reference in New Issue
Block a user