1.1 --- a/test/tools/javac/lambda/MostSpecific05.java Fri Aug 30 17:36:47 2013 -0700 1.2 +++ b/test/tools/javac/lambda/MostSpecific05.java Mon Sep 02 22:38:36 2013 +0100 1.3 @@ -1,5 +1,5 @@ 1.4 /* 1.5 - * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. 1.6 + * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. 1.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 1.8 * 1.9 * This code is free software; you can redistribute it and/or modify it 1.10 @@ -26,17 +26,10 @@ 1.11 * @bug 8003280 1.12 * @summary Add lambda tests 1.13 * Structural most specific doesn't handle cases with wildcards in functional interfaces 1.14 + * @compile/fail/ref=MostSpecific05.out -XDrawDiagnostics MostSpecific05.java 1.15 */ 1.16 public class MostSpecific05 { 1.17 1.18 - static int assertionCount = 0; 1.19 - 1.20 - static void assertTrue(boolean cond) { 1.21 - assertionCount++; 1.22 - if (!cond) 1.23 - throw new AssertionError(); 1.24 - } 1.25 - 1.26 interface ObjectConverter<T extends Object> { 1.27 T map(Object o); 1.28 } 1.29 @@ -46,13 +39,13 @@ 1.30 } 1.31 1.32 static class MyMapper<A extends Object, B extends Number> { 1.33 - void map(ObjectConverter<? extends A> m) { assertTrue(false); } 1.34 - void map(NumberConverter<? extends B> m) { assertTrue(true); } 1.35 + void map(ObjectConverter<? extends A> m) { } 1.36 + void map(NumberConverter<? extends B> m) { } 1.37 } 1.38 1.39 public static void main(String[] args) { 1.40 MyMapper<Number, Double> mm = new MyMapper<Number, Double>(); 1.41 - mm.map(e->1.0); 1.42 - assertTrue(assertionCount == 1); 1.43 + mm.map(e->1.0); //ambiguous - implicit 1.44 + mm.map((Object e)->1.0); //ok 1.45 } 1.46 }