* error handling of pass_1 and cgi386 fixed

* the following bugs fixed: 0117, 0118, 0119 and 0129, 0122 was already
    fixed, verified
This commit is contained in:
florian 1998-04-13 21:15:41 +00:00
parent 7b97bfea3b
commit de04288a2a
4 changed files with 787 additions and 661 deletions

View File

@ -99,12 +99,60 @@ implementation
const
bytes2Sxx:array[1..4] of Topsize=(S_B,S_W,S_NO,S_L);
procedure error(const t : tmsgconst);
procedure message(const t : tmsgconst);
var
olderrorcount : longint;
begin
if not(codegenerror) then
verbose.Message(t);
codegenerror:=true;
begin
olderrorcount:=errorcount;
verbose.Message(t);
codegenerror:=olderrorcount<>errorcount;
end;
end;
procedure message1(const t : tmsgconst;const s : string);
var
olderrorcount : longint;
begin
if not(codegenerror) then
begin
olderrorcount:=errorcount;
verbose.Message1(t,s);
codegenerror:=olderrorcount<>errorcount;
end;
end;
procedure message2(const t : tmsgconst;const s1,s2 : string);
var
olderrorcount : longint;
begin
if not(codegenerror) then
begin
olderrorcount:=errorcount;
verbose.Message2(t,s1,s2);
codegenerror:=olderrorcount<>errorcount;
end;
end;
procedure message3(const t : tmsgconst;const s1,s2,s3 : string);
var
olderrorcount : longint;
begin
if not(codegenerror) then
begin
olderrorcount:=errorcount;
verbose.Message3(t,s1,s2,s3);
codegenerror:=olderrorcount<>errorcount;
end;
end;
type
@ -2093,6 +2141,10 @@ implementation
getlabel(falselabel);
{ calculate left sides }
secondpass(p^.left);
if codegenerror then
exit;
case p^.left^.location.loc of
LOC_REFERENCE : begin
{ in case left operator uses to register }
@ -2150,6 +2202,10 @@ implementation
end;
end;
secondpass(p^.right);
if codegenerror then
exit;
{$ifdef test_dest_loc}
dest_loc_known:=false;
if in_dest_loc then
@ -4596,7 +4652,7 @@ implementation
cleartempgen;
getlabel(l3);
aktcontinuelabel:=l1;
aktcontinuelabel:=l2;
aktbreaklabel:=l3;
if assigned(p^.right) then
@ -5751,7 +5807,12 @@ do_jmp:
end.
{
$Log$
Revision 1.11 1998-04-13 08:42:51 florian
Revision 1.12 1998-04-13 21:15:41 florian
* error handling of pass_1 and cgi386 fixed
* the following bugs fixed: 0117, 0118, 0119 and 0129, 0122 was already
fixed, verified
Revision 1.11 1998/04/13 08:42:51 florian
* call by reference and call by value open arrays fixed
Revision 1.10 1998/04/12 22:39:43 florian

File diff suppressed because it is too large Load Diff

View File

@ -55,12 +55,60 @@ unit pass_1;
const
count_ref : boolean = true;
procedure error(const t : tmsgconst);
procedure message(const t : tmsgconst);
var
olderrorcount : longint;
begin
if not(codegenerror) then
verbose.Message(t);
codegenerror:=true;
begin
olderrorcount:=errorcount;
verbose.Message(t);
codegenerror:=olderrorcount<>errorcount;
end;
end;
procedure message1(const t : tmsgconst;const s : string);
var
olderrorcount : longint;
begin
if not(codegenerror) then
begin
olderrorcount:=errorcount;
verbose.Message1(t,s);
codegenerror:=olderrorcount<>errorcount;
end;
end;
procedure message2(const t : tmsgconst;const s1,s2 : string);
var
olderrorcount : longint;
begin
if not(codegenerror) then
begin
olderrorcount:=errorcount;
verbose.Message2(t,s1,s2);
codegenerror:=olderrorcount<>errorcount;
end;
end;
procedure message3(const t : tmsgconst;const s1,s2,s3 : string);
var
olderrorcount : longint;
begin
if not(codegenerror) then
begin
olderrorcount:=errorcount;
verbose.Message3(t,s1,s2,s3);
codegenerror:=olderrorcount<>errorcount;
end;
end;
procedure firstpass(var p : ptree);forward;
@ -383,6 +431,13 @@ unit pass_1;
doconv:=tc_equal;
b:=true;
end
else
{ nil is compatible with procvars }
if (fromtreetype=niln) and (def_to^.deftype=procvardef) then
begin
doconv:=tc_equal;
b:=true;
end
{ procedure variable can be assigned to an void pointer }
{ Not anymore. Use the @ operator now.}
else
@ -4502,7 +4557,12 @@ unit pass_1;
end.
{
$Log$
Revision 1.8 1998-04-13 08:42:52 florian
Revision 1.9 1998-04-13 21:15:42 florian
* error handling of pass_1 and cgi386 fixed
* the following bugs fixed: 0117, 0118, 0119 and 0129, 0122 was already
fixed, verified
Revision 1.8 1998/04/13 08:42:52 florian
* call by reference and call by value open arrays fixed
Revision 1.7 1998/04/12 22:39:44 florian

View File

@ -187,7 +187,7 @@ begin
else
if (idx in [1..5]) then
begin
for i:=1to idx do
for i:=1 to idx do
begin
case upcase(s[i]) of
'F' : begin
@ -290,7 +290,12 @@ end.
{
$Log$
Revision 1.2 1998-03-28 23:09:57 florian
Revision 1.3 1998-04-13 21:15:42 florian
* error handling of pass_1 and cgi386 fixed
* the following bugs fixed: 0117, 0118, 0119 and 0129, 0122 was already
fixed, verified
Revision 1.2 1998/03/28 23:09:57 florian
* secondin bugfix (m68k and i386)
* overflow checking bugfix (m68k and i386) -- pretty useless in
secondadd, since everything is done using 32-bit