[fpc-devel] Suggestion for change: Overly strict check

Ales Katona almindor at gmail.com
Mon Oct 2 11:46:09 CEST 2006


Having same function names as parameter names per se isn't a biggy but
the biggest problem is:

TFirst = class
 protected
  FFirst: Integer;
 public
  property First: Integer read FFirst write FFirst;
end;

TTest = class(TFirst)
  FSomething: Integer;
 public
  procedure DoWithFirst(a, First: Integer);
end;

implementation

procedure TTest.DoWithFirst(a, First: Integer);
begin
  First:=a; // ???
  FSomething:=First; // ???
end;

Ofcourse the intention was setting FSomething to value of argument First
and setting FFirst to value of First. It CAN be achieved with "FFirst"
or "self.First" but it's just a stupid example of how easily you can
overlook things especialy if some parts are hidden in another unit
somewhere in an ancestor.

Also notice that in mode delphi there's not a single warning about this.

And believe me things like this CAN happen and will take you 3 days to
find out...

I name my arguments "aName" since this incident and not because
{$objfpc}...

PS: there are worse cases but I can't remember a better example now

Ales




More information about the fpc-devel mailing list