Hi Uwe,

I will update the bug with your findings. Thank you for reporting the issue.

Thanks
Balchandra

On 3/24/2015 7:53 PM, Uwe Schindler wrote:
Hi,

I did some investigation: It is the following issue that breaks this:
https://bugs.openjdk.java.net/browse/JDK-8039214 "Inference should not map capture 
variables to their upper bounds"

This is the commit:
http://hg.openjdk.java.net/jdk9/dev/langtools/rev/414b82835861

The comments here actually say that there might be backwards breaks with 
existing code. BUT: The strange thing is that this only affect -source/target 
1.7, not for newer code. So this breaks only Java 7 backwards compilation! This 
looks like a regression in the JDK7 specific backwards compiler which seems to 
handle the types in a wrong way. Maybe some of the changes in this commit have 
to also be applied to the backwards compiler for Java 1.7 code (I have no idea 
if there is a separate instance of the 1.7 compiler in the code base, just a 
guess).

To me it looks really wrong what is happening here for diamonds and such static 
wrapper methods like Collections.unmodifiable*()!

In fact, both bugs are the same, so I think it's safe to append my second test 
case to the already existing issue as well.

Uwe

-----
Uwe Schindler
H.-H.-Meier-Allee 63, D-28213 Bremen
http://www.thetaphi.de
eMail: u...@thetaphi.de


-----Original Message-----
From: Uwe Schindler [mailto:u...@thetaphi.de]
Sent: Tuesday, March 24, 2015 2:39 PM
To: 'dalibor topic'; dev@lucene.apache.org; 'Balchandra Vaidya'; 'Rory
O'Donnell'
Cc: rcm...@gmail.com
Subject: RE: [JENKINS] Lucene-Solr-5.x-Linux (32bit/jdk1.9.0-ea-b54) - Build #
11848 - Failure!

Hi,

I can file another bug, but the behavior and error pattern is exactly the same,
it is just a static method instead of the constructor (which is mostly the same
by the JLS, a constructor is just like a static method returning an instance). 
So
I am almost 100% sure, this is caused by the exact same commit.

I also simplified the code to be as simple as the other one. I found out that
Collections.unmodifiableCollection(...) is affected by this, so simplest
reproduce code is:

import java.util.*;

class Bug2 {
   // this causes the bug -> type is inferred by parameter not left side
assignment
   static <V> void bug(Collection<? extends V> collection) {
     Collection<V> c1 = Collections.unmodifiableCollection(collection);
     // workaround that compiles:
     Collection<V> c2 = Collections.<V>unmodifiableCollection(collection);
   }
}

So it's up to you to decide, if it is really a new bug. Maybe we should leave
the decision to the JDK developer who caused the regression to find out if
it’s a duplicate or not.

Uwe

-----
Uwe Schindler
H.-H.-Meier-Allee 63, D-28213 Bremen
http://www.thetaphi.de
eMail: u...@thetaphi.de


-----Original Message-----
From: dalibor topic [mailto:dalibor.to...@oracle.com]
Sent: Tuesday, March 24, 2015 2:16 PM
To: Uwe Schindler; dev@lucene.apache.org; 'Balchandra Vaidya'; 'Rory
O'Donnell'
Cc: rcm...@gmail.com
Subject: Re: [JENKINS] Lucene-Solr-5.x-Linux (32bit/jdk1.9.0-ea-b54) -
Build #
11848 - Failure!

I think this one should be filed as a separate issue.

On 24.03.2015 14:07, Uwe Schindler wrote:
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/Iterato
rs .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: u...@thetaphi.de


-----Original Message-----
From: Uwe Schindler [mailto:u...@thetaphi.de]
Sent: Tuesday, March 24, 2015 10:05 AM
To: 'Balchandra Vaidya'; 'Rory O'Donnell'; dev@lucene.apache.org
Cc: 'Dalibor Topic'; rcm...@gmail.com
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: u...@thetaphi.de


-----Original Message-----
From: Balchandra Vaidya [mailto:balchandra.vai...@oracle.com]
Sent: Tuesday, March 24, 2015 8:27 AM
To: Uwe Schindler; 'Rory O'Donnell'; dev@lucene.apache.org
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: u...@thetaphi.de


-----Original Message-----
From: Rory O'Donnell [mailto:rory.odonn...@oracle.com]
Sent: Friday, March 20, 2015 10:00 AM
To: Uwe Schindler; dev@lucene.apache.org
Cc: rory.odonn...@oracle.com; '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: u...@thetaphi.de


-----Original Message-----
From: Rory O'Donnell [mailto:rory.odonn...@oracle.com]
Sent: Thursday, March 19, 2015 4:12 PM
To: Uwe Schindler; dev@lucene.apache.org
Cc: rory.odonn...@oracle.com; 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/uti
l
/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: u...@thetaphi.de


-----Original Message-----
From: Policeman Jenkins Server [mailto:jenk...@thetaphi.de]
Sent: Thursday, March 19, 2015 1:15 PM
To: dev@lucene.apache.org
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/hun
s
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/hun
s
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: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org
--
Rgds,Rory O'Donnell
Quality Engineering Manager
Oracle EMEA , Dublin, Ireland

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For
additional commands, e-mail: dev-h...@lucene.apache.org
--
<http://www.oracle.com> Dalibor Topic | Principal Product Manager
Phone: +494089091214 <tel:+494089091214> | Mobile: +491737185961
<tel:+491737185961>

ORACLE Deutschland B.V. & Co. KG | Kühnehöfe 5 | 22761 Hamburg

ORACLE Deutschland B.V. & Co. KG
Hauptverwaltung: Riesstr. 25, D-80992 München
Registergericht: Amtsgericht München, HRA 95603
Geschäftsführer: Jürgen Kunz

Komplementärin: ORACLE Deutschland Verwaltung B.V.
Hertogswetering 163/167, 3543 AS Utrecht, Niederlande Handelsregister
der
Handelskammer Midden-Niederlande, Nr. 30143697
Geschäftsführer: Alexander van der Ven, Astrid Kepper, Val Maher

<http://www.oracle.com/commitment> Oracle is committed to developing
practices and products that help protect the environment


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to