On 01.11.2015 16:38, Jonas Maebe wrote:
1) do you a) forbid an enumerator specification if the class already has an enumerator
No, it's not needed.
b) hide the existing enumerator
No, it's not needed.
or c) allow enumerating both via the property and the original class enumerator?
There can never be a situation where property and class enumerators compete. property enumerator is by design allowed only for array properties: *property A[index: xyz]*. They cannot introduce an enumerator with current trunk.
If you all both, how do you differentiate? If b), first assigning the property to a variable
You cannot assign an array property to a variable. It does not exist without the index parameter.
and iterating over that will have a different result than directly iterating over the property, which is bad for understandability and code predictability.
This can never happen. Array property does not exist without the index parameter.

---
You probably missed the fact that property enumerator can be introduced only for array properties. I talk about it in the issue report http://bugs.freepascal.org/view.php?id=28820 :
/
Please note that the "enumerator" keyword can be used only for "array" properties because normal properties can have a default enumerator defined./

Also the patch I uploaded is written in regard to this design. See in project1.lpr (uncomment the enumerator keyword for testing): * property MyString: string read GetMyString;// enumerator GetEnumerator2; // <-- try to uncomment, this has to fail to compile (correct) !**
*

Ondrej
_______________________________________________
fpc-devel maillist  -  [email protected]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to