| // Copyright (c) 2020, 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.graph; |
| |
| import com.android.tools.r8.Diagnostic; |
| import com.android.tools.r8.origin.Origin; |
| import com.android.tools.r8.position.Position; |
| import java.lang.reflect.GenericSignatureFormatError; |
| |
| public class GenericSignatureFormatDiagnostic implements Diagnostic { |
| |
| private final Origin origin; |
| private final Position position; |
| private final String message; |
| |
| GenericSignatureFormatDiagnostic(Origin origin, Position position, String message) { |
| this.origin = origin; |
| this.position = position; |
| this.message = message; |
| } |
| |
| @Override |
| public Origin getOrigin() { |
| return origin; |
| } |
| |
| @Override |
| public Position getPosition() { |
| return position; |
| } |
| |
| @Override |
| public String getDiagnosticMessage() { |
| return message; |
| } |
| |
| static GenericSignatureFormatDiagnostic invalidClassSignature( |
| String signature, String name, Origin origin, GenericSignatureFormatError error) { |
| return invalidSignature(signature, "class", name, origin, error); |
| } |
| |
| static GenericSignatureFormatDiagnostic invalidMethodSignature( |
| String signature, String name, Origin origin, GenericSignatureFormatError error) { |
| return invalidSignature(signature, "method", name, origin, error); |
| } |
| |
| static GenericSignatureFormatDiagnostic invalidFieldSignature( |
| String signature, String name, Origin origin, GenericSignatureFormatError error) { |
| return invalidSignature(signature, "field", name, origin, error); |
| } |
| |
| private static GenericSignatureFormatDiagnostic invalidSignature( |
| String signature, |
| String kind, |
| String name, |
| Origin origin, |
| GenericSignatureFormatError error) { |
| String message = |
| "Invalid signature '" |
| + signature |
| + "' for " |
| + kind |
| + " " |
| + name |
| + "." |
| + System.lineSeparator() |
| + "Signature is ignored and will not be present in the output." |
| + System.lineSeparator() |
| + "Parser error: " |
| + error.getMessage(); |
| return new GenericSignatureFormatDiagnostic(origin, Position.UNKNOWN, message); |
| } |
| } |