| // 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(); | |
| } | |
| } |