haxe icon indicating copy to clipboard operation
haxe copied to clipboard

type parameters and void/dynamic unification

Open Antriel opened this issue 3 years ago • 0 comments

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() {}
}

Antriel avatar May 17 '22 10:05 Antriel