* 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:
Jonas Maebe 2012-07-10 13:05:45 +00:00
parent 27f342225a
commit 99c22b87c1

View File

@ -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,