* small bug in systems.pas corrected

+ operators in different units better hanlded
This commit is contained in:
pierre 1998-06-15 15:38:07 +00:00
parent b66d7560f1
commit 2d681748ac
4 changed files with 57 additions and 13 deletions

View File

@ -290,7 +290,11 @@ unit parser;
getsym('POWER',false);
if assigned(srsym) and (srsym^.typ=procsym) and
(overloaded_operators[STARSTAR]=nil) then
overloaded_operators[STARSTAR]:=pprocsym(srsym);
begin
overloaded_operators[STARSTAR]:=
new(pprocsym,init(overloaded_names[STARSTAR]));
overloaded_operators[STARSTAR]^.definition:=pprocsym(srsym)^.definition;
end;
make_ref:=true;
end
else
@ -466,7 +470,11 @@ done:
end.
{
$Log$
Revision 1.24 1998-06-13 00:10:08 peter
Revision 1.25 1998-06-15 15:38:07 pierre
* small bug in systems.pas corrected
+ operators in different units better hanlded
Revision 1.24 1998/06/13 00:10:08 peter
* working browser and newppu
* some small fixes against crashes which occured in bp7 (but not in
fpc?!)

View File

@ -282,10 +282,16 @@
procedure tdef.writename;
var
str : string;
begin
{ name }
if assigned(sym) then
rttilist^.concat(new(pai_string,init(chr(length(sym^.name))+sym^.name)))
begin
str:=sym^.name;
rttilist^.concat(new(pai_string,init(chr(length(str))+str)));
end
else
rttilist^.concat(new(pai_string,init(#0)))
end;
@ -2023,7 +2029,16 @@
{$endif alpha}
writestring(mangledname);
writelong(extnumber);
writedefref(nextoverloaded);
if (options and pooperator) = 0 then
writedefref(nextoverloaded)
else
begin
{ only write the overloads from the same unit }
if nextoverloaded^.owner=owner then
writedefref(nextoverloaded)
else
writedefref(nil);
end;
writedefref(_class);
if (options and poinline) <> 0 then
begin
@ -2631,7 +2646,11 @@
{
$Log$
Revision 1.12 1998-06-15 14:30:12 daniel
Revision 1.13 1998-06-15 15:38:09 pierre
* small bug in systems.pas corrected
+ operators in different units better hanlded
Revision 1.12 1998/06/15 14:30:12 daniel
* Reverted my changes.

View File

@ -489,13 +489,22 @@
procedure tprocsym.deref;
var t : ttoken;
last : pprocdef;
begin
resolvedef(pdef(definition));
for t:=PLUS to last_overloaded do
if (overloaded_operators[t]=nil) and
(name=overloaded_names[t]) then
overloaded_operators[t]:=@self;
if (definition^.options and pooperator) <> 0 then
begin
last:=definition;
while assigned(last^.nextoverloaded) do
last:=last^.nextoverloaded;
for t:=PLUS to last_overloaded do
if (name=overloaded_names[t]) then
begin
if assigned(overloaded_operators[t]) then
last^.nextoverloaded:=overloaded_operators[t]^.definition;
overloaded_operators[t]:=@self;
end;
end;
end;
procedure tprocsym.write;
@ -1671,7 +1680,11 @@
{
$Log$
Revision 1.12 1998-06-15 14:23:44 daniel
Revision 1.13 1998-06-15 15:38:10 pierre
* small bug in systems.pas corrected
+ operators in different units better hanlded
Revision 1.12 1998/06/15 14:23:44 daniel
* Reverted my changes.

View File

@ -324,7 +324,7 @@ implementation
)
,(
id : as_o_aout;
idtxt : 'O';
idtxt : 'O_AOUT';
asmbin : 'as';
asmcmd : '-D -o $OBJ $ASM';
externals : false;
@ -844,7 +844,11 @@ begin
end.
{
$Log$
Revision 1.19 1998-06-15 13:34:24 daniel
Revision 1.20 1998-06-15 15:38:14 pierre
* small bug in systems.pas corrected
+ operators in different units better hanlded
Revision 1.19 1998/06/15 13:34:24 daniel
* Fixed spelling mistakes in comments.