On 02.03.2012 20:03, Sven Barth wrote:
 > One more question: why this feature isn't works when used with arguments?
 > The arguments could have the same name of a property.

Normally it should work with arguments as well, but there is a bug if
you define a property with an identifier that's used in a method that
was defined before the property. In that latter case the check does not
work.

To illustrate this a bit:

=== source begin ===

program dupidenttest;

{$mode objfpc}

type
  TTest1 = class
    fFoo: LongInt;
    property Foo: LongInt read fFoo;
    procedure Bar(Foo: LongInt);
  end;

  TTest2 = class
    fFoo: LongInt;
    procedure Bar(Foo: LongInt);
    property Foo: LongInt read fFoo;
  end;

procedure TTest1.Bar(Foo: LongInt);
begin

end;

procedure TTest2.Bar(Foo: LongInt);
begin

end;

begin

end.

=== source end ===

results in the following compiler output:

=== output begin ===

Free Pascal Compiler version 2.6.0 [2011/12/23] for i386
Copyright (c) 1993-2011 by Florian Klaempfl and others
Target OS: Linux for i386
Compiling dupidenttest.pas
dupidenttest.pas(9,19) Error: Duplicate identifier "Foo"
dupidenttest.pas(31) Fatal: There were 1 errors compiling module, stopping
Fatal: Compilation aborted
Error: /mnt/data/applications/fpc/2.6.0/bin/ppc386 returned an error exitcode (normal if you did not specify a source file to be compiled)

=== output end ===

If I comment out TTest1 then the program compiles successfully.

Regards,
Sven
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to