Skip to content

Conversation

@metagn
Copy link
Collaborator

@metagn metagn commented Nov 25, 2025

fixes #25312

Tuple expressions (a, b, c) can be either types or values depending on if their elements are typedescs or values, this is checked by checking if the type of the element is tyTypeDesc. However when an skGenericParam symbol is semchecked by semSym it is given its own tyGenericParam type rather than a tyTypeDesc type, this seems to be necessary for signatures to allow wildcard generic params passed to static constrained generic params (tested in #25315). The reason semSym is called is that semGeneric for generic invocations calls matches which sems its arguments like normal expressions.

To deal with this, an expression of type tyGenericParam and with a skGenericParam sym is allowed as a type in the tuple expression. A problem is that this might consider a value with a wildcard generic param type as a type. But this is a very niche problem, and I'm not sure how to check for this. skGenericParam symbols stay as idents when semchecked so it can't be checked that the node is an skGenericParam symbol. It could be checked that it's an ident but I don't know how robust this is. And maybe there is another way to refer to a wildcard generic param type instead of just its symbol, i.e. another kind of node.

This also makes #5647 finally work but a test case for that can be added after.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Compile error with heapqueue, generics and tuples

1 participant