D-Programming-Language/druntime — pull request #588 by 9rnsr (2013-08-26 02:12:26+00:00)
Title: Make some AA member functions non-property

Remove `@property` annotation from `byKey`, `byValue`, `rehash`, and `dup`.

Under the *optional parenthesis* semantics, if a method never returns a callable object, `@property` annotation is not necessary. When property enforcement is properly implemented (by https://github.com/D-Programming-Language/dmd/pull/2305), some user code might break by that. I think we should relax the restriction to reduce the update pain.

- `byKey` and `byValue`
They returns a range. And, range interface never requires opCall operator overloading, nor function pointer/delegate cannot become it.
- `rehash`
Obviously it has a side-effect to the AA itself, so function-style call should be accepted.
- `dup`
The *duplicate* operation itself does not have a side-effect to the AA itself. However, some programmers would think that the duplication has a side-effect to the *global state* (and indeed it would allocate a new memory in GC heap). Therefore I think that allowing parenthesis would be practically better than disabling it.