Revert "Introduce new retrace api for general consumption"
This reverts commit c8ff745a5cfaea9f0b7394778b286d8686d65b32.
Reason for revert: Does not compile on the bot.
Change-Id: I6f572800271dbb5da7fda15211fc7d3bc5820f7d
diff --git a/src/main/java/com/android/tools/r8/naming/ClassNamingForNameMapper.java b/src/main/java/com/android/tools/r8/naming/ClassNamingForNameMapper.java
index 1a1d4ef..226a5f9 100644
--- a/src/main/java/com/android/tools/r8/naming/ClassNamingForNameMapper.java
+++ b/src/main/java/com/android/tools/r8/naming/ClassNamingForNameMapper.java
@@ -88,7 +88,7 @@
public static class MappedRangesOfName {
private final List<MappedRange> mappedRanges;
- public MappedRangesOfName(List<MappedRange> mappedRanges) {
+ MappedRangesOfName(List<MappedRange> mappedRanges) {
this.mappedRanges = mappedRanges;
}
diff --git a/src/main/java/com/android/tools/r8/naming/MemberNaming.java b/src/main/java/com/android/tools/r8/naming/MemberNaming.java
index 95fbcc8..054917e 100644
--- a/src/main/java/com/android/tools/r8/naming/MemberNaming.java
+++ b/src/main/java/com/android/tools/r8/naming/MemberNaming.java
@@ -124,22 +124,6 @@
return name.indexOf(JAVA_PACKAGE_SEPARATOR) != -1;
}
- public boolean isMethodSignature() {
- return false;
- }
-
- public boolean isFieldSignature() {
- return false;
- }
-
- public MethodSignature asMethodSignature() {
- return null;
- }
-
- public FieldSignature asFieldSignature() {
- return null;
- }
-
@Override
public String toString() {
try {
@@ -222,16 +206,6 @@
writer.append(' ');
writer.append(name);
}
-
- @Override
- public boolean isFieldSignature() {
- return true;
- }
-
- @Override
- public FieldSignature asFieldSignature() {
- return this;
- }
}
public static class MethodSignature extends Signature {
@@ -291,7 +265,7 @@
return name.substring(name.lastIndexOf(JAVA_PACKAGE_SEPARATOR) + 1);
}
- public String toHolderFromQualified() {
+ public String toUnqualifiedHolder() {
assert isQualified();
return name.substring(0, name.lastIndexOf(JAVA_PACKAGE_SEPARATOR));
}
@@ -374,15 +348,5 @@
sb.append(javaTypeToDescriptor(type));
return sb.toString();
}
-
- @Override
- public boolean isMethodSignature() {
- return true;
- }
-
- @Override
- public MethodSignature asMethodSignature() {
- return this;
- }
}
}
diff --git a/src/main/java/com/android/tools/r8/references/FieldReference.java b/src/main/java/com/android/tools/r8/references/FieldReference.java
index 6f27753..d4d74fd 100644
--- a/src/main/java/com/android/tools/r8/references/FieldReference.java
+++ b/src/main/java/com/android/tools/r8/references/FieldReference.java
@@ -13,19 +13,15 @@
* type of the field.
*/
@Keep
-public class FieldReference {
+public final class FieldReference {
private final ClassReference holderClass;
private final String fieldName;
private final TypeReference fieldType;
- boolean isUnknown() {
- return false;
- }
-
FieldReference(ClassReference holderClass, String fieldName, TypeReference fieldType) {
assert holderClass != null;
assert fieldName != null;
- assert fieldType != null || isUnknown();
+ assert fieldType != null;
this.holderClass = holderClass;
this.fieldName = fieldName;
this.fieldType = fieldType;
@@ -69,29 +65,4 @@
public String toString() {
return getHolderClass().toString() + getFieldName() + ":" + getFieldType().getDescriptor();
}
-
- public static final class UnknownFieldReference extends FieldReference {
-
- private final ClassReference holderClass;
- private final String fieldName;
-
- public UnknownFieldReference(ClassReference holderClass, String fieldName) {
- super(holderClass, fieldName, null);
- this.holderClass = holderClass;
- this.fieldName = fieldName;
- }
-
- public ClassReference getHolderClass() {
- return holderClass;
- }
-
- public String getFieldName() {
- return fieldName;
- }
-
- @Override
- boolean isUnknown() {
- return true;
- }
- }
}
diff --git a/src/main/java/com/android/tools/r8/references/MethodReference.java b/src/main/java/com/android/tools/r8/references/MethodReference.java
index b4a8116..0a89715 100644
--- a/src/main/java/com/android/tools/r8/references/MethodReference.java
+++ b/src/main/java/com/android/tools/r8/references/MethodReference.java
@@ -17,7 +17,7 @@
* full list of formal parameters.
*/
@Keep
-public class MethodReference {
+public final class MethodReference {
private final ClassReference holderClass;
private final String methodName;
private final List<TypeReference> formalTypes;
@@ -30,17 +30,13 @@
TypeReference returnType) {
assert holderClass != null;
assert methodName != null;
- assert formalTypes != null || isUnknown();
+ assert formalTypes != null;
this.holderClass = holderClass;
this.methodName = methodName;
this.formalTypes = formalTypes;
this.returnType = returnType;
}
- public boolean isUnknown() {
- return false;
- }
-
public ClassReference getHolderClass() {
return holderClass;
}
@@ -90,29 +86,4 @@
public String toString() {
return getHolderClass().toString() + getMethodName() + getMethodDescriptor();
}
-
- public static final class UnknownMethodReference extends MethodReference {
-
- private final ClassReference holderClass;
- private final String methodName;
-
- @Override
- public boolean isUnknown() {
- return true;
- }
-
- public UnknownMethodReference(ClassReference holderClass, String methodName) {
- super(holderClass, methodName, null, null);
- this.holderClass = holderClass;
- this.methodName = methodName;
- }
-
- public ClassReference getHolderClass() {
- return holderClass;
- }
-
- public String getMethodName() {
- return methodName;
- }
- }
}
diff --git a/src/main/java/com/android/tools/r8/references/Reference.java b/src/main/java/com/android/tools/r8/references/Reference.java
index dcf8c68..94d4ea0 100644
--- a/src/main/java/com/android/tools/r8/references/Reference.java
+++ b/src/main/java/com/android/tools/r8/references/Reference.java
@@ -65,10 +65,6 @@
return instance;
}
- public static TypeReference returnTypeFromDescriptor(String descriptor) {
- return descriptor.equals("V") ? null : typeFromDescriptor(descriptor);
- }
-
public static TypeReference typeFromDescriptor(String descriptor) {
switch (descriptor.charAt(0)) {
case 'L':
@@ -80,10 +76,6 @@
}
}
- public static TypeReference typeFromTypeName(String typeName) {
- return typeFromDescriptor(DescriptorUtils.javaTypeToDescriptor(typeName));
- }
-
// Internal helper to convert Class<?> for primitive/array types too.
private static TypeReference typeFromClass(Class<?> clazz) {
return typeFromDescriptor(DescriptorUtils.javaTypeToDescriptor(clazz.getTypeName()));
diff --git a/src/main/java/com/android/tools/r8/retrace/Result.java b/src/main/java/com/android/tools/r8/retrace/Result.java
deleted file mode 100644
index a8e3903..0000000
--- a/src/main/java/com/android/tools/r8/retrace/Result.java
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2019, 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.retrace;
-
-import com.android.tools.r8.Keep;
-import java.util.function.Consumer;
-
-@Keep
-public abstract class Result<R, RR extends Result<R, RR>> {
-
- public abstract RR apply(Consumer<R> resultConsumer);
-}
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceBase.java b/src/main/java/com/android/tools/r8/retrace/RetraceBase.java
deleted file mode 100644
index c5284ea..0000000
--- a/src/main/java/com/android/tools/r8/retrace/RetraceBase.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2019, 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.retrace;
-
-import com.android.tools.r8.references.ClassReference;
-import com.android.tools.r8.references.FieldReference;
-import com.android.tools.r8.references.MethodReference;
-
-public interface RetraceBase {
-
- RetraceMethodResult retrace(MethodReference methodReference);
-
- RetraceFieldResult retrace(FieldReference fieldReference);
-
- RetraceClassResult retrace(ClassReference classReference);
-
- String retraceSourceFile(ClassReference classReference, String sourceFile);
-
- String retraceSourceFile(
- ClassReference classReference,
- String sourceFile,
- ClassReference retracedClassReference,
- boolean hasRetraceResult);
-}
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceBaseImpl.java b/src/main/java/com/android/tools/r8/retrace/RetraceBaseImpl.java
deleted file mode 100644
index 19bc557..0000000
--- a/src/main/java/com/android/tools/r8/retrace/RetraceBaseImpl.java
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright (c) 2019, 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.retrace;
-
-import com.android.tools.r8.naming.ClassNameMapper;
-import com.android.tools.r8.references.ClassReference;
-import com.android.tools.r8.references.FieldReference;
-import com.android.tools.r8.references.MethodReference;
-import com.android.tools.r8.utils.Box;
-import com.google.common.collect.Sets;
-import com.google.common.io.Files;
-import java.util.Set;
-
-public class RetraceBaseImpl implements RetraceBase {
-
- private static final Set<String> UNKNOWN_SOURCEFILE_NAMES =
- Sets.newHashSet("", "SourceFile", "Unknown", "Unknown Source");
-
- private final ClassNameMapper classNameMapper;
-
- RetraceBaseImpl(ClassNameMapper classNameMapper) {
- this.classNameMapper = classNameMapper;
- }
-
- @Override
- public RetraceMethodResult retrace(MethodReference methodReference) {
- return retrace(methodReference.getHolderClass()).lookupMethod(methodReference.getMethodName());
- }
-
- @Override
- public RetraceFieldResult retrace(FieldReference fieldReference) {
- return retrace(fieldReference.getHolderClass()).lookupField(fieldReference.getFieldName());
- }
-
- @Override
- public RetraceClassResult retrace(ClassReference classReference) {
- return RetraceClassResult.create(
- classReference, classNameMapper.getClassNaming(classReference.getTypeName()));
- }
-
- @Override
- public String retraceSourceFile(ClassReference classReference, String sourceFile) {
- Box<String> retracedSourceFile = new Box<>();
- retrace(classReference)
- .apply(element -> retracedSourceFile.set(element.retraceSourceFile(sourceFile, this)));
- return retracedSourceFile.get();
- }
-
- @Override
- public String retraceSourceFile(
- ClassReference obfuscatedClass,
- String sourceFile,
- ClassReference retracedClassReference,
- boolean hasRetraceResult) {
- boolean fileNameProbablyChanged =
- hasRetraceResult
- && !retracedClassReference.getTypeName().startsWith(obfuscatedClass.getTypeName());
- if (!UNKNOWN_SOURCEFILE_NAMES.contains(sourceFile) && !fileNameProbablyChanged) {
- // We have no new information, only rewrite filename if it is unknown.
- // PG-retrace will always rewrite the filename, but that seems a bit to harsh to do.
- return sourceFile;
- }
- if (!hasRetraceResult) {
- // We have no mapping but but the file name is unknown, so the best we can do is take the
- // name of the obfuscated clazz.
- assert obfuscatedClass.getTypeName().equals(retracedClassReference.getTypeName());
- return getClassSimpleName(obfuscatedClass.getTypeName()) + ".java";
- }
- String newFileName = getClassSimpleName(retracedClassReference.getTypeName());
- String extension = Files.getFileExtension(sourceFile);
- if (extension.isEmpty()) {
- extension = "java";
- }
- return newFileName + "." + extension;
- }
-
- private static String getClassSimpleName(String clazz) {
- int lastIndexOfPeriod = clazz.lastIndexOf('.');
- // Check if we can find a subclass separator.
- int endIndex = clazz.lastIndexOf('$');
- if (lastIndexOfPeriod > endIndex || endIndex < 0) {
- endIndex = clazz.length();
- }
- return clazz.substring(lastIndexOfPeriod + 1, endIndex);
- }
-}
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceClassResult.java b/src/main/java/com/android/tools/r8/retrace/RetraceClassResult.java
deleted file mode 100644
index a0d5076..0000000
--- a/src/main/java/com/android/tools/r8/retrace/RetraceClassResult.java
+++ /dev/null
@@ -1,124 +0,0 @@
-// Copyright (c) 2019, 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.retrace;
-
-import com.android.tools.r8.Keep;
-import com.android.tools.r8.naming.ClassNamingForNameMapper;
-import com.android.tools.r8.naming.ClassNamingForNameMapper.MappedRangesOfName;
-import com.android.tools.r8.naming.MemberNaming;
-import com.android.tools.r8.references.ClassReference;
-import com.android.tools.r8.references.Reference;
-import com.android.tools.r8.retrace.RetraceClassResult.Element;
-import com.android.tools.r8.utils.Box;
-import java.util.List;
-import java.util.function.BiFunction;
-import java.util.function.Consumer;
-
-@Keep
-public class RetraceClassResult extends Result<Element, RetraceClassResult> {
-
- private final ClassReference obfuscatedReference;
- private final ClassNamingForNameMapper mapper;
-
- private RetraceClassResult(ClassReference obfuscatedReference, ClassNamingForNameMapper mapper) {
- this.obfuscatedReference = obfuscatedReference;
- this.mapper = mapper;
- }
-
- static RetraceClassResult create(
- ClassReference obfuscatedReference, ClassNamingForNameMapper mapper) {
- return new RetraceClassResult(obfuscatedReference, mapper);
- }
-
- public RetraceFieldResult lookupField(String fieldName) {
- return lookup(
- fieldName,
- (mapper, name) -> {
- List<MemberNaming> memberNamings = mapper.mappedNamingsByName.get(name);
- if (memberNamings == null || memberNamings.isEmpty()) {
- return null;
- }
- return memberNamings;
- },
- RetraceFieldResult::new);
- }
-
- public RetraceMethodResult lookupMethod(String methodName) {
- return lookup(
- methodName,
- (mapper, name) -> {
- MappedRangesOfName mappedRanges = mapper.mappedRangesByRenamedName.get(name);
- if (mappedRanges == null || mappedRanges.getMappedRanges().isEmpty()) {
- return null;
- }
- return mappedRanges;
- },
- RetraceMethodResult::new);
- }
-
- private <T, R> R lookup(
- String name,
- BiFunction<ClassNamingForNameMapper, String, T> lookupFunction,
- ResultConstructor<T, R> constructor) {
- Box<R> elementBox = new Box<>();
- apply(
- element -> {
- assert !elementBox.isSet();
- T mappedRangesForT = null;
- if (element.mapper != null) {
- mappedRangesForT = lookupFunction.apply(element.mapper, name);
- }
- elementBox.set(constructor.create(element, mappedRangesForT, name));
- });
- return elementBox.get();
- }
-
- private boolean hasRetraceResult() {
- return mapper != null;
- }
-
- @Override
- public RetraceClassResult apply(Consumer<Element> resultConsumer) {
- resultConsumer.accept(
- new Element(
- this,
- mapper == null ? obfuscatedReference : Reference.classFromTypeName(mapper.originalName),
- mapper));
- return this;
- }
-
- private interface ResultConstructor<T, R> {
- R create(Element element, T mappings, String obfuscatedName);
- }
-
- public static class Element {
-
- private final RetraceClassResult classResult;
- private final ClassReference classReference;
- private final ClassNamingForNameMapper mapper;
-
- public Element(
- RetraceClassResult classResult,
- ClassReference classReference,
- ClassNamingForNameMapper mapper) {
- this.classResult = classResult;
- this.classReference = classReference;
- this.mapper = mapper;
- }
-
- public ClassReference getClassReference() {
- return classReference;
- }
-
- public RetraceClassResult getRetraceClassResult() {
- return classResult;
- }
-
- public String retraceSourceFile(String fileName, RetraceBase retraceBase) {
- return retraceBase.retraceSourceFile(
- classResult.obfuscatedReference, fileName, classReference, mapper != null);
- }
- }
-}
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceCore.java b/src/main/java/com/android/tools/r8/retrace/RetraceCore.java
index d895d8d..8db2ace 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceCore.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceCore.java
@@ -386,7 +386,7 @@
String mappedClazz = retraceClazz;
String mappedMethod = mappedRange.signature.name;
if (mappedRange.signature.isQualified()) {
- mappedClazz = mappedRange.signature.toHolderFromQualified();
+ mappedClazz = mappedRange.signature.toUnqualifiedHolder();
mappedMethod = mappedRange.signature.toUnqualifiedName();
}
int retracedLinePosition = linePosition;
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceFieldResult.java b/src/main/java/com/android/tools/r8/retrace/RetraceFieldResult.java
deleted file mode 100644
index 6e0d232..0000000
--- a/src/main/java/com/android/tools/r8/retrace/RetraceFieldResult.java
+++ /dev/null
@@ -1,101 +0,0 @@
-// Copyright (c) 2019, 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.retrace;
-
-import com.android.tools.r8.Keep;
-import com.android.tools.r8.naming.MemberNaming;
-import com.android.tools.r8.naming.MemberNaming.FieldSignature;
-import com.android.tools.r8.references.FieldReference;
-import com.android.tools.r8.references.FieldReference.UnknownFieldReference;
-import com.android.tools.r8.references.Reference;
-import java.util.List;
-import java.util.Objects;
-import java.util.function.Consumer;
-
-@Keep
-public class RetraceFieldResult extends Result<RetraceFieldResult.Element, RetraceFieldResult> {
-
- private final RetraceClassResult.Element classElement;
- private final List<MemberNaming> memberNamings;
- private final String obfuscatedName;
-
- RetraceFieldResult(
- RetraceClassResult.Element classElement,
- List<MemberNaming> memberNamings,
- String obfuscatedName) {
- this.classElement = classElement;
- this.memberNamings = memberNamings;
- this.obfuscatedName = obfuscatedName;
- assert classElement != null;
- assert memberNamings == null
- || (!memberNamings.isEmpty() && memberNamings.stream().allMatch(Objects::nonNull));
- }
-
- private boolean hasRetraceResult() {
- return memberNamings != null;
- }
-
- private boolean isAmbiguous() {
- if (!hasRetraceResult()) {
- return false;
- }
- assert memberNamings != null;
- return memberNamings.size() > 1;
- }
-
- @Override
- public RetraceFieldResult apply(Consumer<Element> resultConsumer) {
- if (hasRetraceResult()) {
- assert !memberNamings.isEmpty();
- for (MemberNaming memberNaming : memberNamings) {
- assert memberNaming.isFieldNaming();
- FieldSignature fieldSignature = memberNaming.getOriginalSignature().asFieldSignature();
- resultConsumer.accept(
- new Element(
- this,
- classElement,
- Reference.field(
- classElement.getClassReference(),
- fieldSignature.name,
- Reference.typeFromTypeName(fieldSignature.type))));
- }
- } else {
- resultConsumer.accept(
- new Element(
- this,
- classElement,
- new UnknownFieldReference(classElement.getClassReference(), obfuscatedName)));
- }
- return this;
- }
-
- public static class Element {
-
- private final FieldReference fieldReference;
- private final RetraceFieldResult retraceFieldResult;
- private final RetraceClassResult.Element classElement;
-
- private Element(
- RetraceFieldResult retraceFieldResult,
- RetraceClassResult.Element classElement,
- FieldReference fieldReference) {
- this.classElement = classElement;
- this.fieldReference = fieldReference;
- this.retraceFieldResult = retraceFieldResult;
- }
-
- public FieldReference getFieldReference() {
- return fieldReference;
- }
-
- public RetraceFieldResult getRetraceFieldResult() {
- return getRetraceFieldResult();
- }
-
- public RetraceClassResult.Element getClassElement() {
- return classElement;
- }
- }
-}
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceMethodResult.java b/src/main/java/com/android/tools/r8/retrace/RetraceMethodResult.java
deleted file mode 100644
index e727a6a..0000000
--- a/src/main/java/com/android/tools/r8/retrace/RetraceMethodResult.java
+++ /dev/null
@@ -1,159 +0,0 @@
-// Copyright (c) 2019, 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.retrace;
-
-import com.android.tools.r8.Keep;
-import com.android.tools.r8.naming.ClassNamingForNameMapper.MappedRange;
-import com.android.tools.r8.naming.ClassNamingForNameMapper.MappedRangesOfName;
-import com.android.tools.r8.naming.MemberNaming.MethodSignature;
-import com.android.tools.r8.naming.Range;
-import com.android.tools.r8.references.ClassReference;
-import com.android.tools.r8.references.MethodReference;
-import com.android.tools.r8.references.MethodReference.UnknownMethodReference;
-import com.android.tools.r8.references.Reference;
-import com.android.tools.r8.references.TypeReference;
-import com.android.tools.r8.utils.DescriptorUtils;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.function.Consumer;
-
-@Keep
-public class RetraceMethodResult extends Result<RetraceMethodResult.Element, RetraceMethodResult> {
-
- private final String obfuscatedName;
- private final RetraceClassResult.Element classElement;
- private final MappedRangesOfName mappedRanges;
- private Boolean isAmbiguousCached = null;
-
- RetraceMethodResult(
- RetraceClassResult.Element classElement,
- MappedRangesOfName mappedRanges,
- String obfuscatedName) {
- this.classElement = classElement;
- this.mappedRanges = mappedRanges;
- this.obfuscatedName = obfuscatedName;
- assert classElement != null;
- }
-
- private boolean hasRetraceResult() {
- return mappedRanges != null && mappedRanges.getMappedRanges().size() > 0;
- }
-
- public boolean isAmbiguous() {
- if (isAmbiguousCached != null) {
- return isAmbiguousCached;
- }
- if (!hasRetraceResult()) {
- return false;
- }
- assert mappedRanges != null;
- Range minifiedRange = null;
- boolean seenNull = false;
- for (MappedRange mappedRange : mappedRanges.getMappedRanges()) {
- if (minifiedRange != null && !minifiedRange.equals(mappedRange.minifiedRange)) {
- isAmbiguousCached = true;
- return true;
- } else if (minifiedRange == null) {
- if (seenNull) {
- isAmbiguousCached = true;
- return true;
- }
- seenNull = true;
- }
- minifiedRange = mappedRange.minifiedRange;
- }
- isAmbiguousCached = false;
- return false;
- }
-
- public RetraceMethodResult narrowByLine(int linePosition) {
- if (!hasRetraceResult()) {
- return this;
- }
- List<MappedRange> narrowedRanges = this.mappedRanges.allRangesForLine(linePosition, false);
- if (narrowedRanges.isEmpty()) {
- narrowedRanges = new ArrayList<>();
- for (MappedRange mappedRange : this.mappedRanges.getMappedRanges()) {
- if (mappedRange.minifiedRange == null) {
- narrowedRanges.add(mappedRange);
- }
- }
- }
- return new RetraceMethodResult(
- classElement, new MappedRangesOfName(narrowedRanges), obfuscatedName);
- }
-
- @Override
- public RetraceMethodResult apply(Consumer<Element> resultConsumer) {
- if (hasRetraceResult()) {
- for (MappedRange mappedRange : mappedRanges.getMappedRanges()) {
- MethodSignature signature = mappedRange.signature;
- ClassReference holder =
- mappedRange.signature.isQualified()
- ? Reference.classFromDescriptor(
- DescriptorUtils.javaTypeToDescriptor(
- mappedRange.signature.toHolderFromQualified()))
- : classElement.getClassReference();
- List<TypeReference> formalTypes = new ArrayList<>(signature.parameters.length);
- for (String parameter : signature.parameters) {
- formalTypes.add(Reference.typeFromTypeName(parameter));
- }
- TypeReference returnType =
- Reference.returnTypeFromDescriptor(
- DescriptorUtils.javaTypeToDescriptor(signature.type));
- MethodReference retracedMethod =
- Reference.method(
- holder,
- signature.isQualified() ? signature.toUnqualifiedName() : signature.name,
- formalTypes,
- returnType);
- resultConsumer.accept(new Element(this, classElement, retracedMethod, mappedRange));
- }
- } else {
- resultConsumer.accept(
- new Element(
- this,
- classElement,
- new UnknownMethodReference(classElement.getClassReference(), obfuscatedName),
- null));
- }
- return this;
- }
-
- public static class Element {
-
- private final MethodReference methodReference;
- private final RetraceMethodResult retraceMethodResult;
- private final RetraceClassResult.Element classElement;
- private final MappedRange mappedRange;
-
- private Element(
- RetraceMethodResult retraceMethodResult,
- RetraceClassResult.Element classElement,
- MethodReference methodReference,
- MappedRange mappedRange) {
- this.classElement = classElement;
- this.retraceMethodResult = retraceMethodResult;
- this.methodReference = methodReference;
- this.mappedRange = mappedRange;
- }
-
- public MethodReference getMethodReference() {
- return methodReference;
- }
-
- public RetraceMethodResult getRetraceMethodResult() {
- return retraceMethodResult;
- }
-
- public RetraceClassResult.Element getClassElement() {
- return classElement;
- }
-
- public int getOriginalLineNumber(int linePosition) {
- return mappedRange != null ? mappedRange.getOriginalLineNumber(linePosition) : linePosition;
- }
- }
-}