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