Before parametrics, we had the ParameterizedType representing a concrete type, and the ParameterizableClass representing a generic type.
The problem was that the ParameterizedType was missing most of its relevant information, such as attributes, methods, etc., which also breaks most convenience methods like inheritedAttributes.
So we had to do this check every time to get the type with the actual information:
Now, with parametrics, a ParametricEntity can take on both roles, being either concrete and missing relevant information, or generic and with information, resulting in having to do the equivalent check every time:
I would like to have a unary method in FamixTType that does this check for us so we don't have to rewrite the same snippet each and every time we manipulate types.
However, this conflicts with languages that do not use ParametricEntity, such as Smalltalk.
This can be fixed by adding the testing method isParametricEntity to the root entity, but this leaves a bad taste...
I'm not sure how to call this method yet, here are some ideas:
Before parametrics, we had the
ParameterizedType
representing a concrete type, and theParameterizableClass
representing a generic type. The problem was that theParameterizedType
was missing most of its relevant information, such as attributes, methods, etc., which also breaks most convenience methods likeinheritedAttributes
. So we had to do this check every time to get the type with the actual information:Now, with parametrics, a
ParametricEntity
can take on both roles, being either concrete and missing relevant information, or generic and with information, resulting in having to do the equivalent check every time:I would like to have a unary method in
FamixTType
that does this check for us so we don't have to rewrite the same snippet each and every time we manipulate types. However, this conflicts with languages that do not useParametricEntity
, such as Smalltalk. This can be fixed by adding the testing methodisParametricEntity
to the root entity, but this leaves a bad taste...I'm not sure how to call this method yet, here are some ideas:
typeWithInformation
resolvedType
effectiveType
fullySpecifiedType