Tried out mixins with externs, which I didn't really knew existed.
Consider:
class A
{
int i;
void sa (int n) {i = n;}
}
class B
{
extern int i;
void sb (int n) {i = n;}
}
class C
{
inherit A;
inherit B;
void sa2 (int n) {A::i = n;}
void sb2 (int n) {B::i = n;}
void w() {werror ("C %O %O\n", A::i, B::i);}
}
extern variables seem to work alright in that both sa() and sb()
assign the same storage. However, what I find surprising is that B::i
seems to access a different location in sb2() and w(). Reading it
produces 0, regardless what A::i is set to, and trying to set it
results in a runtime error. I expected B::i to be an alias for A::i in
all respects in C.