# HG changeset patch # User mcimadamore # Date 1361460425 0 # Node ID ca91cf83b25cbc98d662d46a5972b9b611ae55e7 # Parent 7fb570abcb54149195e569c1de51f961f9c3c91a 8008444: Inherited generic functional descriptors are merged incorrectly Summary: Missing call to Types.createMethodWithThrownTypes Reviewed-by: jjg diff -r 7fb570abcb54 -r ca91cf83b25c langtools/src/share/classes/com/sun/tools/javac/code/Types.java --- a/langtools/src/share/classes/com/sun/tools/javac/code/Types.java Thu Feb 21 15:26:46 2013 +0000 +++ b/langtools/src/share/classes/com/sun/tools/javac/code/Types.java Thu Feb 21 15:27:05 2013 +0000 @@ -512,7 +512,7 @@ @Override public Type getType(Type origin) { Type mt = memberType(origin, getSymbol()); - return new MethodType(mt.getParameterTypes(), mt.getReturnType(), thrown1, syms.methodClass); + return createMethodTypeWithThrown(mt, thrown1); } }; } diff -r 7fb570abcb54 -r ca91cf83b25c langtools/test/tools/javac/lambda/LambdaConv25.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/lambda/LambdaConv25.java Thu Feb 21 15:27:05 2013 +0000 @@ -0,0 +1,21 @@ +/* + * @test /nodynamiccopyright/ + * @summary check that merged inherited descriptors preservers type-parameters + * @compile/fail/ref=LambdaConv25.out -XDrawDiagnostics LambdaConv25.java + */ +class LambdaConv25 { + + interface A { + void m(); + } + + interface B { + void m(); + } + + interface C extends A, B { } + + void test() { + C c = ()->{}; //should fail + } +} diff -r 7fb570abcb54 -r ca91cf83b25c langtools/test/tools/javac/lambda/LambdaConv25.out --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/lambda/LambdaConv25.out Thu Feb 21 15:27:05 2013 +0000 @@ -0,0 +1,2 @@ +LambdaConv25.java:19:15: compiler.err.prob.found.req: (compiler.misc.invalid.generic.lambda.target: ()void, kindname.interface, LambdaConv25.C) +1 error