On 2012-04-27 07:07, H. S. Teoh wrote:
Is this a bug? Code:

        import std.stdio;

        struct S {
                static int func(int x) { return x+1; }
                int func(int x) { return x+2; }
        }

        void main() {
                S s;
                writeln(s.func(1));
        }

DMD (latest git) output:

        test.d(10): Error: function test.S.func called with argument types:
                ((int))
        matches both:
                test.S.func(int x)
        and:
                test.S.func(int x)

The error message is unhelpful, but basically the complaint is that the
static method is conflicting with the non-static method.

But I would've thought it is unambiguous; I'd expect that s.func should
resolve to the non-static method, and S.func to the static method. After
all, no object is needed to invoke the static method, and the static
method cannot be invoked without an object.

It's intended behavior but there's a suggestion to change that: http://d.puremagic.com/issues/show_bug.cgi?id=3345

--
/Jacob Carlborg

Reply via email to