Fix TypeAs.UNWRAP_MAP_VALUE_OF and TypeAs.UNWRAP_MAP_KEY_OF #342
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #341
This PR adds a new reusable routine
TypeCast
, which is used to investigate type relations with respect to generic arguments (like improvedisInstanceOf
).TypeCast
is then used by three new utility methods toCollections
:getCollectionElementType
,getMapKeyType
andgetMapValueType
. These are similar toTypeAs.UNWRAP_MAP_VALUE_OF
& friends, but returnOptional.empty()
when the supplied type is not a Collection / Map (as opposed to the supplied type itself). In fact, theUNWRAP_*
functions now delegate toCollections
and therefore now return more accurate results.Last but not least, I have identified a new public routine
TypeArguments.getGenericArgumentsMappings(ClassRef ref, TypeDef definition)
. This creates a mapping from generic types on a TypeDef to their instantiation on ClassRef. This code has been used at multiple places both in sundrio, but also in kubernetes-client. So I think it deserves a common implementation.