Thread overview
Mixin bug / unhelpful behavior?
Apr 23, 2013
Luís Marques
Apr 23, 2013
bearophile
Apr 24, 2013
Luís Marques
April 23, 2013
Consider the following code:

    mixin template Bar()
    {
        void Bar() {};
    }

    void mixin_ok()
    {
        mixin Bar;
        Bar();
    }

    void mixin_not_defined_ok()
    {
        mixin UndefinedMixin; // OK, compile-time error
    }

    void mixin_not_defined_bug()()
    {
        mixin UndefinedMixin; // No error, unless mixin_not_defined_bug is called. Bug?
    }

    void mixin_alias()
    {
        alias Foo = Bar;
        mixin Foo;
        //Foo(); // error: template instance Bar!() mixin templates are not regular templates
        Bar(); // ok, but not very helpful
    }

Questions:

1) Is it a bug that mixin_not_defined_bug does not produce a compile-time error, unless it is called? (DMD64 v2.062, OS X)

2) Wouldn't it make be helpful if "Foo()" did the same thing as Bar()?
April 23, 2013
Luís Marques:

> 1) Is it a bug that mixin_not_defined_bug does not produce a compile-time error, unless it is called? (DMD64 v2.062, OS X)

I think that here D is working according to its current specs.

On the other hand this topic was recently discussed and despite Andrei the consensus seems that such error situations should be found by the D compiler. There is an enhancement request on this, I like it, and Walter seems to like the idea.


> 2) Wouldn't it make be helpful if "Foo()" did the same thing as Bar()?

Mixin templates are a relatively new feature and maybe that alias use case was not considered, or it was not regarded as important. What are your use cases of aliasing a mixing template?

Bye,
bearophile
April 24, 2013
On Tuesday, 23 April 2013 at 23:25:11 UTC, bearophile wrote:
> Mixin templates are a relatively new feature and maybe that alias use case was not considered, or it was not regarded as important. What are your use cases of aliasing a mixing template?

I'm going to post it in a new thread.