|
@@ -362,7 +362,7 @@ implementation
|
|
((procdefcoll^.data^.options and povirtualmethod)<>0) or
|
|
((procdefcoll^.data^.options and povirtualmethod)<>0) or
|
|
((hp^.options and povirtualmethod)<>0)
|
|
((hp^.options and povirtualmethod)<>0)
|
|
) then
|
|
) then
|
|
- begin
|
|
|
|
|
|
+ begin { same parameters }
|
|
{ wenn sie gleich sind }
|
|
{ wenn sie gleich sind }
|
|
{ und eine davon virtual deklariert ist }
|
|
{ und eine davon virtual deklariert ist }
|
|
{ Fehler falls nur eine VIRTUAL }
|
|
{ Fehler falls nur eine VIRTUAL }
|
|
@@ -390,7 +390,14 @@ implementation
|
|
newentry;
|
|
newentry;
|
|
exit;
|
|
exit;
|
|
end;
|
|
end;
|
|
- end;
|
|
|
|
|
|
+ end
|
|
|
|
+ else
|
|
|
|
+ { the flags have to match }
|
|
|
|
+ { except abstract and override }
|
|
|
|
+ { only if both are virtual !! }
|
|
|
|
+ if (procdefcoll^.data^.options and not(poabstractmethod or pooverridingmethod))<>
|
|
|
|
+ (hp^.options and not(poabstractmethod or pooverridingmethod)) then
|
|
|
|
+ Message1(parser_e_header_dont_match_forward,_c^.objname^+'.'+_name);
|
|
|
|
|
|
{ check, if the overridden directive is set }
|
|
{ check, if the overridden directive is set }
|
|
{ (povirtualmethod is set! }
|
|
{ (povirtualmethod is set! }
|
|
@@ -417,18 +424,12 @@ implementation
|
|
Message1(parser_e_overloaded_methodes_not_same_ret,_c^.objname^+'.'+_name);
|
|
Message1(parser_e_overloaded_methodes_not_same_ret,_c^.objname^+'.'+_name);
|
|
|
|
|
|
|
|
|
|
- { the flags have to match }
|
|
|
|
- { except abstract and override }
|
|
|
|
- if (procdefcoll^.data^.options and not(poabstractmethod or pooverridingmethod))<>
|
|
|
|
- (hp^.options and not(poabstractmethod or pooverridingmethod)) then
|
|
|
|
- Message1(parser_e_header_dont_match_forward,_c^.objname^+'.'+_name);
|
|
|
|
-
|
|
|
|
{ now set the number }
|
|
{ now set the number }
|
|
hp^.extnumber:=procdefcoll^.data^.extnumber;
|
|
hp^.extnumber:=procdefcoll^.data^.extnumber;
|
|
{ and exchange }
|
|
{ and exchange }
|
|
procdefcoll^.data:=hp;
|
|
procdefcoll^.data:=hp;
|
|
stored:=true;
|
|
stored:=true;
|
|
- end;
|
|
|
|
|
|
+ end; { same parameters }
|
|
procdefcoll:=procdefcoll^.next;
|
|
procdefcoll:=procdefcoll^.next;
|
|
end;
|
|
end;
|
|
{ if it isn't saved in the list }
|
|
{ if it isn't saved in the list }
|
|
@@ -470,7 +471,10 @@ implementation
|
|
do_genvmt(p^.childof);
|
|
do_genvmt(p^.childof);
|
|
|
|
|
|
{ walk through all public syms }
|
|
{ walk through all public syms }
|
|
- _c:=_class;
|
|
|
|
|
|
+ { I had to change that to solve bug0260 (PM)}
|
|
|
|
+ {_c:=_class;}
|
|
|
|
+ _c:=p;
|
|
|
|
+ { Florian, please check if you agree (PM) }
|
|
p^.publicsyms^.foreach({$ifndef TP}@{$endif}eachsym);
|
|
p^.publicsyms^.foreach({$ifndef TP}@{$endif}eachsym);
|
|
end;
|
|
end;
|
|
|
|
|
|
@@ -558,7 +562,10 @@ implementation
|
|
end.
|
|
end.
|
|
{
|
|
{
|
|
$Log$
|
|
$Log$
|
|
- Revision 1.10 1999-06-02 22:44:07 pierre
|
|
|
|
|
|
+ Revision 1.11 1999-06-15 13:27:06 pierre
|
|
|
|
+ * bug0260 fixed
|
|
|
|
+
|
|
|
|
+ Revision 1.10 1999/06/02 22:44:07 pierre
|
|
* previous wrong log corrected
|
|
* previous wrong log corrected
|
|
|
|
|
|
Revision 1.9 1999/06/02 22:25:33 pierre
|
|
Revision 1.9 1999/06/02 22:25:33 pierre
|