HaxeFoundation / haxe

Haxe - The Cross-Platform Toolkit
https://haxe.org
6.03k stars 648 forks source link

Map with abstract key complains about mismatched types #11694

Open EliteMasterEric opened 2 weeks ago

EliteMasterEric commented 2 weeks ago

Expected behavior

Given that JobIdentifier is an abstract, I should be able to create the following map:

static var callbackHandlers:Map<JobIdentifier, String> = new Map();

Actual behavior

However, I receive this error:

[ERROR] Test.hx:3: characters 60-69

 3 |   static var callbackHandlers:Map<JobIdentifier, String> = new Map();
   |                                                            ^^^^^^^^^
   | error: JobIdentifier should be _Test.JobIdentifierImpl
   | have: (haxe.IMap<_Test.JobIdentifierImpl, ...>) -> ...
   | want: (haxe.IMap<JobIdentifier, ...>) -> ...

Using new Map<JobIdentifier, String>() displays the same error.

Minimal reproduction

https://try.haxe.org/#b85078ba

Use case

I am using haxe-concurrent, and I trying to make a map storing data for each of a set of tasks, identified by their JobIdentifier.

kLabz commented 2 weeks ago

Workaround would be to add to JobIdentifierImpl to your abstract.