haxe
haxe copied to clipboard
type parameters and void/dynamic unification
Not sure if bug, or what to think of it. This worked in 4.2.1, now it errors.
I would expect either both variants to work, or both to error.
function main() {
var a:Gen<FooVoid> = new Gen(new Foo());
var b = new Gen(new Foo());
var aa:Gen<FooDynamic> = a; // Works.
var bb:Gen<FooDynamic> = b; // Error: Void should be Dynamic
}
class Gen<A:{}> {
final ser:A;
public function new<S:A>(ser:S) this.ser = ser;
}
typedef FooDynamic = {function foo():Dynamic;}
typedef FooVoid = {function foo():Void;}
class Foo {
public function foo():Void {};
public function new() {}
}