8145987: Assertion failure when compiling stream with type annotation
Reviewed-by: jlahoda
This commit is contained in:
parent
7d17c7744d
commit
78651a213e
@ -1017,7 +1017,7 @@ public class TypeAnnotations {
|
|||||||
case METHOD_INVOCATION: {
|
case METHOD_INVOCATION: {
|
||||||
JCMethodInvocation invocation = (JCMethodInvocation)frame;
|
JCMethodInvocation invocation = (JCMethodInvocation)frame;
|
||||||
if (!invocation.typeargs.contains(tree)) {
|
if (!invocation.typeargs.contains(tree)) {
|
||||||
throw new AssertionError("{" + tree + "} is not an argument in the invocation: " + invocation);
|
return TypeAnnotationPosition.unknown;
|
||||||
}
|
}
|
||||||
MethodSymbol exsym = (MethodSymbol) TreeInfo.symbol(invocation.getMethodSelect());
|
MethodSymbol exsym = (MethodSymbol) TreeInfo.symbol(invocation.getMethodSelect());
|
||||||
final int type_index = invocation.typeargs.indexOf(tree);
|
final int type_index = invocation.typeargs.indexOf(tree);
|
||||||
|
@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
* @test /nodynamiccopyright/
|
||||||
|
* @bug 8145987
|
||||||
|
* @summary Assertion failure when compiling stream with type annotation
|
||||||
|
* @compile/fail/ref=AnnotatedMethodSelectorTest.out -XDrawDiagnostics AnnotatedMethodSelectorTest.java
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
class AnnotatedMethodSelectorTest {
|
||||||
|
@interface A {}
|
||||||
|
static public void main(String... args) {
|
||||||
|
java.util.@A() Arrays.stream(args);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,2 @@
|
|||||||
|
AnnotatedMethodSelectorTest.java:12:19: compiler.err.annotation.type.not.applicable.to.type: AnnotatedMethodSelectorTest.A
|
||||||
|
1 error
|
@ -0,0 +1,16 @@
|
|||||||
|
/*
|
||||||
|
* @test /nodynamiccopyright/
|
||||||
|
* @bug 8145987
|
||||||
|
* @summary Assertion failure when compiling stream with type annotation
|
||||||
|
* @compile/fail/ref=AnnotatedMethodSelectorTest2.out -XDrawDiagnostics AnnotatedMethodSelectorTest2.java
|
||||||
|
*/
|
||||||
|
|
||||||
|
class AnnotatedMethodSelectorTest2<T> {
|
||||||
|
@interface A {}
|
||||||
|
class Inner {}
|
||||||
|
static public void main(String... args) {
|
||||||
|
new AnnotatedMethodSelectorTest2<@A String>() {
|
||||||
|
java.util.@A List l;
|
||||||
|
}.hashCode();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
AnnotatedMethodSelectorTest2.java:12:42: compiler.err.annotation.type.not.applicable.to.type: AnnotatedMethodSelectorTest2.A
|
||||||
|
AnnotatedMethodSelectorTest2.java:13:23: compiler.err.annotation.type.not.applicable.to.type: AnnotatedMethodSelectorTest2.A
|
||||||
|
2 errors
|
@ -0,0 +1,17 @@
|
|||||||
|
/*
|
||||||
|
* @test /nodynamiccopyright/
|
||||||
|
* @bug 8145987
|
||||||
|
* @summary Assertion failure when compiling stream with type annotation
|
||||||
|
* @compile/fail/ref=AnnotatedMethodSelectorTest3.out -XDrawDiagnostics AnnotatedMethodSelectorTest3.java
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
class AnnotatedMethodSelectorTest3 {
|
||||||
|
@interface A {}
|
||||||
|
static <T> AnnotatedMethodSelectorTest3 id() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
static public void main(String... args) {
|
||||||
|
AnnotatedMethodSelectorTest3.<@A String> id().id().id().id().id();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,2 @@
|
|||||||
|
AnnotatedMethodSelectorTest3.java:15:39: compiler.err.annotation.type.not.applicable.to.type: AnnotatedMethodSelectorTest3.A
|
||||||
|
1 error
|
Loading…
Reference in New Issue
Block a user