project1.lpr(5,19) Error: Duplicate identifier "Foo"Now the interesting part is that ONLY happens if the two procedures are part of a class AND the parmeter has the same name as the procedure.
If I declare 2 procedures like that outside a class, then there is no error. Also there is no error, if it is just one procedure in a class.
It also happens like that
procedure aFoo(Foo:pointer);
procedure bFoo(aFoo, Bar:pointer);So that shows why there is a conflict, and what conflicts with what "bfoo" is already used in the class. Now that is correct.
But if fpc checks (correctly) that a param name has not yet been used in the current context (class), then why does it not detect
procedure aFoo(aFoo:pointer);the param aFoo should conflict with the procedure? It is also in the same context ?
Is this exception (from being checked) intentional?
------
program project1;
type
TSome = class
procedure Foo(Foo:pointer); overload;
procedure Foo(Foo, Bar:pointer); overload;
end;
{ TSome }
procedure TSome.Foo(Foo: pointer);
begin end;
procedure TSome.Foo(Foo, Bar: pointer);
begin end;
begin
end.