Compile error on inherited call to private message method
Original Reporter info from Mantis: accorp @accorp
-
Reporter name:
Original Reporter info from Mantis: accorp @accorp
- Reporter name:
Description:
In objfpc mode, if parent class has message method declared in private scope
type
TClassA = class(TObject)
strict private
procedure MessageOne(var AMsg); message 1;
end;
procedure TClassA.MessageOne(var AMsg);
begin
inherited;
WriteLn('TClassA.MessageOne()');
end;
then message method with same id in descendant class cannot use "inherited" to propagate message
type
TClassB = class(TClassA)
protected
procedure OverriddenMessageOne(var AMsg); message 1;
end;
procedure TClassB.OverriddenMessageOne(var AMsg);
begin
inherited;
WriteLn('TClassB.OverriddenMessageOne()');
end;
privmsg.pp(24,12) Error: Wrong number of parameters specified for call to "MessageOne"
privmsg.pp(10,19) Error: Found declaration: MessageOne(var &LtPos;Formal type>);
With {$mode delphi} it compiles without error.
Mantis conversion info:
- Mantis ID: 29841
- Build: r20:33214M
- Version: 3.1.1
- Monitored by: » @martok (Martok), » reiner.sombrowsky (Reiner Sombrowsky), » Vincent (Vincent Snijders), » @SergeAnvarov (Serge Anvarov), » AntonK (Anton Kavalenka)