blob: 0efc7a66c3cd76d4157f60df006525373c3e677e [file] [log] [blame]
// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
package regress_62300145;
import static java.lang.annotation.RetentionPolicy.CLASS;
import java.lang.annotation.Annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.reflect.Constructor;
public class Regress {
@Retention(RetentionPolicy.RUNTIME)
public @interface A {
}
@Retention(CLASS)
@Target({ElementType.PARAMETER})
public @interface B {
}
public class InnerClass {
public InnerClass(@A @B String p1, @A String p2, @B String p3) { }
}
public static void main(String[] args) throws NoSuchMethodException {
Constructor<InnerClass> constructor = InnerClass.class.getDeclaredConstructor(
Regress.class, String.class, String.class, String.class);
Annotation[][] annotations = constructor.getParameterAnnotations();
int index = 0;
for (int i = 0; i < annotations.length; i++) {
// TODO(b/67936230): Java 8 and Java 9 runtime does not have the same behavior regarding
// implicit parameter such as 'outer this' for instance. Disable this test on Java 9 runtime
// due to this divergence.
if (System.getProperty("java.specification.version").equals("9") && i == 0) {
continue;
}
System.out.print(index++ + ": ");
for (Annotation annotation : annotations[i]) {
System.out.println(annotation);
}
}
}
}