[ 
https://issues.apache.org/jira/browse/LANG-776?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Matt Benson resolved LANG-776.
------------------------------

       Resolution: Fixed
    Fix Version/s: 3.2

rev 1203429
                
> TypeUtilsTest contains incorrect type assignability assertion due to 
> lost/skipped type variable information during the decision process
> ---------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: LANG-776
>                 URL: https://issues.apache.org/jira/browse/LANG-776
>             Project: Commons Lang
>          Issue Type: Bug
>          Components: lang.reflect.*
>    Affects Versions: 3.1
>            Reporter: Matt Benson
>            Assignee: Matt Benson
>             Fix For: 3.2
>
>
> {{TypeUtilsTest}} originally contained the following under 
> #{{testIsAssignable()}}:
> {code}
> Assert.assertTrue("WRONG!", TypeUtils.isAssignable(dingType, disType));
> {code}
> For background:
> {code}
> public interface This<K, V> {
> }
> public class Other<T> implements This<String, T> {
> }
> public class Thing<Q> extends Other<B> {
> }
> {code}
> {{<B>}} refers to a type parameter on the {{TypeUtilsTest}} class itself.
> {{disType}} and {{dingType}} refer to the generic types of the following 
> fields, respectively:
> {code}
> public This<String, String> dis;
> public Thing ding;
> {code}
> Thus the assertion in question declares that type {{Thing}} is assignable to 
> {{This<String, String>}}.  If we start at {{This}} we can see that the 
> implementing class {{Other}} maps its {{T}} type parameter to the {{V}} type 
> parameter of {{This}}.  From this point we can proceed down to {{Thing}} and 
> see that it maps the {{B}} type parameter of the enclosing {{TypeUtilsTest}} 
> class to the {{T}} type parameter of {{Other}}.  Thus it is fairly obvious 
> that only a {{TypeUtilsTest<String>.Thing}} is assignable to {{This<String, 
> String>}}.  From this we can determine that the intent of the message in the 
> original test assertion must indeed have been to flag an incorrect assertion. 
>  This is the associated bug report.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to