| Summary: | [1.7][compiler] Bounds check failure during method inference | ||||||
|---|---|---|---|---|---|---|---|
| Product: | [Eclipse Project] JDT | Reporter: | Srikanth Sankaran <srikanth_sankaran> | ||||
| Component: | Core | Assignee: | Srikanth Sankaran <srikanth_sankaran> | ||||
| Status: | VERIFIED FIXED | QA Contact: | |||||
| Severity: | normal | ||||||
| Priority: | P3 | CC: | Olivier_Thomann, satyam.kandula | ||||
| Version: | 3.7 | ||||||
| Target Milestone: | 3.7.1 | ||||||
| Hardware: | PC | ||||||
| OS: | Windows XP | ||||||
| Whiteboard: | |||||||
| Attachments: |
|
||||||
Created attachment 196968 [details]
Proposed patch & test
Under test
Released in BETA_JAVA7 branch only, Olivier, please review, TIA. Please ignore this code review request, This fix is being subsumed by the better fix being tested for bug 347600 for which I will raise a separate code review request. Verified using Eclipse Java 7 Support(Beta) feature patch v20110623-0900. |
The following code use to compile with BETA_JAVA7 (and does compile with HEAD), but not anymore. // ------------------- 8< ----------------------- public class X { class A<T extends B<?>> {} class B<T extends A<?>> extends D {} class C<T extends D> {} class D {} class E<T extends C<? extends B<?>>> {} <U extends C<V>, V extends B<W>, W extends A<V>> W foo(E<U> e) { return goo(e); } <P extends C<Q>, Q extends B<R>, R extends A<Q>> R goo(E<P> e) { return null; } } // ------------------- 8< ----------------------- The fix for bug 347145 should have also propagated the altered intersection types back into the inference context, but fails to do so. I have a fix that is under test.