needing to change the order of things at module level = compiler bug, right?

DanielG simpletangent at
Sun Dec 8 16:43:13 UTC 2019

I dustmite'd down my problem code, and it seems just changing the 
order of declarations makes the error go away. Specifically, 
moving a class declaration from the bottom of the file, to the 
top, allows it to compile. I also commented on two other things 
that can be changed to make it work - neither seemingly related 
to the error at hand.

Just double-checking before I file a bug for this:
import sumtype;

// DMD 2.089.0-dirty (also v2.087.1)
// app.d(18,13): Error: struct 
sumtype.SumType!(CallbackType1).SumType is not copyable because 
it is annotated with @disable

struct Struct1(T) {
     bool[T] items;

struct CallbackType1 {
     void delegate(Struct1!Class2) func;   // changing arg to 
Class2[] compiles OK
alias CallbackType = SumType!CallbackType1;

class Class1 {
     CallbackType _callback;
     this(CallbackType callback) { // commenting out this ctor 
compiles OK
         _callback = callback;

// moving Class2 to the top of the file compiles OK
class Class2 {
     Struct1!Class1 subscribers;

void main() {}

More information about the Digitalmars-d-learn mailing list