mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-07 09:18:33 +02:00
* fixed mantis #9522: no longer allow typecasting ordinal constants
to complex types (caused a lot of internal errors later on, and was also Delphi-incompatible) git-svn-id: trunk@8369 -
This commit is contained in:
parent
498da17875
commit
1ee8207ffa
10
.gitattributes
vendored
10
.gitattributes
vendored
@ -5828,6 +5828,7 @@ tests/tbf/tb0199a.pp -text
|
|||||||
tests/tbf/tb0200.pp svneol=native#text/x-pascal
|
tests/tbf/tb0200.pp svneol=native#text/x-pascal
|
||||||
tests/tbf/tb0201.pp svneol=native#text/plain
|
tests/tbf/tb0201.pp svneol=native#text/plain
|
||||||
tests/tbf/tb0202.pp svneol=native#text/plain
|
tests/tbf/tb0202.pp svneol=native#text/plain
|
||||||
|
tests/tbf/tb0203.pp svneol=native#text/plain
|
||||||
tests/tbf/ub0115.pp svneol=native#text/plain
|
tests/tbf/ub0115.pp svneol=native#text/plain
|
||||||
tests/tbf/ub0149.pp svneol=native#text/plain
|
tests/tbf/ub0149.pp svneol=native#text/plain
|
||||||
tests/tbf/ub0158a.pp svneol=native#text/plain
|
tests/tbf/ub0158a.pp svneol=native#text/plain
|
||||||
@ -6214,7 +6215,6 @@ tests/tbs/tb0391.pp svneol=native#text/plain
|
|||||||
tests/tbs/tb0392.pp svneol=native#text/plain
|
tests/tbs/tb0392.pp svneol=native#text/plain
|
||||||
tests/tbs/tb0393.pp svneol=native#text/plain
|
tests/tbs/tb0393.pp svneol=native#text/plain
|
||||||
tests/tbs/tb0394.pp svneol=native#text/plain
|
tests/tbs/tb0394.pp svneol=native#text/plain
|
||||||
tests/tbs/tb0395.pp svneol=native#text/plain
|
|
||||||
tests/tbs/tb0396.pp svneol=native#text/plain
|
tests/tbs/tb0396.pp svneol=native#text/plain
|
||||||
tests/tbs/tb0397.pp svneol=native#text/plain
|
tests/tbs/tb0397.pp svneol=native#text/plain
|
||||||
tests/tbs/tb0398.pp svneol=native#text/plain
|
tests/tbs/tb0398.pp svneol=native#text/plain
|
||||||
@ -7338,6 +7338,7 @@ tests/webtbf/tw3716.pp svneol=native#text/plain
|
|||||||
tests/webtbf/tw3738.pp svneol=native#text/plain
|
tests/webtbf/tw3738.pp svneol=native#text/plain
|
||||||
tests/webtbf/tw3740.pp svneol=native#text/plain
|
tests/webtbf/tw3740.pp svneol=native#text/plain
|
||||||
tests/webtbf/tw3790.pp svneol=native#text/plain
|
tests/webtbf/tw3790.pp svneol=native#text/plain
|
||||||
|
tests/webtbf/tw3812.pp svneol=native#text/plain
|
||||||
tests/webtbf/tw3930a.pp svneol=native#text/plain
|
tests/webtbf/tw3930a.pp svneol=native#text/plain
|
||||||
tests/webtbf/tw3931b.pp svneol=native#text/plain
|
tests/webtbf/tw3931b.pp svneol=native#text/plain
|
||||||
tests/webtbf/tw3969.pp svneol=native#text/plain
|
tests/webtbf/tw3969.pp svneol=native#text/plain
|
||||||
@ -7432,6 +7433,12 @@ tests/webtbf/tw9039d.pp svneol=native#text/plain
|
|||||||
tests/webtbf/tw9225.pp svneol=native#text/plain
|
tests/webtbf/tw9225.pp svneol=native#text/plain
|
||||||
tests/webtbf/tw9499.pp svneol=native#text/plain
|
tests/webtbf/tw9499.pp svneol=native#text/plain
|
||||||
tests/webtbf/tw9499a.pp svneol=native#text/plain
|
tests/webtbf/tw9499a.pp svneol=native#text/plain
|
||||||
|
tests/webtbf/tw9522.pp svneol=native#text/plain
|
||||||
|
tests/webtbf/tw9522a.pp svneol=native#text/plain
|
||||||
|
tests/webtbf/tw9522b.pp svneol=native#text/plain
|
||||||
|
tests/webtbf/tw9522c.pp svneol=native#text/plain
|
||||||
|
tests/webtbf/tw9522d.pp svneol=native#text/plain
|
||||||
|
tests/webtbf/tw9522e.pp svneol=native#text/plain
|
||||||
tests/webtbf/uw0744.pp svneol=native#text/plain
|
tests/webtbf/uw0744.pp svneol=native#text/plain
|
||||||
tests/webtbf/uw0840a.pp svneol=native#text/plain
|
tests/webtbf/uw0840a.pp svneol=native#text/plain
|
||||||
tests/webtbf/uw0840b.pp svneol=native#text/plain
|
tests/webtbf/uw0840b.pp svneol=native#text/plain
|
||||||
@ -8046,7 +8053,6 @@ tests/webtbs/tw3780.pp svneol=native#text/plain
|
|||||||
tests/webtbs/tw3782.pp svneol=native#text/plain
|
tests/webtbs/tw3782.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw3796.pp svneol=native#text/plain
|
tests/webtbs/tw3796.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw3805.pp svneol=native#text/plain
|
tests/webtbs/tw3805.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw3812.pp svneol=native#text/plain
|
|
||||||
tests/webtbs/tw3814.pp svneol=native#text/plain
|
tests/webtbs/tw3814.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw3827.pp svneol=native#text/plain
|
tests/webtbs/tw3827.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw3829.pp svneol=native#text/plain
|
tests/webtbs/tw3829.pp svneol=native#text/plain
|
||||||
|
@ -1793,13 +1793,19 @@ implementation
|
|||||||
|
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
{ only if the same size or formal def }
|
{ only if the same size or formal def, and }
|
||||||
|
{ don't allow type casting of constants to }
|
||||||
|
{ structured types }
|
||||||
if not(
|
if not(
|
||||||
(left.resultdef.typ=formaldef) or
|
(left.resultdef.typ=formaldef) or
|
||||||
(
|
(
|
||||||
not(is_open_array(left.resultdef)) and
|
not(is_open_array(left.resultdef)) and
|
||||||
not(is_array_constructor(left.resultdef)) and
|
not(is_array_constructor(left.resultdef)) and
|
||||||
(left.resultdef.size=resultdef.size)
|
(left.resultdef.size=resultdef.size) and
|
||||||
|
(not is_constnode(left) or
|
||||||
|
(not(resultdef.typ in [arraydef,recorddef,setdef,stringdef,
|
||||||
|
filedef,variantdef,objectdef]) or
|
||||||
|
is_class_or_interface(resultdef)))
|
||||||
) or
|
) or
|
||||||
(
|
(
|
||||||
is_void(left.resultdef) and
|
is_void(left.resultdef) and
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
{ %VERSION=1.1 }
|
{ %fail }
|
||||||
|
|
||||||
type
|
type
|
||||||
dummyrec = record
|
dummyrec = record
|
||||||
i : int64;
|
i : int64;
|
@ -1,3 +1,5 @@
|
|||||||
|
{ %fail }
|
||||||
|
|
||||||
{ Source provided for Free Pascal Bug Report 3812 }
|
{ Source provided for Free Pascal Bug Report 3812 }
|
||||||
{ Submitted by "Sergey@michint" on 2005-03-22 }
|
{ Submitted by "Sergey@michint" on 2005-03-22 }
|
||||||
{ e-mail: }
|
{ e-mail: }
|
7
tests/webtbf/tw9522.pp
Normal file
7
tests/webtbf/tw9522.pp
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{ %fail }
|
||||||
|
|
||||||
|
type T4Char = array[0..3] of char;
|
||||||
|
begin
|
||||||
|
writeln(T4Char(65)[0]);
|
||||||
|
end.
|
||||||
|
|
7
tests/webtbf/tw9522a.pp
Normal file
7
tests/webtbf/tw9522a.pp
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{ %fail }
|
||||||
|
|
||||||
|
type T4Char = array[0..3] of char;
|
||||||
|
begin
|
||||||
|
writeln(ansistring(65));
|
||||||
|
end.
|
||||||
|
|
7
tests/webtbf/tw9522b.pp
Normal file
7
tests/webtbf/tw9522b.pp
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{ %fail }
|
||||||
|
|
||||||
|
type ts = set of 0..7;
|
||||||
|
begin
|
||||||
|
writeln(1 in ts(65));
|
||||||
|
end.
|
||||||
|
|
7
tests/webtbf/tw9522c.pp
Normal file
7
tests/webtbf/tw9522c.pp
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{ %fail }
|
||||||
|
|
||||||
|
type ts = string[1];
|
||||||
|
begin
|
||||||
|
writeln(ts(65));
|
||||||
|
end.
|
||||||
|
|
8
tests/webtbf/tw9522d.pp
Normal file
8
tests/webtbf/tw9522d.pp
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{ %fail }
|
||||||
|
|
||||||
|
type
|
||||||
|
tr = record b: byte; end;
|
||||||
|
begin
|
||||||
|
writeln(tr(65).b);
|
||||||
|
end.
|
||||||
|
|
8
tests/webtbf/tw9522e.pp
Normal file
8
tests/webtbf/tw9522e.pp
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{ %fail }
|
||||||
|
|
||||||
|
type
|
||||||
|
tobj = object b : byte; end;
|
||||||
|
begin
|
||||||
|
writeln(tobj(65).b);
|
||||||
|
end.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user