Hi all, hoping someone can help,
I'm used to coding to interfaces and I'm using them very lightly
in an application I'm writing (a CPP wrapper like SWIG, except in
D). Every now and then I touch a piece of code which seems almost
unrelated and then get a bunch of compile errors such as the
following (Method is the interface, MethodImpl is the
implementation):
smidgen/ast/klass.d(108): Error: function
smidgen.ast.klass.Klass.addMethod (Method method) is not callable
using argument types (MethodImpl)
smidgen/ast/klass.d(113): Error: function
smidgen.ast.klass.Klass.addMethod (Method method) is not callable
using argument types (MethodImpl)
smidgen/ast/klass.d(293): Error: cannot append type
smidgen.ast.method.Method to type Method[]
smidgen/ast/klass.d(322): Error: forward reference to
getAllWrappedMethods
smidgen/ast/klass.d(360): Error: forward reference to type
Method[]
smidgen/ast/klass.d(360): Error: cannot implicitly convert
expression (baseMethods) of type Method[] to Method[]
smidgen/ast/klass.d(363): Error: cannot implicitly convert
expression (baseKlass.methods) of type Method[] to Method[]
smidgen/ast/klass.d(542): Error: forward reference to
getAllWrappedMethods
smidgen/ast/klass.d(636): Error: forward reference to
getAllWrappedMethods
smidgen/ast/klass.d(672): Error: forward reference to
getAllWrappedMethods
smidgen/ast/klass.d(15): Error: size of type Method is not known
smidgen/ast/klass.d(709): Error: function
smidgen.ast.klass.Klass.isCovariantMethod (Method otherMethod) is
not callable using argument types (Method)
smidgen/ast/klass.d(746): Error: forward reference to type
Method[]
smidgen/ast/klass.d(746): Error: cannot implicitly convert
expression (allWrappedMethods) of type Method[] to Method[]
I have a feeling that D doesn't fully support arrays of
interfaces, e.g. Method[], particularly as a return type. Is
there a better way to pass around lists of instances of an
interface? I'm using DMD 2.064 on Linux 64bit,
thanks