summaryrefslogtreecommitdiff
path: root/avx512-0037785/tests/webtbs/tw38309.pp
diff options
context:
space:
mode:
Diffstat (limited to 'avx512-0037785/tests/webtbs/tw38309.pp')
-rw-r--r--avx512-0037785/tests/webtbs/tw38309.pp56
1 files changed, 56 insertions, 0 deletions
diff --git a/avx512-0037785/tests/webtbs/tw38309.pp b/avx512-0037785/tests/webtbs/tw38309.pp
new file mode 100644
index 0000000000..a33ef45053
--- /dev/null
+++ b/avx512-0037785/tests/webtbs/tw38309.pp
@@ -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.