On Mon, 08 Apr 2013 19:48:12 -0400, bearophile <[email protected]>
wrote:
On request by Maxim Fomin I ask an opinion here. This is a very small
enhancement request, that for me is borderline bug report (so originally
I didn't plan in showing it in the main D newsgroup):
http://d.puremagic.com/issues/show_bug.cgi?id=9857
Maybe this should be valid:
struct Foo {
int opCall(bool b) {
return 0;
}
}
void main() {
Foo foo;
auto b1 = foo(true); // OK
auto b2 = true.foo; // Error
}
dmd 2.063alpha gives:
temp.d(9): Error: no property 'foo' for type 'bool'
I agree, it should be valid.
A rewrite should be a rewrite, not some special-cased thing.
The rules are simple:
given a.b(...)
1. if a.b(...) compiles, then call it
2. otherwise if b(a, ...) compiles, call it.
3. otherwise, error.
-Steve