digitalmars.D.bugs - [Issue 10577] New: 2.063 Mixin Regression (works with 2.062)
- d-bugmail puremagic.com (55/55) Jul 08 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10577
- d-bugmail puremagic.com (10/10) Jul 08 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10577
- d-bugmail puremagic.com (6/6) Jul 08 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10577
- d-bugmail puremagic.com (11/11) Jul 09 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10577
- d-bugmail puremagic.com (12/12) Jul 09 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10577
- d-bugmail puremagic.com (52/52) Jul 12 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10577
- d-bugmail puremagic.com (12/18) Jul 13 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10577
http://d.puremagic.com/issues/show_bug.cgi?id=10577 Summary: 2.063 Mixin Regression (works with 2.062) Product: D Version: D2 Platform: All OS/Version: All Status: NEW Severity: regression Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: puneet coverify.org --- Here is the minimal code to reproduce. Works with version 2.062. With version 2.063 and latest github snapshot, I get an error: test.d(37): Error: function test.derived.foo multiple overrides of same function // Code starts here enum sync; public template get_sync(size_t I, A...) { static if(I == A.length) enum bool get_sync = false; else static if(is(A[I] == sync)) enum bool get_sync = true; else enum bool get_sync = get_sync!(I+1, A); } template add_sync(T, size_t ITER=0) { static if(ITER == (__traits(derivedMembers, T).length)) { enum string add_sync = ""; } else { enum string mem = __traits(derivedMembers, T)[ITER]; enum string add_sync = "static if(! __traits(isVirtualMethod, " ~ mem ~ ")) {" ~ "mixin(add_sync!(get_sync!(0, __traits(getAttributes, " ~ mem ~ ")), \"" ~ mem ~ "\"));} " ~ add_sync!(T, ITER+1); } } template add_sync(bool A, string M) { static if(A) { enum string add_sync = " auto " ~ M[1..$] ~ "() {synchronized(this) return " ~ M ~ ";}"; } else { enum string add_sync = ""; } } class base { public void foo() {} } class derived : base { mixin(add_sync!(derived)); sync private bool _bar; public override void foo() {} } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jul 08 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10577 Kenji Hara <k.hara.pg gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |pull, rejects-valid https://github.com/D-Programming-Language/dmd/pull/2322 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jul 08 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10577 --- Thanks Kenji. Tried your pull request in my code. Works for me too. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jul 08 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10577 Commits pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/51991f94be53375fe66339d46eea343cd8a107a6 fix Issue 10577 - 2.063 Mixin Regression (works with 2.062) https://github.com/D-Programming-Language/dmd/commit/af61ebff5404dd408b1b40ef94e17fb585c1a7b6 [REG2.063] Issue 10577 - 2.063 Mixin Regression (works with 2.062) -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jul 09 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10577 hsteoh quickfur.ath.cx changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |hsteoh quickfur.ath.cx Resolution| |WORKSFORME Seems to have been fixed by the pull. I can compile the code without errors. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jul 09 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10577 Puneet Goel <puneet coverify.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED Resolution|WORKSFORME | --- Slightly different test case. But since this too is related, I am re-opening the same bug. Let me know if I should instead be opening a separate bug for this. With this code, I am getting a *spurious* deprecation warning (compiles without warning with version 2.062). test.d(37): Deprecation: class test.derived use of test.base.foo() hidden by derived is deprecated. Use 'alias base.foo foo;' to introduce base class overload set. // test.d Code starts here enum sync; public template get_sync(size_t I, A...) { static if(I == A.length) enum bool get_sync = false; else static if(is(A[I] == sync)) enum bool get_sync = true; else enum bool get_sync = get_sync!(I+1, A); } template add_sync(T, size_t ITER=0) { static if(ITER == (__traits(derivedMembers, T).length)) { enum string add_sync = ""; } else { enum string mem = __traits(derivedMembers, T)[ITER]; enum string add_sync = "static if(! __traits(isVirtualMethod, " ~ mem ~ ")) {" ~ "mixin(add_sync!(get_sync!(0, __traits(getAttributes, " ~ mem ~ ")), \"" ~ mem ~ "\"));} " ~ add_sync!(T, ITER+1); } } template add_sync(bool A, string M) { static if(A) { enum string add_sync = " auto " ~ M[1..$] ~ "() {synchronized(this) return " ~ M ~ ";}"; } else { enum string add_sync = ""; } } abstract class base { mixin(add_sync!(base)); sync private bool _bar; public void foo(); } class derived: base { public override void foo() {} } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jul 12 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10577 Kenji Hara <k.hara.pg gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|REOPENED |RESOLVED Resolution| |FIXEDSlightly different test case. But since this too is related, I am re-opening the same bug. Let me know if I should instead be opening a separate bug for this. With this code, I am getting a *spurious* deprecation warning (compiles without warning with version 2.062).I filed the issue in separate bug 10628. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jul 13 2013