Skip to content

Id<T> fails to cast to Int in haxe 4.2.2 #144

@serjek

Description

@serjek

Example below compiles just fine (apart from deprecation warnings) in haxe 4.1.5 but fails to compile in 4.2.2 with following error:

src/MainMinimal.hx:38: lines 38-43 : error: tink.sql.Id<Room> should be Int
src/MainMinimal.hx:38: lines 38-43 : ... have: tink.Promise<Array<{ id: tink.sql.Id<...> }>>
src/MainMinimal.hx:38: lines 38-43 : ... want: tink.Promise<Array<{ id: Int }>>

Minimal example:

package;
import tink.sql.drivers.MySql;
import tink.sql.Types;
using tink.CoreApi;

typedef User = {
	@:primary @:autoIncrement @:optional final id:Id<User>;
}

typedef Room = {
	@:primary @:autoIncrement @:optional final id:Id<Room>;
	final user:Id<User>;
}

typedef MyData = {
	final user:Int;
	final id:Int;
}

@:tables(User,Room)
class Db extends tink.sql.Database {}

class MainMinimal {

	public static function main() new MainMinimal();

	var db:Db;
	public function new() {
		var driver:MySql = new MySql({
			user: 'root',
			password: '',
			host: '127.0.0.1',
			port: 3306
		});
		db = new Db('test', driver);

		test().eager();
	}

	public function test():Promise<Array<MyData>>
		return db.Room.select({
				id: Room.id,
				user: Room.user
			})
			.where(Room.id > 10)
			.all();
}
-cp src
-main MainMinimal
-dce full

-lib hxnodejs
-lib tink_sql

-js minimal.js

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions