commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Matt Benson (Resolved) (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (LANG-776) TypeUtilsTest contains incorrect type assignability assertion due to lost/skipped type variable information during the decision process
Date Fri, 18 Nov 2011 00:03:52 GMT

     [ 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

        

Mime
View raw message