On Thu, 24 Jan 2013 13:45:44 -0800, Adam D. Ruppe
<[email protected]> wrote:
On Thursday, 24 January 2013 at 21:41:58 UTC, Adam Wilson wrote:
The problem is that optional parens introduce ambiguity in relation to
what is a property versus a function from the compilers prospective.
No, it doesn't.
struct Thing {
int foo() { return 0; } // method
int bar; // data field
@property int baz() { return 0; } // data field
}
Thing t;
t.bar = 10; // this is a data field because it is
// declared as "int bar" above,
// not because I didn't use parens down here
t.foo; // this is a function call because t.foo is a function
t.baz; // this is a data field because i declared
// "@property int" above, not because I left off parens here
t.bar(); // error, type int has no call method
t.baz(); // error, type int has no call method
Right, this conversation is about removing @property, which invalidates
your argument by turning the data into a function, which is what we want
to avoid. Also you might want to run your examples before posting them.
t.baz() is NOT an error, which incidentally why the ambiguities I
mentioned exist and need to be quashed.
--
Adam Wilson
IRC: LightBender
Project Coordinator
The Horizon Project
http://www.thehorizonproject.org/