From 4f647737ed28b50ce2f73c7d0cafe57c49342ca4 Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 5 Apr 2005 21:02:45 +0000 Subject: [PATCH] * new bugs --- tests/webtbs/tw3778.pp | 52 ++++++++++++++++++++++++++++++++++++++++++ tests/webtbs/tw3812.pp | 16 +++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 tests/webtbs/tw3778.pp create mode 100644 tests/webtbs/tw3812.pp diff --git a/tests/webtbs/tw3778.pp b/tests/webtbs/tw3778.pp new file mode 100644 index 0000000000..22706ed7bc --- /dev/null +++ b/tests/webtbs/tw3778.pp @@ -0,0 +1,52 @@ +{ Source provided for Free Pascal Bug Report 3778 } +{ Submitted by "David Fuchs" on 2005-03-13 } +{ e-mail: drfuchs@yahoo.com } + +{$mode objfpc} + +type + a_class=class + procedure a_method; + function a_virtual_method:a_class; virtual; + end; + a_container=class + a_field:a_class; + end; + +var + already_called: boolean; + glob: a_class; + container_array: array[0..255] of a_container; + error : boolean; + +function a_function:byte; +begin + if already_called then + begin + writeln('This can not possibly happen!'); + error:=true; + end; + a_function:=255; + already_called:=true; +end; + +function a_class.a_virtual_method:a_class; +begin + a_virtual_method:=self; +end; + +procedure a_class.a_method; +begin + {this statement somehow compiles into TWO calls to a_function!} + glob:=container_array[a_function].a_field.a_virtual_method; +end; + +begin + already_called:=false; + glob:=a_class.create; + container_array[255]:=a_container.create; + container_array[255].a_field:=glob; + glob.a_method; + if error then + halt(1); +end. diff --git a/tests/webtbs/tw3812.pp b/tests/webtbs/tw3812.pp new file mode 100644 index 0000000000..618634f3fc --- /dev/null +++ b/tests/webtbs/tw3812.pp @@ -0,0 +1,16 @@ +{ Source provided for Free Pascal Bug Report 3812 } +{ Submitted by "Sergey@michint" on 2005-03-22 } +{ e-mail: } +type + LARGE_INTEGER = record + LowPart : Cardinal; + HighPart : LongInt; + end; + +procedure t(li1: Large_Integer); stdcall; +begin +end; + +begin + t(Large_Integer(1111111111111111)); +end.