Thu, 12 Feb 2015 10:16:19 +0530
8069545: javac shouldn't check nested stuck lambdas during overload resolution
Summary: Nested lambdas should not be considered while overload resolution is in progress
Reviewed-by: mcimadamore
Contributed-by: vicente.romero@oracle.com, srikanth.adayapalam@oracle.com
vromero@2730 | 1 | /* |
vromero@2730 | 2 | * @test /nodynamiccopyright/ |
vromero@2730 | 3 | * @bug 8071432 |
vromero@2730 | 4 | * @summary structural most specific and stuckness |
vromero@2730 | 5 | * @compile/fail/ref=T8071432.out -XDrawDiagnostics T8071432.java |
vromero@2730 | 6 | */ |
vromero@2730 | 7 | |
vromero@2730 | 8 | import java.util.Arrays; |
vromero@2730 | 9 | import java.util.Collection; |
vromero@2730 | 10 | |
vromero@2730 | 11 | class T8071432 { |
vromero@2730 | 12 | |
vromero@2730 | 13 | static class Point { |
vromero@2730 | 14 | |
vromero@2730 | 15 | private double x, y; |
vromero@2730 | 16 | |
vromero@2730 | 17 | public Point(double x, double y) { |
vromero@2730 | 18 | this.x = x; |
vromero@2730 | 19 | this.y = y; |
vromero@2730 | 20 | } |
vromero@2730 | 21 | |
vromero@2730 | 22 | public double getX() { |
vromero@2730 | 23 | return x; |
vromero@2730 | 24 | } |
vromero@2730 | 25 | |
vromero@2730 | 26 | public double getY() { |
vromero@2730 | 27 | return y; |
vromero@2730 | 28 | } |
vromero@2730 | 29 | |
vromero@2730 | 30 | public double distance(Point p) { |
vromero@2730 | 31 | return Math.sqrt((this.x - p.x) * (this.x - p.x) + |
vromero@2730 | 32 | (this.y - p.y) * (this.y - p.y)); |
vromero@2730 | 33 | } |
vromero@2730 | 34 | |
vromero@2730 | 35 | public double distance() { |
vromero@2730 | 36 | return Math.sqrt(this.x * this.x + this.y * this.y); |
vromero@2730 | 37 | } |
vromero@2730 | 38 | |
vromero@2730 | 39 | public String toString() { |
vromero@2730 | 40 | return "(" + x + ":" + y + ")"; |
vromero@2730 | 41 | } |
vromero@2730 | 42 | } |
vromero@2730 | 43 | |
vromero@2730 | 44 | public static void main(String[] args) { |
vromero@2730 | 45 | Collection<Point> c = Arrays.asList(new Point(1.0, 0.1)); |
vromero@2730 | 46 | System.out.println("------- 1 ---------------"); |
vromero@2730 | 47 | System.out.println(c.stream().reduce(0.0, |
vromero@2730 | 48 | (s, p) -> s += p.distance(), (d1, d2) -> 0)); |
vromero@2730 | 49 | } |
vromero@2730 | 50 | } |