| // Copyright (c) 2021, 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 com.android.tools.r8.desugar.records; |
| |
| import java.util.Arrays; |
| |
| // This class implements support methods for record desugaring. The RecordRewriter |
| // rewrites relevant calls to one of the following methods. |
| public class RecordMethods { |
| |
| public static String toString( |
| Object[] recordFieldsValues, Class<?> recordClass, String fieldNames) { |
| // Example: "Person[name=Jane Doe, age=42]" |
| String[] fieldNamesSplit = fieldNames.length() == 0 ? new String[0] : fieldNames.split(";"); |
| StringBuilder builder = new StringBuilder(); |
| builder.append(recordClass.getSimpleName()).append("["); |
| for (int i = 0; i < fieldNamesSplit.length; i++) { |
| builder.append(fieldNamesSplit[i]).append("=").append(recordFieldsValues[i]); |
| if (i != fieldNamesSplit.length - 1) { |
| builder.append(", "); |
| } |
| } |
| builder.append("]"); |
| return builder.toString(); |
| } |
| |
| public static int hashCode(Class<?> recordClass, Object[] recordFieldsAsObjects) { |
| return 31 * Arrays.hashCode(recordFieldsAsObjects) + recordClass.hashCode(); |
| } |
| } |