[fpc-pascal] Re: Duplicate Identifier

Marcos Douglas md at delfire.net
Thu Mar 1 21:42:35 CET 2012


On Thu, Mar 1, 2012 at 5:14 PM, Sven Barth <pascaldragon at googlemail.com> wrote:
> On 01.03.2012 16:34, Marcos Douglas wrote:
>>
>> On Thu, Mar 1, 2012 at 4:29 AM, leledumbo<leledumbo_cool at yahoo.co.id>
>>  wrote:
>>>
>>> That's different case IMHO (In My Humble Observation), I guess it's
>>> something
>>> like this:
>>>
>>> {$mode objfpc}
>>> type
>>>  TTestClass = class
>>>    FTile: Integer;
>>>    property Tile: Integer read FTile write FTile;
>>>    procedure Test;
>>>  end;
>>>
>>> procedure TTestClass.Test;
>>> var
>>>  Tile: Integer;
>>> begin
>>> end;
>>>
>>> begin
>>> end.
>>>
>>> In this case, the local variable has the same name as one of the class
>>> properties. This does trigger the "duplicate identifier" error because
>>> both
>>> have the same scope.
>>
>>
>> Well, for me the local Tile variable should have "preference" because
>> the scope is local, not "global for class".
>> Would be equal the use of arguments, IMHO, where we can use an
>> identifier that already exists in the class.
>
>
> In mode Delphi this is true, but in non-Delphi modes it was decided that the
> above code is not allowed at all to avoid any disambiguities that might
> arise.
>
> Regards,
> Sven

So, I have to invent a prefix or suffix in all local variables to
avoid problems if I add a property with same name in the future,
right?
ex:
  lTile: Integer
  Tile1: Integer
  vTile: Integer

...well, I already do that, but I don't think this is correct.

Marcos Douglas



More information about the fpc-pascal mailing list