blob: e9d9334e58e7cdca8ef7195c585333908c57a0a1 [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 paramnames;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.lang.reflect.Parameter;
public class ParameterNames {
private static final int MODIFIER_NONE = 0;
private static final int MODIFIER_FINAL = 0X10;
public ParameterNames(int a, final int b) {
}
public static void check(String expected, String checked) {
if (!expected.equals(checked)) {
throw new RuntimeException("Found '" + checked + "' while expecting '" + expected + "'");
}
}
public static void check(int expected, int checked) {
if (expected != checked) {
throw new RuntimeException("Found '" + checked + "' while expecting '" + expected + "'");
}
}
public static void myMethod(int a, final int b) throws NoSuchMethodException {
Class<ParameterNames> clazz = ParameterNames.class;
Method myMethod = clazz.getDeclaredMethod("myMethod", int.class, int.class);
Parameter[] parameters = myMethod.getParameters();
check(2, parameters.length);
check("a", parameters[0].getName());
check("b", parameters[1].getName());
check(MODIFIER_NONE, parameters[0].getModifiers());
check(MODIFIER_FINAL, parameters[1].getModifiers());
}
public static void myConstructor() throws NoSuchMethodException {
Class<ParameterNames> clazz = ParameterNames.class;
Constructor<?> myConstructor = clazz.getDeclaredConstructor(int.class, int.class);
Parameter[] parameters = myConstructor.getParameters();
check(2, parameters.length);
check("a", parameters[0].getName());
check("b", parameters[1].getName());
check(MODIFIER_NONE, parameters[0].getModifiers());
check(MODIFIER_FINAL, parameters[1].getModifiers());
}
public static void main(String[] args) throws NoSuchMethodException {
myMethod(0, 1);
myConstructor();
}
}