www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 13408] New: template mixins allows to declare duplicates

https://issues.dlang.org/show_bug.cgi?id=13408

          Issue ID: 13408
           Summary: template mixins allows to declare duplicates
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: major
          Priority: P1
         Component: DMD
          Assignee: nobody puremagic.com
          Reporter: temtaime gmail.com

import std.stdio;

mixin template R() {
    ~this() { write(1); }
}

struct S {
    mixin R;

    ~this() { write(2); }
}

void main() {
    S s;
}

This code compiles OK and prints 21 when it should NOT.

import std.stdio;

mixin template R() {
    int a = 1;
    void foo() { write(a); }
}

struct S {
    mixin R;

    void bar() { write(a); }

    int a = 2;
}

void main() {
    S s;
    s.foo();
    s.bar();
}

This code also compiles OK and prints 12 when it's strange and bug-prone.

--
Aug 31 2014