Hi, could you please attach the given Bug2.java file to the same issue? This is another variant of the same bug that affects simple method calls (without diamond), so it is not only the constructor with diamond affected. You have to infer the type for those "wrapper" methods, too.
The following code does not compile with -source/target 1.7:
import java.util.*;
class Bug2 {
/* This method just emulates the common Google Guava/Guice pattern to wrap
collections, e.g.
*
<http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/Iterators.html#peekingIterator(java.util.Iterator)>
*/
static <V> Set<V> asSet(Collection<? extends V> collection) {
return new HashSet<V>(collection);
}
// this causes the bug -> type is inferred by parameter not left side
assignment
static <V> void bug(Collection<? extends V> collection) {
Set<V> set1 = Bug2.asSet(collection);
// workaround that compiles:
Set<V> set2 = Bug2.<V>asSet(collection);
}
}
$ javac -source 1.7 -target 1.7 Bug2.java
warning: [options] bootstrap class path not set in conjunction with -source 1.7
Bug2.java:12: error: incompatible types: Set<CAP#1> cannot be converted to
Set<V>
Set<V> set = Bug2.asSet(collection);
^
where V is a type-variable:
V extends Object declared in method <V>bug(Collection<? extends V>)
where CAP#1 is a fresh type-variable:
CAP#1 extends V from capture of ? extends V
1 error
1 warning
This type was discovered by the elasticsearch people, who use a lot of code of
Google Guava/Guice that has a lot of static methods that wrap collections and
return views of a different type.
Usage of most of the Methods in e.g. com.google.common.collect.Iterators or
com.google.common.collect.Lists and similars are affected by this bug, so it's
really serious!
To work around the bug you can do whats written in the example code: Just infer
the generics using the <T> between static class name and method name [like the
common pattern Arrays.<String>asList (....)].
-----
Uwe Schindler
H.-H.-Meier-Allee 63, D-28213 Bremen
http://www.thetaphi.de
eMail: [email protected]
> -----Original Message-----
> From: Uwe Schindler [mailto:[email protected]]
> Sent: Tuesday, March 24, 2015 10:05 AM
> To: 'Balchandra Vaidya'; 'Rory O'Donnell'; [email protected]
> Cc: 'Dalibor Topic'; [email protected]
> Subject: RE: [JENKINS] Lucene-Solr-5.x-Linux (32bit/jdk1.9.0-ea-b54) - Build #
> 11848 - Failure!
>
> Hi,
>
> Many thanks! I CCed Robert Muir from Elasticsearch who took care of this at
> ES (https://github.com/elastic/elasticsearch/issues/10145).
>
> Uwe
>
> -----
> Uwe Schindler
> H.-H.-Meier-Allee 63, D-28213 Bremen
> http://www.thetaphi.de
> eMail: [email protected]
>
>
> > -----Original Message-----
> > From: Balchandra Vaidya [mailto:[email protected]]
> > Sent: Tuesday, March 24, 2015 8:27 AM
> > To: Uwe Schindler; 'Rory O'Donnell'; [email protected]
> > Cc: 'Dalibor Topic'
> > Subject: Re: [JENKINS] Lucene-Solr-5.x-Linux (32bit/jdk1.9.0-ea-b54) -
> > Build #
> > 11848 - Failure!
> >
> >
> > Hi Uwe,
> >
> > JBS bug id is https://bugs.openjdk.java.net/browse/JDK-8075793
> >
> > Thanks
> > Balchandra
> >
> > On 3/24/2015 5:57 AM, Uwe Schindler wrote:
> > > Hi Rory,
> > >
> > > do you have an update on this bug? Searched for it in the openjdk
> > bugtracker but did not find it. This also affects lots of code from
> > Google Guava / Guice and because of that also our friends at Elasticsearch.
> > >
> > > Uwe
> > >
> > > -----
> > > Uwe Schindler
> > > H.-H.-Meier-Allee 63, D-28213 Bremen http://www.thetaphi.de
> > > eMail: [email protected]
> > >
> > >
> > >> -----Original Message-----
> > >> From: Rory O'Donnell [mailto:[email protected]]
> > >> Sent: Friday, March 20, 2015 10:00 AM
> > >> To: Uwe Schindler; [email protected]
> > >> Cc: [email protected]; 'Dalibor Topic'; 'Balchandra Vaidya'
> > >> Subject: Re: [JENKINS] Lucene-Solr-5.x-Linux (32bit/jdk1.9.0-ea-b54)
> > >> - Build #
> > >> 11848 - Failure!
> > >>
> > >> Thanks Uwe, we will update you with the bug id .
> > >>
> > >> Rgds,Rory
> > >> On 19/03/2015 16:28, Uwe Schindler wrote:
> > >>> Hi,
> > >>>
> > >>> I opened Review ID: JI-9019884 "Java 9 b54 breaks compiling code
> > >>> with
> > >> source/target 1.7 and diamond operator"
> > >>> Uwe
> > >>>
> > >>> -----
> > >>> Uwe Schindler
> > >>> H.-H.-Meier-Allee 63, D-28213 Bremen http://www.thetaphi.de
> > >>> eMail: [email protected]
> > >>>
> > >>>
> > >>>> -----Original Message-----
> > >>>> From: Rory O'Donnell [mailto:[email protected]]
> > >>>> Sent: Thursday, March 19, 2015 4:12 PM
> > >>>> To: Uwe Schindler; [email protected]
> > >>>> Cc: [email protected]; Dalibor Topic; Balchandra Vaidya
> > >>>> Subject: Re: [JENKINS] Lucene-Solr-5.x-Linux (32bit/jdk1.9.0-ea-b54)
> > >>>> - Build #
> > >>>> 11848 - Failure!
> > >>>>
> > >>>>
> > >>>> On 19/03/2015 14:30, Uwe Schindler wrote:
> > >>>>> Hi,
> > >>>>>
> > >>>>> this seems to be a bug (or feature?) in the most recent Java 9 build
> 54:
> > >>>>>
> > >>>>> compile-core:
> > >>>>> [mkdir] Created dir: /home/jenkins/workspace/Lucene-Solr-5.x-
> > >>>> Linux/lucene/build/analysis/common/classes/java
> > >>>>> [javac] Compiling 461 source files to
> > >>>>> /home/jenkins/workspace/Lucene-
> > >>>> Solr-5.x-Linux/lucene/build/analysis/common/classes/java
> > >>>>> [javac] /home/jenkins/workspace/Lucene-Solr-5.x-
> > >>>>
> > Linux/lucene/analysis/common/src/java/org/apache/lucene/analysis/util
> > >>>> /Ch
> > >>>> arArrayMap.java:568: error: incompatible types:
> > CharArrayMap<CAP#1>
> > >>>> cannot be converted to CharArrayMap<V>
> > >>>>> [javac] return new CharArrayMap<>(map, false);
> > >>>>> [javac] ^
> > >>>>> [javac] where V is a type-variable:
> > >>>>> [javac] V extends Object declared in method
> <V>copy(Map<?,?
> > >>>> extends V>)
> > >>>>> [javac] where CAP#1 is a fresh type-variable:
> > >>>>> [javac] CAP#1 extends V from capture of ? extends V
> > >>>>>
> > >>>>> This is the code:
> > >>>>>
> > >>>>> @SuppressWarnings("unchecked")
> > >>>>> public static <V> CharArrayMap<V> copy(final Map<?,? extends
> V>
> > >>>>> map)
> > >>>> {
> > >>>>> if(map == EMPTY_MAP)
> > >>>>> return emptyMap();
> > >>>>> if(map instanceof CharArrayMap) {
> > >>>>> CharArrayMap<V> m = (CharArrayMap<V>) map;
> > >>>>> // use fast path instead of iterating all values
> > >>>>> // this is even on very small sets ~10 times faster than
> > >>>>> iterating
> > >>>>> final char[][] keys = new char[m.keys.length][];
> > >>>>> System.arraycopy(m.keys, 0, keys, 0, keys.length);
> > >>>>> final V[] values = (V[]) new Object[m.values.length];
> > >>>>> System.arraycopy(m.values, 0, values, 0, values.length);
> > >>>>> m = new CharArrayMap<>(m);
> > >>>>> m.keys = keys;
> > >>>>> m.values = values;
> > >>>>> return m;
> > >>>>> }
> > >>>>> return new CharArrayMap<>(map, false);
> > >>>>> }
> > >>>>>
> > >>>>> At least this breaks compiling existing code. Rory, should I open a
> > >>>>> bug
> > >>>> report with an example code?
> > >>>> Hi Uwe,
> > >>>>
> > >>>> Please do log a bug.
> > >>>>
> > >>>> Rgds,Rory
> > >>>>> Uwe
> > >>>>>
> > >>>>> -----
> > >>>>> Uwe Schindler
> > >>>>> H.-H.-Meier-Allee 63, D-28213 Bremen http://www.thetaphi.de
> > >>>>> eMail: [email protected]
> > >>>>>
> > >>>>>
> > >>>>>> -----Original Message-----
> > >>>>>> From: Policeman Jenkins Server [mailto:[email protected]]
> > >>>>>> Sent: Thursday, March 19, 2015 1:15 PM
> > >>>>>> To: [email protected]
> > >>>>>> Subject: [JENKINS] Lucene-Solr-5.x-Linux (32bit/jdk1.9.0-ea-b54) -
> > >>>>>> Build #
> > >>>>>> 11848 - Failure!
> > >>>>>>
> > >>>>>> Build: http://jenkins.thetaphi.de/job/Lucene-Solr-5.x-
> Linux/11848/
> > >>>>>> Java: 32bit/jdk1.9.0-ea-b54 -server -XX:+UseConcMarkSweepGC
> > >>>>>>
> > >>>>>> All tests passed
> > >>>>>>
> > >>>>>> Build Log:
> > >>>>>> [...truncated 1899 lines...]
> > >>>>>> [javac] Compiling 461 source files to
> > >>>>>> /home/jenkins/workspace/Lucene- Solr-5.x-
> > >>>> Linux/lucene/build/analysis/common/classes/java
> > >>>>>> [javac] /home/jenkins/workspace/Lucene-Solr-5.x-
> > >>>>>>
> > >>
> Linux/lucene/analysis/common/src/java/org/apache/lucene/analysis/util
> > >>>>>> /Ch
> > >>>>>> arArrayMap.java:568: error: incompatible types:
> > >> CharArrayMap<CAP#1>
> > >>>>>> cannot be converted to CharArrayMap<V>
> > >>>>>> [javac] return new CharArrayMap<>(map, false);
> > >>>>>> [javac] ^
> > >>>>>> [javac] where V is a type-variable:
> > >>>>>> [javac] V extends Object declared in method
> > <V>copy(Map<?,?
> > >>>> extends
> > >>>>>> V>)
> > >>>>>> [javac] where CAP#1 is a fresh type-variable:
> > >>>>>> [javac] CAP#1 extends V from capture of ? extends V
> > >>>>>> [javac] /home/jenkins/workspace/Lucene-Solr-5.x-
> > >>>>>>
> > >>
> > Linux/lucene/analysis/common/src/java/org/apache/lucene/analysis/huns
> > >>>>>> p
> > >>>>>> ell/Stemmer.java:270: warning: [rawtypes] found raw type: Arc
> > >>>>>> [javac] final FST.Arc<IntsRef> prefixArcs[] = new
> > >>>>>> FST.Arc[3];
> > >>>>>> [javac] ^
> > >>>>>> [javac] missing type arguments for generic class Arc<T>
> > >>>>>> [javac] where T is a type-variable:
> > >>>>>> [javac] T extends Object declared in class Arc
> > >>>>>> [javac] /home/jenkins/workspace/Lucene-Solr-5.x-
> > >>>>>>
> > >>
> > Linux/lucene/analysis/common/src/java/org/apache/lucene/analysis/huns
> > >>>>>> p
> > >>>>>> ell/Stemmer.java:274: warning: [rawtypes] found raw type: Arc
> > >>>>>> [javac] final FST.Arc<IntsRef> suffixArcs[] = new
> > >>>>>> FST.Arc[3];
> > >>>>>> [javac] ^
> > >>>>>> [javac] missing type arguments for generic class Arc<T>
> > >>>>>> [javac] where T is a type-variable:
> > >>>>>> [javac] T extends Object declared in class Arc
> > >>>>>> [javac] /home/jenkins/workspace/Lucene-Solr-5.x-
> > >>>>>>
> > >>
> >
> Linux/lucene/analysis/common/src/java/org/tartarus/snowball/Among.java:
> > >>>>>> 46: warning: [rawtypes] found raw type: Class
> > >>>>>> [javac] private static final Class<?>[] EMPTY_PARAMS = new
> > >> Class[0];
> > >>>>>> [javac] ^
> > >>>>>> [javac] missing type arguments for generic class Class<T>
> > >>>>>> [javac] where T is a type-variable:
> > >>>>>> [javac] T extends Object declared in class Class
> > >>>>>> [javac] Note: Some input files use or override a deprecated
> API.
> > >>>>>> [javac] Note: Recompile with -Xlint:deprecation for details.
> > >>>>>> [javac] 1 error
> > >>>>>>
> > >>>>>> [...truncated 1 lines...]
> > >>>>>> BUILD FAILED
> > >>>>>> /home/jenkins/workspace/Lucene-Solr-5.x-Linux/build.xml:529:
> The
> > >>>>>> following error occurred while executing this line:
> > >>>>>> /home/jenkins/workspace/Lucene-Solr-5.x-Linux/build.xml:477:
> The
> > >>>>>> following error occurred while executing this line:
> > >>>>>> /home/jenkins/workspace/Lucene-Solr-5.x-Linux/build.xml:61:
> The
> > >>>>>> following error occurred while executing this line:
> > >>>>>> /home/jenkins/workspace/Lucene-Solr-5.x-Linux/extra-
> > >> targets.xml:39:
> > >>>>>> The following error occurred while executing this line:
> > >>>>>> /home/jenkins/workspace/Lucene-Solr-5.x-
> > >> Linux/lucene/build.xml:456:
> > >>>>>> The following error occurred while executing this line:
> > >>>>>> /home/jenkins/workspace/Lucene-Solr-5.x-
> Linux/lucene/common-
> > >>>>>> build.xml:2166: The following error occurred while executing this
> > line:
> > >>>>>> /home/jenkins/workspace/Lucene-Solr-5.x-
> > >>>>>> Linux/lucene/analysis/build.xml:106: The following error occurred
> > >>>>>> while executing this line:
> > >>>>>> /home/jenkins/workspace/Lucene-Solr-5.x-
> > >>>>>> Linux/lucene/analysis/build.xml:38: The following error occurred
> > >>>>>> while executing this line:
> > >>>>>> /home/jenkins/workspace/Lucene-Solr-5.x-Linux/lucene/module-
> > >>>>>> build.xml:58: The following error occurred while executing this line:
> > >>>>>> /home/jenkins/workspace/Lucene-Solr-5.x-Linux/lucene/module-
> > >>>>>> build.xml:55: The following error occurred while executing this line:
> > >>>>>> /home/jenkins/workspace/Lucene-Solr-5.x-
> Linux/lucene/common-
> > >>>>>> build.xml:520: The following error occurred while executing this
> line:
> > >>>>>> /home/jenkins/workspace/Lucene-Solr-5.x-
> Linux/lucene/common-
> > >>>>>> build.xml:1882: Compile failed; see the compiler error output for
> > >> details.
> > >>>>>> Total time: 15 minutes 25 seconds
> > >>>>>> Build step 'Invoke Ant' marked build as failure [description-setter]
> > >>>>>> Description set: Java: 32bit/jdk1.9.0-ea-b54 -server -
> > >>>>>> XX:+UseConcMarkSweepGC Archiving artifacts Recording test
> > results
> > >>>>>> Email was triggered for: Failure - Any Sending email for trigger:
> > >>>>>> Failure - Any
> > >>>>>>
> > >>>> --
> > >>>> Rgds,Rory O'Donnell
> > >>>> Quality Engineering Manager
> > >>>> Oracle EMEA , Dublin, Ireland
> > >>>>
> > >>>>
> > >>>> ---------------------------------------------------------------------
> > >>>> To unsubscribe, e-mail: [email protected]
> > >>>> For additional commands, e-mail: [email protected]
> > >> --
> > >> Rgds,Rory O'Donnell
> > >> Quality Engineering Manager
> > >> Oracle EMEA , Dublin, Ireland
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
Bug2.java
Description: Binary data
--------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
