digitalmars.D.bugs - [Issue 20443] New: Case where code compiles depending on order of
- d-bugmail puremagic.com (60/60) Dec 11 2019 https://issues.dlang.org/show_bug.cgi?id=20443
https://issues.dlang.org/show_bug.cgi?id=20443 Issue ID: 20443 Summary: Case where code compiles depending on order of declaration Product: D Version: D2 Hardware: All URL: https://forum.dlang.org/post/wookkrecjzlvdyybyizf foru m.dlang.org OS: All Status: NEW Keywords: rejects-valid Severity: regression Priority: P1 Component: dmd Assignee: nobody puremagic.com Reporter: b2.temp gmx.com --- enum isCopyable(S) = is(typeof( { S foo = S.init; S copy = foo; } )); struct SumType(T) { static if (!isCopyable!T) disable this(this); } version(none) class Class2 { Struct1!Class1 subscribers; } struct Struct1(T) { bool[T] items; } struct CallbackType1 { void delegate(Struct1!Class2) func; } alias CallbackType = SumType!CallbackType1; class Class1 { CallbackType _callback; this(CallbackType callback) { // commenting out this ctor compiles OK _callback = callback; } } version(all) class Class2 { Struct1!Class1 subscribers; } void main() {} --- change the version(all) to version(none) and the version(none) no version(all) and the code compiles. run.dlang.io indicates a 2.066 regression 2.064 to 2.065.0: Success and no output 2.066.0 to 2.078.1: Failure with output: onlineapp.d(29): Error: struct onlineapp.SumType!(CallbackType1).SumType is not copyable because it is annotated with disable Since 2.079.1: Failure with output: onlineapp.d(29): Error: struct `onlineapp.SumType!(CallbackType1).SumType` is not copyable because it is annotated with ` disable` --
Dec 11 2019