Generic type problem when passing a delegate to a base constructor
Submitted by kos..@..ex.com
Link to original bug (#792355)
Description
code:
public abstract class LambdaObject<G> : Object {
public LambdaObject (G g, Func<G> func) {}
public void method (G g, Func<G> func) {}
public virtual void virtual_method (G g, Func<G> func) {}
}
public class IntLambdaObject : LambdaObject<int> {
public IntLambdaObject () {
// argument 1 is fine.
// but an error occurs at argument 2 : Cannot convert ...
base(123, int_func);
// passing to a non-constructor method is fine.
method(123, int_func);
}
public override void virtual_method (int g, Func<int> func) {
// passing to a non-constructor base method is also fine.
base.virtual_method(123, int_func);
}
public void int_func (int g) {}
}
void main () {
var obj = new IntLambdaObject();
}
output:
test.vala:11.13-11.20: error: Argument 2: Cannot convert from `void IntLambdaObject.int_func (int)' to `void GLib.Func`<G>` (G)'
Version: 0.38.x
Edited by Rico Tzschichholz