* more fixes to get classes.pas compiled

This commit is contained in:
florian 1998-04-10 15:39:47 +00:00
parent be00149b6b
commit 768499730d
4 changed files with 953 additions and 921 deletions

File diff suppressed because it is too large Load Diff

View File

@ -353,7 +353,7 @@ unit pdecl;
get_procdef:=nil;
while assigned(p) do
begin
if equal_paras(p^.para1,propertyparas) then
if equal_paras(p^.para1,propertyparas,true) then
break;
p:=p^.nextoverloaded;
end;
@ -407,12 +407,14 @@ unit pdecl;
consume(COLON);
if token=_ARRAY then
begin
{
if (varspez<>vs_const) and
(varspez<>vs_var) then
begin
varspez:=vs_const;
Message(parser_e_illegal_open_parameter);
end;
}
consume(_ARRAY);
consume(_OF);
{ define range and type of range }
@ -1063,12 +1065,14 @@ unit pdecl;
consume(COLON);
if token=_ARRAY then
begin
{
if (varspez<>vs_const) and
(varspez<>vs_var) then
begin
varspez:=vs_const;
Message(parser_e_illegal_open_parameter);
end;
}
consume(_ARRAY);
consume(_OF);
{ define range and type of range }
@ -1726,7 +1730,10 @@ unit pdecl;
end.
{
$Log$
Revision 1.7 1998-04-09 23:02:15 florian
Revision 1.8 1998-04-10 15:39:48 florian
* more fixes to get classes.pas compiled
Revision 1.7 1998/04/09 23:02:15 florian
* small problems solved to get remake3 work
Revision 1.6 1998/04/09 22:16:35 florian

View File

@ -1918,22 +1918,22 @@ for the last instruction of an include file !}
begin
repeat
nextchar;
case c of
#26 : begin
Message(scan_f_end_of_file);
break;
end;
#13,
newline : begin
Message(scan_f_string_exceeds_line);
break;
end;
'''' : begin
nextchar;
if c<>'''' then
break;
end;
end;
case c of
#26 : begin
Message(scan_f_end_of_file);
break;
end;
#13,
newline : begin
Message(scan_f_string_exceeds_line);
break;
end;
'''' : begin
nextchar;
if c<>'''' then
break;
end;
end;
pattern:=pattern+c;
until false;
end;
@ -2103,7 +2103,10 @@ for the last instruction of an include file !}
end.
{
$Log$
Revision 1.6 1998-04-09 09:33:15 pierre
Revision 1.7 1998-04-10 15:39:48 florian
* more fixes to get classes.pas compiled
Revision 1.6 1998/04/09 09:33:15 pierre
* bugfix of newline in BP was wrong !!
(ate a character !!)

View File

@ -63,8 +63,11 @@ unit types;
{ to use on other types }
function is_subequal(def1, def2: pdef): boolean;
{ true, if two parameter lists are equal }
function equal_paras(def1,def2 : pdefcoll) : boolean;
{ true, if two parameter lists are equal }
{ if value_equal_const is true, call by value }
{ and call by const parameter are assumed as }
{ equal }
function equal_paras(def1,def2 : pdefcoll;value_equal_const : boolean) : boolean;
{ gibt den ordinalen Werten der Node zurueck oder falls sie }
{ keinen ordinalen Wert hat, wird ein Fehler erzeugt }
@ -131,16 +134,32 @@ unit types;
(porddef(p^.resulttype)^.typ=bool8bit));
end;
function equal_paras(def1,def2 : pdefcoll) : boolean;
function equal_paras(def1,def2 : pdefcoll;value_equal_const : boolean) : boolean;
begin
while (assigned(def1)) and (assigned(def2)) do
begin
if not(is_equal(def1^.data,def2^.data)) or
(def1^.paratyp<>def2^.paratyp) then
if value_equal_const then
begin
equal_paras:=false;
exit;
if not(is_equal(def1^.data,def2^.data)) or
((def1^.paratyp<>def2^.paratyp) and
((def1^.paratyp=vs_var) or
(def1^.paratyp=vs_var)
)
) then
begin
equal_paras:=false;
exit;
end;
end
else
begin
if not(is_equal(def1^.data,def2^.data)) or
(def1^.paratyp<>def2^.paratyp) then
begin
equal_paras:=false;
exit;
end;
end;
def1:=def1^.next;
def2:=def2^.next;
@ -156,6 +175,7 @@ unit types;
begin
is_fpu:=(def^.deftype=floatdef) and (pfloatdef(def)^.typ<>f32bit);
end;
function is_ordinal(def : pdef) : boolean;
var
@ -666,7 +686,7 @@ unit types;
while assigned(procdefcoll) do
begin
{ compare parameters }
if equal_paras(procdefcoll^.data^.para1,hp^.para1) and
if equal_paras(procdefcoll^.data^.para1,hp^.para1,false) and
(
((procdefcoll^.data^.options and povirtualmethod)<>0) or
((hp^.options and povirtualmethod)<>0)
@ -876,7 +896,10 @@ unit types;
end.
{
$Log$
Revision 1.5 1998-04-09 23:02:16 florian
Revision 1.6 1998-04-10 15:39:49 florian
* more fixes to get classes.pas compiled
Revision 1.5 1998/04/09 23:02:16 florian
* small problems solved to get remake3 work
Revision 1.4 1998/04/08 16:58:09 pierre