On 01.07.2019 21:04, Michael Van Canneyt wrote:
If the compiler encounters "Mytest.StringArray" it can be evaluated only as the non-indexed overload.

Well... We can of course discuss forever, and still not agree.
I suggest we let the compiler people have the last word on this. They know best. And if you turn out to be right: so much the better.

Yes - either I don't see something obvious here or you :)

But I really don't know a situation where

Mytest.StringArray;

(without the []-brackets) is valid syntax for an array property:

  TTest = class
  public
    property StringArray[Index: Integer]: string read GetString;
  end;

- and if such a code is always invalid there is free space for the non-indexed overload. Or can you think of some valid code where an indexed (array) property can be accessed without the []-brackets?

It's basically the same as method overloads:

  TTest = class
  public
    procedure Test(index: integer);
    procedure Test;
  end;

Only the brackets change from [] to ().

Yes, there is the new situation when the non-indexed overload is an array itself (or is an object with a default property) - but this can be solved by simply saying that the indexed property has precedence before resolving the array of the non-indexed property.

Ondrej

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to