I don't get why the compiler should have to check if the type set is non-empty.
The compiler only has to check when the generic type/func is used if the concrete type matches the type set. At worse the developer has written generic code that nobody can use.
Checking type sets is a work for a linter. But the developer should have caught the problem with a simple unit test.
I'm glad that the specification relieves the compiler writers from that the non-empty check task.