mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-18 07:49:12 +02:00
* moved transformation of char-to-chararray type conversion into helpers
to first pass, fixes tbf/tb0215 git-svn-id: trunk@21846 -
This commit is contained in:
parent
27f342225a
commit
99c22b87c1
@ -134,6 +134,7 @@ interface
|
||||
function first_cstring_to_int : tnode;virtual;
|
||||
function first_string_to_chararray : tnode;virtual;
|
||||
function first_char_to_string : tnode;virtual;
|
||||
function first_char_to_chararray : tnode; virtual;
|
||||
function first_nothing : tnode;virtual;
|
||||
function first_array_to_pointer : tnode;virtual;
|
||||
function first_int_to_real : tnode;virtual;
|
||||
@ -163,6 +164,7 @@ interface
|
||||
function _first_cstring_to_int : tnode;
|
||||
function _first_string_to_chararray : tnode;
|
||||
function _first_char_to_string : tnode;
|
||||
function _first_char_to_chararray : tnode;
|
||||
function _first_nothing : tnode;
|
||||
function _first_array_to_pointer : tnode;
|
||||
function _first_int_to_real : tnode;
|
||||
@ -1277,16 +1279,7 @@ implementation
|
||||
|
||||
function ttypeconvnode.typecheck_char_to_chararray : tnode;
|
||||
begin
|
||||
if resultdef.size <> 1 then
|
||||
begin
|
||||
{ convert first to string, then to chararray }
|
||||
inserttypeconv(left,cshortstringtype);
|
||||
inserttypeconv(left,resultdef);
|
||||
result:=left;
|
||||
left := nil;
|
||||
exit;
|
||||
end;
|
||||
result := nil;
|
||||
result:=nil;
|
||||
end;
|
||||
|
||||
|
||||
@ -2825,6 +2818,22 @@ implementation
|
||||
end;
|
||||
|
||||
|
||||
function ttypeconvnode.first_char_to_chararray : tnode;
|
||||
|
||||
begin
|
||||
if resultdef.size <> 1 then
|
||||
begin
|
||||
{ convert first to string, then to chararray }
|
||||
inserttypeconv(left,cshortstringtype);
|
||||
inserttypeconv(left,resultdef);
|
||||
result:=left;
|
||||
left := nil;
|
||||
exit;
|
||||
end;
|
||||
result := nil;
|
||||
end;
|
||||
|
||||
|
||||
function ttypeconvnode.first_nothing : tnode;
|
||||
begin
|
||||
first_nothing:=nil;
|
||||
@ -3334,6 +3343,11 @@ implementation
|
||||
result:=first_char_to_string;
|
||||
end;
|
||||
|
||||
function ttypeconvnode._first_char_to_chararray: tnode;
|
||||
begin
|
||||
result:=first_char_to_chararray;
|
||||
end;
|
||||
|
||||
function ttypeconvnode._first_nothing : tnode;
|
||||
begin
|
||||
result:=first_nothing;
|
||||
@ -3433,7 +3447,7 @@ implementation
|
||||
@ttypeconvnode._first_nothing, {not_possible}
|
||||
@ttypeconvnode._first_string_to_string,
|
||||
@ttypeconvnode._first_char_to_string,
|
||||
@ttypeconvnode._first_nothing, { char_2_chararray, needs nothing extra }
|
||||
@ttypeconvnode._first_char_to_chararray,
|
||||
nil, { removed in typecheck_chararray_to_string }
|
||||
@ttypeconvnode._first_cchar_to_pchar,
|
||||
@ttypeconvnode._first_cstring_to_pchar,
|
||||
|
Loading…
Reference in New Issue
Block a user