Review request for OPENJDK6-40: OpenJDK6-b32 does not compile the testcase that Oracle JDK 6u45 compiles fine
Nikolay Gorshkov
nikolay at azulsystems.com
Mon Dec 15 16:08:48 UTC 2014
Hi Andrew,
On 15.12.2014 18:40, Andrew Hughes wrote:
> The main thing that concerns me is the loss of the original author
> information, but I'm not sure if we have a solution for this as yet.
> I tend to go with the original author as the changeset author
> (hg commit --user <username>) but that also has the downside of
> not crediting the backporter.
>
> I guess both it and the original reviewer could be looked up via
> the changeset in 7, which is:
>
> 6938454: Unable to determine generic type in program that compiles under Java 6
> Summary: a redundant dubtyping check causes spurious inference failure
> Reviewed-by: jjg
>
> I think that's meant to be 'subtyping' ;)
As we discussed some time ago, for backports we could add a new
commit message header like "Authored-by: <original fix author>",
but it likely requires jcheck modification and updating official
rules.
> I hadn't realised this. Is there a reason the following hunks are absent?
>
> diff -r ed354a00f76b -r 36c4ec4525b4 src/share/classes/com/sun/tools/javac/comp/Attr.java
> --- a/src/share/classes/com/sun/tools/javac/comp/Attr.java Tue Jul 27 11:52:11 2010 -0700
> +++ b/src/share/classes/com/sun/tools/javac/comp/Attr.java Thu Jul 29 15:56:25 2010 +0100
> @@ -1694,8 +1694,22 @@
> //if the type of the instance creation expression is an interface
> //skip the method resolution step (JLS 15.12.2.7). The type to be
> //inferred is of the kind <X1,X2, ... Xn>C<X1,X2, ... Xn>
> - clazztype = new ForAll(clazztype.tsym.type.allparams(),
> - clazztype.tsym.type);
> + clazztype = new ForAll(clazztype.tsym.type.allparams(), clazztype.tsym.type) {
> + @Override
> + public List<Type> getConstraints(TypeVar tv, ConstraintKind ck) {
> + switch (ck) {
> + case EXTENDS: return types.getBounds(tv);
> + default: return List.nil();
> + }
> + }
> + @Override
> + public Type inst(List<Type> inferred, Types types) throws Infer.NoInstanceException {
> + // check that inferred bounds conform to their bounds
> + infer.checkWithinBounds(tvars,
> + types.subst(tvars, tvars, inferred), Warner.noWarnings);
> + return super.inst(inferred, types);
> + }
> + };
> } else {
> //if the type of the instance creation expression is a class type
> //apply method resolution inference (JLS 15.12.2.7). The return type
>
> diff -r ed354a00f76b -r 36c4ec4525b4 src/share/classes/com/sun/tools/javac/comp/Infer.java
> --- a/src/share/classes/com/sun/tools/javac/comp/Infer.java Tue Jul 27 11:52:11 2010 -0700
> +++ b/src/share/classes/com/sun/tools/javac/comp/Infer.java Thu Jul 29 15:56:25 2010 +0100
> @@ -458,7 +457,7 @@
>
> /** check that type parameters are within their bounds.
> */
> - private void checkWithinBounds(List<Type> tvars,
> + void checkWithinBounds(List<Type> tvars,
> List<Type> arguments,
> Warner warn)
> throws InvalidInstanceException {
These parts of the original fix were excluded because they are
related to diamond ("<>") operator support, which appeared in
Java 7 and is not a part of Java 6.
> Do the new tests added by the change pass?
Yes, I checked newly added testcases, and also all existing
javac jtreg tests (langtools/test/tools/javac) - all of them passed.
Thanks,
Nikolay
>
>> Thanks,
>>
>> Ivan
>>
>> 6938454: Unable to determine generic type in program that compiles under
>> Java 6
>> Reviewed-by: aph
>> Contributed-by: nikgor <nikolay at azulsystems.com>
>>
>>
>>
>> On 11/12/2014 22:01, Andrew Haley wrote:
>>> On 12/11/2014 06:59 PM, Nikolay Gorshkov wrote:
>>>> Me and my colleagues have a consensus that the patch is important to us -
>>>> we are responsible for introducing a regression into OpenJDK 6 (breaking
>>>> Apache Flume 1.5.0 compilation), and so we have to fix it. We have already
>>>> included this patch into our OpenJDK 6 -based products, and now we are
>>>> interested in upstreaming it to OpenJDK 6 itself to minimize the
>>>> difference
>>>> in codebase.
>>> Reluctantly, OK. I am crossing my fingers and hoping that this
>>> is the last we'll see of this bug! We shall see.
>>>
>>> Thanks for your patience,
>>> Andrew.
>>>
>>>
>>
>>
>
> Thanks,
>
More information about the jdk6-dev
mailing list