mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-10 23:09:28 +02:00
* synchronised with trunk till r40732
git-svn-id: branches/debug_eh@40733 -
This commit is contained in:
commit
473fef315d
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -14689,6 +14689,7 @@ tests/webtbf/tw2724.pp svneol=native#text/plain
|
|||||||
tests/webtbf/tw2739.pp svneol=native#text/plain
|
tests/webtbf/tw2739.pp svneol=native#text/plain
|
||||||
tests/webtbf/tw2751.pp svneol=native#text/plain
|
tests/webtbf/tw2751.pp svneol=native#text/plain
|
||||||
tests/webtbf/tw2752.pp svneol=native#text/plain
|
tests/webtbf/tw2752.pp svneol=native#text/plain
|
||||||
|
tests/webtbf/tw27543.pp svneol=native#text/pascal
|
||||||
tests/webtbf/tw2787.pp svneol=native#text/plain
|
tests/webtbf/tw2787.pp svneol=native#text/plain
|
||||||
tests/webtbf/tw27880.pp svneol=native#text/pascal
|
tests/webtbf/tw27880.pp svneol=native#text/pascal
|
||||||
tests/webtbf/tw2795.pp svneol=native#text/plain
|
tests/webtbf/tw2795.pp svneol=native#text/plain
|
||||||
|
@ -58,6 +58,7 @@ type
|
|||||||
fval: tai;
|
fval: tai;
|
||||||
public
|
public
|
||||||
constructor create(_adetyp: ttypedconstkind; _def: tdef; _val: tai);
|
constructor create(_adetyp: ttypedconstkind; _def: tdef; _val: tai);
|
||||||
|
destructor destroy; override;
|
||||||
property val: tai read fval write setval;
|
property val: tai read fval write setval;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -646,6 +647,13 @@ implementation
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
destructor tai_simpletypedconst.destroy;
|
||||||
|
begin
|
||||||
|
fval.free;
|
||||||
|
inherited destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
{****************************************************************************
|
{****************************************************************************
|
||||||
tai_aggregatetypedconst.tadeenumerator
|
tai_aggregatetypedconst.tadeenumerator
|
||||||
****************************************************************************}
|
****************************************************************************}
|
||||||
@ -820,7 +828,11 @@ implementation
|
|||||||
|
|
||||||
|
|
||||||
destructor tai_aggregatetypedconst.destroy;
|
destructor tai_aggregatetypedconst.destroy;
|
||||||
|
var
|
||||||
|
ai: tai_abstracttypedconst;
|
||||||
begin
|
begin
|
||||||
|
for ai in self do
|
||||||
|
ai.free;
|
||||||
fvalues.free;
|
fvalues.free;
|
||||||
inherited destroy;
|
inherited destroy;
|
||||||
end;
|
end;
|
||||||
|
@ -3186,7 +3186,7 @@ implementation
|
|||||||
paramanager.getintparaloc(list,pd,1,cgpara1);
|
paramanager.getintparaloc(list,pd,1,cgpara1);
|
||||||
a_load_const_cgpara(list,s32inttype,aint(210),cgpara1);
|
a_load_const_cgpara(list,s32inttype,aint(210),cgpara1);
|
||||||
paramanager.freecgpara(list,cgpara1);
|
paramanager.freecgpara(list,cgpara1);
|
||||||
g_call_system_proc(list,pd,[@cgpara1],nil);
|
g_call_system_proc(list,pd,[@cgpara1],nil).resetiftemp;
|
||||||
cgpara1.done;
|
cgpara1.done;
|
||||||
a_label(list,oklabel);
|
a_label(list,oklabel);
|
||||||
end;
|
end;
|
||||||
@ -3234,7 +3234,7 @@ implementation
|
|||||||
paramanager.freecgpara(list,cgpara3);
|
paramanager.freecgpara(list,cgpara3);
|
||||||
paramanager.freecgpara(list,cgpara2);
|
paramanager.freecgpara(list,cgpara2);
|
||||||
paramanager.freecgpara(list,cgpara1);
|
paramanager.freecgpara(list,cgpara1);
|
||||||
g_call_system_proc(list,pd,[@cgpara1,@cgpara2,@cgpara3],nil);
|
g_call_system_proc(list,pd,[@cgpara1,@cgpara2,@cgpara3],nil).resetiftemp;
|
||||||
cgpara3.done;
|
cgpara3.done;
|
||||||
cgpara2.done;
|
cgpara2.done;
|
||||||
cgpara1.done;
|
cgpara1.done;
|
||||||
@ -3262,7 +3262,7 @@ implementation
|
|||||||
end;
|
end;
|
||||||
paramanager.freecgpara(list,cgpara2);
|
paramanager.freecgpara(list,cgpara2);
|
||||||
paramanager.freecgpara(list,cgpara1);
|
paramanager.freecgpara(list,cgpara1);
|
||||||
g_call_system_proc(list,pd,[@cgpara1,@cgpara2],nil);
|
g_call_system_proc(list,pd,[@cgpara1,@cgpara2],nil).resetiftemp;
|
||||||
cgpara2.done;
|
cgpara2.done;
|
||||||
cgpara1.done;
|
cgpara1.done;
|
||||||
end;
|
end;
|
||||||
@ -3301,7 +3301,7 @@ implementation
|
|||||||
{ these functions get the pointer by value }
|
{ these functions get the pointer by value }
|
||||||
a_load_ref_cgpara(list,t,ref,cgpara1);
|
a_load_ref_cgpara(list,t,ref,cgpara1);
|
||||||
paramanager.freecgpara(list,cgpara1);
|
paramanager.freecgpara(list,cgpara1);
|
||||||
g_call_system_proc(list,pd,[@cgpara1],nil);
|
g_call_system_proc(list,pd,[@cgpara1],nil).resetiftemp;
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
@ -3323,7 +3323,7 @@ implementation
|
|||||||
end;
|
end;
|
||||||
paramanager.freecgpara(list,cgpara1);
|
paramanager.freecgpara(list,cgpara1);
|
||||||
paramanager.freecgpara(list,cgpara2);
|
paramanager.freecgpara(list,cgpara2);
|
||||||
g_call_system_proc(list,pd,[@cgpara1,@cgpara2],nil);
|
g_call_system_proc(list,pd,[@cgpara1,@cgpara2],nil).resetiftemp;
|
||||||
end;
|
end;
|
||||||
cgpara2.done;
|
cgpara2.done;
|
||||||
cgpara1.done;
|
cgpara1.done;
|
||||||
@ -3349,7 +3349,7 @@ implementation
|
|||||||
paramanager.getintparaloc(list,pd,1,cgpara1);
|
paramanager.getintparaloc(list,pd,1,cgpara1);
|
||||||
a_loadaddr_ref_cgpara(list,t,ref,cgpara1);
|
a_loadaddr_ref_cgpara(list,t,ref,cgpara1);
|
||||||
paramanager.freecgpara(list,cgpara1);
|
paramanager.freecgpara(list,cgpara1);
|
||||||
g_call_system_proc(list,pd,[@cgpara1],nil);
|
g_call_system_proc(list,pd,[@cgpara1],nil).resetiftemp;
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
@ -3371,7 +3371,7 @@ implementation
|
|||||||
end;
|
end;
|
||||||
paramanager.freecgpara(list,cgpara1);
|
paramanager.freecgpara(list,cgpara1);
|
||||||
paramanager.freecgpara(list,cgpara2);
|
paramanager.freecgpara(list,cgpara2);
|
||||||
g_call_system_proc(list,pd,[@cgpara1,@cgpara2],nil);
|
g_call_system_proc(list,pd,[@cgpara1,@cgpara2],nil).resetiftemp;
|
||||||
end;
|
end;
|
||||||
cgpara1.done;
|
cgpara1.done;
|
||||||
cgpara2.done;
|
cgpara2.done;
|
||||||
@ -3421,7 +3421,7 @@ implementation
|
|||||||
end;
|
end;
|
||||||
paramanager.freecgpara(list,cgpara1);
|
paramanager.freecgpara(list,cgpara1);
|
||||||
paramanager.freecgpara(list,cgpara2);
|
paramanager.freecgpara(list,cgpara2);
|
||||||
g_call_system_proc(list,pd,[@cgpara1,@cgpara2],nil);
|
g_call_system_proc(list,pd,[@cgpara1,@cgpara2],nil).resetiftemp;
|
||||||
cgpara1.done;
|
cgpara1.done;
|
||||||
cgpara2.done;
|
cgpara2.done;
|
||||||
exit;
|
exit;
|
||||||
@ -3431,7 +3431,7 @@ implementation
|
|||||||
paramanager.getintparaloc(list,pd,1,cgpara1);
|
paramanager.getintparaloc(list,pd,1,cgpara1);
|
||||||
a_loadaddr_ref_cgpara(list,t,ref,cgpara1);
|
a_loadaddr_ref_cgpara(list,t,ref,cgpara1);
|
||||||
paramanager.freecgpara(list,cgpara1);
|
paramanager.freecgpara(list,cgpara1);
|
||||||
g_call_system_proc(list,pd,[@cgpara1],nil);
|
g_call_system_proc(list,pd,[@cgpara1],nil).resetiftemp;
|
||||||
cgpara1.done;
|
cgpara1.done;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -3485,7 +3485,7 @@ implementation
|
|||||||
paramanager.freecgpara(list,cgpara1);
|
paramanager.freecgpara(list,cgpara1);
|
||||||
paramanager.freecgpara(list,cgpara2);
|
paramanager.freecgpara(list,cgpara2);
|
||||||
paramanager.freecgpara(list,cgpara3);
|
paramanager.freecgpara(list,cgpara3);
|
||||||
g_call_system_proc(list,pd,[@cgpara1,@cgpara2,@cgpara3],nil);
|
g_call_system_proc(list,pd,[@cgpara1,@cgpara2,@cgpara3],nil).resetiftemp;
|
||||||
|
|
||||||
cgpara3.done;
|
cgpara3.done;
|
||||||
cgpara2.done;
|
cgpara2.done;
|
||||||
@ -3664,7 +3664,7 @@ implementation
|
|||||||
{ if low(to) > maxlongint also range error }
|
{ if low(to) > maxlongint also range error }
|
||||||
(lto > aintmax) then
|
(lto > aintmax) then
|
||||||
begin
|
begin
|
||||||
g_call_system_proc(list,'fpc_rangeerror',[],nil);
|
g_call_system_proc(list,'fpc_rangeerror',[],nil).resetiftemp;
|
||||||
exit
|
exit
|
||||||
end;
|
end;
|
||||||
{ from is signed and to is unsigned -> when looking at to }
|
{ from is signed and to is unsigned -> when looking at to }
|
||||||
@ -3679,7 +3679,7 @@ implementation
|
|||||||
if (lfrom > aintmax) or
|
if (lfrom > aintmax) or
|
||||||
(hto < 0) then
|
(hto < 0) then
|
||||||
begin
|
begin
|
||||||
g_call_system_proc(list,'fpc_rangeerror',[],nil);
|
g_call_system_proc(list,'fpc_rangeerror',[],nil).resetiftemp;
|
||||||
exit
|
exit
|
||||||
end;
|
end;
|
||||||
{ from is unsigned and to is signed -> when looking at to }
|
{ from is unsigned and to is signed -> when looking at to }
|
||||||
@ -3702,7 +3702,7 @@ implementation
|
|||||||
a_cmp_const_reg_label(list,maxdef,OC_BE,aintmax,hreg,neglabel)
|
a_cmp_const_reg_label(list,maxdef,OC_BE,aintmax,hreg,neglabel)
|
||||||
else
|
else
|
||||||
a_cmp_const_reg_label(list,maxdef,OC_BE,tcgint(int64(hto-lto)),hreg,neglabel);
|
a_cmp_const_reg_label(list,maxdef,OC_BE,tcgint(int64(hto-lto)),hreg,neglabel);
|
||||||
g_call_system_proc(list,'fpc_rangeerror',[],nil);
|
g_call_system_proc(list,'fpc_rangeerror',[],nil).resetiftemp;
|
||||||
a_label(list,neglabel);
|
a_label(list,neglabel);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -3781,7 +3781,7 @@ implementation
|
|||||||
paramanager.freecgpara(list,cgpara3);
|
paramanager.freecgpara(list,cgpara3);
|
||||||
paramanager.freecgpara(list,cgpara2);
|
paramanager.freecgpara(list,cgpara2);
|
||||||
paramanager.freecgpara(list,cgpara1);
|
paramanager.freecgpara(list,cgpara1);
|
||||||
g_call_system_proc(list,pd,[@cgpara1,@cgpara2,@cgpara3],nil);
|
g_call_system_proc(list,pd,[@cgpara1,@cgpara2,@cgpara3],nil).resetiftemp;
|
||||||
cgpara3.done;
|
cgpara3.done;
|
||||||
cgpara2.done;
|
cgpara2.done;
|
||||||
cgpara1.done;
|
cgpara1.done;
|
||||||
@ -3800,7 +3800,7 @@ implementation
|
|||||||
{ load source }
|
{ load source }
|
||||||
a_load_loc_cgpara(list,cpointerdef.getreusable(arrdef),l,cgpara1);
|
a_load_loc_cgpara(list,cpointerdef.getreusable(arrdef),l,cgpara1);
|
||||||
paramanager.freecgpara(list,cgpara1);
|
paramanager.freecgpara(list,cgpara1);
|
||||||
g_call_system_proc(list,pd,[@cgpara1],nil);
|
g_call_system_proc(list,pd,[@cgpara1],nil).resetiftemp;
|
||||||
cgpara1.done;
|
cgpara1.done;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -4639,10 +4639,10 @@ implementation
|
|||||||
{$ifdef AVR}
|
{$ifdef AVR}
|
||||||
cg.a_call_name(list,'FPC_INIT_FUNC_TABLE',false)
|
cg.a_call_name(list,'FPC_INIT_FUNC_TABLE',false)
|
||||||
{$else AVR}
|
{$else AVR}
|
||||||
g_call_system_proc(list,'fpc_initializeunits',[],nil)
|
g_call_system_proc(list,'fpc_initializeunits',[],nil).resetiftemp
|
||||||
{$endif AVR}
|
{$endif AVR}
|
||||||
else
|
else
|
||||||
g_call_system_proc(list,'fpc_libinitializeunits',[],nil);
|
g_call_system_proc(list,'fpc_libinitializeunits',[],nil).resetiftemp;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
list.concat(Tai_force_line.Create);
|
list.concat(Tai_force_line.Create);
|
||||||
@ -4660,7 +4660,7 @@ implementation
|
|||||||
{ call __EXIT for main program }
|
{ call __EXIT for main program }
|
||||||
if (not current_module.islibrary) and
|
if (not current_module.islibrary) and
|
||||||
(current_procinfo.procdef.proctypeoption=potype_proginit) then
|
(current_procinfo.procdef.proctypeoption=potype_proginit) then
|
||||||
g_call_system_proc(list,'fpc_do_exit',[],nil);
|
g_call_system_proc(list,'fpc_do_exit',[],nil).resetiftemp;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure thlcgobj.inittempvariables(list: TAsmList);
|
procedure thlcgobj.inittempvariables(list: TAsmList);
|
||||||
@ -5236,7 +5236,7 @@ implementation
|
|||||||
paramanager.getintparaloc(list,pd,1,paraloc1);
|
paramanager.getintparaloc(list,pd,1,paraloc1);
|
||||||
paramanager.freecgpara(list,paraloc1);
|
paramanager.freecgpara(list,paraloc1);
|
||||||
{ Call the helper }
|
{ Call the helper }
|
||||||
hlcg.g_call_system_proc(list,pd,[@paraloc1],nil);
|
g_call_system_proc(list,pd,[@paraloc1],nil).resetiftemp;
|
||||||
paraloc1.done;
|
paraloc1.done;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -521,7 +521,7 @@ implementation
|
|||||||
function tjvminlinenode.first_setlength: tnode;
|
function tjvminlinenode.first_setlength: tnode;
|
||||||
begin
|
begin
|
||||||
{ reverse the parameter order so we can process them more easily }
|
{ reverse the parameter order so we can process them more easily }
|
||||||
left:=reverseparameters(tcallparanode(left));
|
reverseparameters(tcallparanode(left));
|
||||||
{ treat setlength(x,0) specially: used to init uninitialised locations }
|
{ treat setlength(x,0) specially: used to init uninitialised locations }
|
||||||
if not is_shortstring(left.resultdef) and
|
if not is_shortstring(left.resultdef) and
|
||||||
not assigned(tcallparanode(tcallparanode(left).right).right) and
|
not assigned(tcallparanode(tcallparanode(left).right).right) and
|
||||||
@ -535,7 +535,7 @@ implementation
|
|||||||
{ strings are handled the same as on other platforms }
|
{ strings are handled the same as on other platforms }
|
||||||
if left.resultdef.typ=stringdef then
|
if left.resultdef.typ=stringdef then
|
||||||
begin
|
begin
|
||||||
left:=reverseparameters(tcallparanode(left));
|
reverseparameters(tcallparanode(left));
|
||||||
result:=inherited first_setlength;
|
result:=inherited first_setlength;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
@ -1433,7 +1433,7 @@ implementation
|
|||||||
internalerror(2015122504);
|
internalerror(2015122504);
|
||||||
current_asmdata.getjumplabel(hl);
|
current_asmdata.getjumplabel(hl);
|
||||||
a_cmp_const_loc_label(list,llvmbool1type,OC_EQ,0,ovloc,hl);
|
a_cmp_const_loc_label(list,llvmbool1type,OC_EQ,0,ovloc,hl);
|
||||||
g_call_system_proc(list,'fpc_overflow',[],nil);
|
g_call_system_proc(list,'fpc_overflow',[],nil).resetiftemp;
|
||||||
a_label(list,hl);
|
a_label(list,hl);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1659,8 +1659,12 @@ implementation
|
|||||||
|
|
||||||
|
|
||||||
procedure thlcgllvm.gen_load_loc_function_result(list: TAsmList; vardef: tdef; const l: tlocation);
|
procedure thlcgllvm.gen_load_loc_function_result(list: TAsmList; vardef: tdef; const l: tlocation);
|
||||||
|
var
|
||||||
|
retlocpara: tcgpara;
|
||||||
begin
|
begin
|
||||||
gen_load_loc_cgpara(list,vardef,l,get_call_result_cgpara(current_procinfo.procdef,nil));
|
retlocpara:=get_call_result_cgpara(current_procinfo.procdef,nil);
|
||||||
|
gen_load_loc_cgpara(list,vardef,l,retlocpara);
|
||||||
|
retlocpara.resetiftemp;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
@ -292,7 +292,7 @@ interface
|
|||||||
dct_propput
|
dct_propput
|
||||||
);
|
);
|
||||||
|
|
||||||
function reverseparameters(p: tcallparanode): tcallparanode;
|
procedure reverseparameters(var p: tcallparanode);
|
||||||
function translate_disp_call(selfnode,parametersnode: tnode; calltype: tdispcalltype; const methodname : ansistring;
|
function translate_disp_call(selfnode,parametersnode: tnode; calltype: tdispcalltype; const methodname : ansistring;
|
||||||
dispid : longint;resultdef : tdef) : tnode;
|
dispid : longint;resultdef : tdef) : tnode;
|
||||||
|
|
||||||
@ -333,21 +333,23 @@ implementation
|
|||||||
HELPERS
|
HELPERS
|
||||||
****************************************************************************}
|
****************************************************************************}
|
||||||
|
|
||||||
function reverseparameters(p: tcallparanode): tcallparanode;
|
procedure reverseparameters(var p: tcallparanode);
|
||||||
var
|
var
|
||||||
|
tmpp,
|
||||||
hp1, hp2: tcallparanode;
|
hp1, hp2: tcallparanode;
|
||||||
begin
|
begin
|
||||||
hp1:=nil;
|
hp1:=nil;
|
||||||
while assigned(p) do
|
tmpp:=p;
|
||||||
|
while assigned(tmpp) do
|
||||||
begin
|
begin
|
||||||
{ pull out }
|
{ pull out }
|
||||||
hp2:=p;
|
hp2:=tmpp;
|
||||||
p:=tcallparanode(p.right);
|
tmpp:=tcallparanode(tmpp.right);
|
||||||
{ pull in }
|
{ pull in }
|
||||||
hp2.right:=hp1;
|
hp2.right:=hp1;
|
||||||
hp1:=hp2;
|
hp1:=hp2;
|
||||||
end;
|
end;
|
||||||
reverseparameters:=hp1;
|
p:=hp1;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function translate_disp_call(selfnode,parametersnode: tnode; calltype: tdispcalltype; const methodname : ansistring;
|
function translate_disp_call(selfnode,parametersnode: tnode; calltype: tdispcalltype; const methodname : ansistring;
|
||||||
|
@ -311,7 +311,7 @@ implementation
|
|||||||
begin
|
begin
|
||||||
current_asmdata.getjumplabel(hl);
|
current_asmdata.getjumplabel(hl);
|
||||||
hlcg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,opsize,OC_NE,torddef(opsize).low.svalue,location.register,hl);
|
hlcg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,opsize,OC_NE,torddef(opsize).low.svalue,location.register,hl);
|
||||||
hlcg.g_call_system_proc(current_asmdata.CurrAsmList,'fpc_overflow',[],nil);
|
hlcg.g_call_system_proc(current_asmdata.CurrAsmList,'fpc_overflow',[],nil).resetiftemp;
|
||||||
hlcg.a_label(current_asmdata.CurrAsmList,hl);
|
hlcg.a_label(current_asmdata.CurrAsmList,hl);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
@ -1240,7 +1240,7 @@ implementation
|
|||||||
|
|
||||||
{ reverse the parameters (needed to get the colon parameters in the }
|
{ reverse the parameters (needed to get the colon parameters in the }
|
||||||
{ correct order when processing write(ln) }
|
{ correct order when processing write(ln) }
|
||||||
left := reverseparameters(tcallparanode(left));
|
reverseparameters(tcallparanode(left));
|
||||||
|
|
||||||
if is_rwstr then
|
if is_rwstr then
|
||||||
begin
|
begin
|
||||||
@ -1526,7 +1526,7 @@ implementation
|
|||||||
valsinttype:=search_system_type('VALSINT').typedef;
|
valsinttype:=search_system_type('VALSINT').typedef;
|
||||||
|
|
||||||
{ reverse parameters for easier processing }
|
{ reverse parameters for easier processing }
|
||||||
left := reverseparameters(tcallparanode(left));
|
reverseparameters(tcallparanode(left));
|
||||||
|
|
||||||
{ get the parameters }
|
{ get the parameters }
|
||||||
tempcode := nil;
|
tempcode := nil;
|
||||||
|
@ -1491,11 +1491,8 @@ implementation
|
|||||||
newpd:=tprocdef(orgpd.getcopyas(procdef,pc_bareproc,''));
|
newpd:=tprocdef(orgpd.getcopyas(procdef,pc_bareproc,''));
|
||||||
insert_funcret_para(newpd);
|
insert_funcret_para(newpd);
|
||||||
newpd.procoptions:=newpd.procoptions+orgpd.procoptions*[po_external,po_has_importname,po_has_importdll];
|
newpd.procoptions:=newpd.procoptions+orgpd.procoptions*[po_external,po_has_importname,po_has_importdll];
|
||||||
newpd.import_name:=orgpd.import_name;
|
stringdispose(orgpd.import_name);
|
||||||
orgpd.import_name:=nil;
|
stringdispose(orgpd.import_dll);
|
||||||
newpd.import_dll:=orgpd.import_dll;
|
|
||||||
orgpd.import_dll:=nil;
|
|
||||||
newpd.import_nr:=orgpd.import_nr;
|
|
||||||
orgpd.import_nr:=0;
|
orgpd.import_nr:=0;
|
||||||
newpd.setmangledname(newname);
|
newpd.setmangledname(newname);
|
||||||
finish_copied_procdef(newpd,'__FPC_IMPL_EXTERNAL_REDIRECT_'+newname,current_module.localsymtable,nil);
|
finish_copied_procdef(newpd,'__FPC_IMPL_EXTERNAL_REDIRECT_'+newname,current_module.localsymtable,nil);
|
||||||
|
@ -1386,13 +1386,14 @@ begin
|
|||||||
WasInserting:=GetInsertMode;
|
WasInserting:=GetInsertMode;
|
||||||
SetInsertMode(true);
|
SetInsertMode(true);
|
||||||
SetFlags(GetFlags or efNoIndent);
|
SetFlags(GetFlags or efNoIndent);
|
||||||
InsertLine(StartPos.Y,'');
|
InsertLine(StartPos.Y,GetStr(Text));
|
||||||
SetInsertMode(WasInserting);
|
SetInsertMode(WasInserting);
|
||||||
if not HadefNoIndent then
|
if not HadefNoIndent then
|
||||||
SetFlags(GetFlags and not efNoIndent);
|
SetFlags(GetFlags and not efNoIndent);
|
||||||
{DelEnd; wrong for eaCut at least }
|
{DelEnd; wrong for eaCut at least }
|
||||||
SetCurPtr(StartPos.X,StartPos.Y);
|
SetCurPtr(StartPos.X,StartPos.Y);
|
||||||
SetLineText(StartPos.Y,Copy(GetDisplayText(StartPos.Y),1,StartPos.X)+GetStr(Text));
|
if StartPos.Y > EndPos.Y then
|
||||||
|
SetLineText(EndPos.Y,Copy(GetDisplayText(EndPos.Y),1,EndPos.X));
|
||||||
SetMinMax(StartPos.Y);
|
SetMinMax(StartPos.Y);
|
||||||
end;
|
end;
|
||||||
eaSelectionChanged :
|
eaSelectionChanged :
|
||||||
|
10
tests/webtbf/tw27543.pp
Normal file
10
tests/webtbf/tw27543.pp
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{ %fail }
|
||||||
|
function x():longint;
|
||||||
|
begin
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
|
||||||
|
+ x;
|
||||||
|
|
||||||
|
end.
|
Loading…
Reference in New Issue
Block a user