Move ScopeReference to the top-level.
Change-Id: I9ee22774131a4a5271fbd3ed8fe12a04510b96f2
diff --git a/src/main/java/com/android/tools/r8/naming/ClassNameMapper.java b/src/main/java/com/android/tools/r8/naming/ClassNameMapper.java
index 70ca4dd..0583a2f 100644
--- a/src/main/java/com/android/tools/r8/naming/ClassNameMapper.java
+++ b/src/main/java/com/android/tools/r8/naming/ClassNameMapper.java
@@ -16,7 +16,7 @@
import com.android.tools.r8.naming.MemberNaming.MethodSignature;
import com.android.tools.r8.naming.MemberNaming.Signature;
import com.android.tools.r8.naming.mappinginformation.MappingInformation;
-import com.android.tools.r8.naming.mappinginformation.ScopedMappingInformation.ScopeReference;
+import com.android.tools.r8.naming.mappinginformation.ScopeReference;
import com.android.tools.r8.position.Position;
import com.android.tools.r8.references.Reference;
import com.android.tools.r8.utils.BiMapContainer;
diff --git a/src/main/java/com/android/tools/r8/naming/ProguardMap.java b/src/main/java/com/android/tools/r8/naming/ProguardMap.java
index ee8303f..94615a0 100644
--- a/src/main/java/com/android/tools/r8/naming/ProguardMap.java
+++ b/src/main/java/com/android/tools/r8/naming/ProguardMap.java
@@ -5,7 +5,7 @@
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.naming.mappinginformation.MappingInformation;
-import com.android.tools.r8.naming.mappinginformation.ScopedMappingInformation.ScopeReference;
+import com.android.tools.r8.naming.mappinginformation.ScopeReference;
import com.android.tools.r8.position.Position;
import java.util.function.Consumer;
diff --git a/src/main/java/com/android/tools/r8/naming/ProguardMapReader.java b/src/main/java/com/android/tools/r8/naming/ProguardMapReader.java
index d5a5e01..0efcb53 100644
--- a/src/main/java/com/android/tools/r8/naming/ProguardMapReader.java
+++ b/src/main/java/com/android/tools/r8/naming/ProguardMapReader.java
@@ -11,8 +11,8 @@
import com.android.tools.r8.naming.mappinginformation.MappingInformation;
import com.android.tools.r8.naming.mappinginformation.MappingInformationDiagnostics;
import com.android.tools.r8.naming.mappinginformation.MetaInfMappingInformation;
-import com.android.tools.r8.naming.mappinginformation.ScopedMappingInformation.ClassScopeReference;
-import com.android.tools.r8.naming.mappinginformation.ScopedMappingInformation.ScopeReference;
+import com.android.tools.r8.naming.mappinginformation.ScopeReference;
+import com.android.tools.r8.naming.mappinginformation.ScopeReference.ClassScopeReference;
import com.android.tools.r8.position.TextPosition;
import com.android.tools.r8.references.Reference;
import com.android.tools.r8.utils.IdentifierUtils;
diff --git a/src/main/java/com/android/tools/r8/naming/SeedMapper.java b/src/main/java/com/android/tools/r8/naming/SeedMapper.java
index 863a2b1..e595d42 100644
--- a/src/main/java/com/android/tools/r8/naming/SeedMapper.java
+++ b/src/main/java/com/android/tools/r8/naming/SeedMapper.java
@@ -10,7 +10,7 @@
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.naming.MemberNaming.Signature;
import com.android.tools.r8.naming.mappinginformation.MappingInformation;
-import com.android.tools.r8.naming.mappinginformation.ScopedMappingInformation.ScopeReference;
+import com.android.tools.r8.naming.mappinginformation.ScopeReference;
import com.android.tools.r8.position.Position;
import com.android.tools.r8.utils.Reporter;
import com.google.common.collect.ImmutableMap;
diff --git a/src/main/java/com/android/tools/r8/naming/mappinginformation/CompilerSynthesizedMappingInformation.java b/src/main/java/com/android/tools/r8/naming/mappinginformation/CompilerSynthesizedMappingInformation.java
index be80029..eb675c3 100644
--- a/src/main/java/com/android/tools/r8/naming/mappinginformation/CompilerSynthesizedMappingInformation.java
+++ b/src/main/java/com/android/tools/r8/naming/mappinginformation/CompilerSynthesizedMappingInformation.java
@@ -6,7 +6,6 @@
import com.android.tools.r8.DiagnosticsHandler;
import com.android.tools.r8.naming.MapVersion;
-import com.android.tools.r8.naming.mappinginformation.ScopedMappingInformation.ScopeReference;
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
import java.util.function.BiConsumer;
diff --git a/src/main/java/com/android/tools/r8/naming/mappinginformation/FileNameInformation.java b/src/main/java/com/android/tools/r8/naming/mappinginformation/FileNameInformation.java
index 1133160..a9c7811 100644
--- a/src/main/java/com/android/tools/r8/naming/mappinginformation/FileNameInformation.java
+++ b/src/main/java/com/android/tools/r8/naming/mappinginformation/FileNameInformation.java
@@ -6,8 +6,7 @@
import com.android.tools.r8.DiagnosticsHandler;
import com.android.tools.r8.naming.MapVersion;
-import com.android.tools.r8.naming.mappinginformation.ScopedMappingInformation.ClassScopeReference;
-import com.android.tools.r8.naming.mappinginformation.ScopedMappingInformation.ScopeReference;
+import com.android.tools.r8.naming.mappinginformation.ScopeReference.ClassScopeReference;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
diff --git a/src/main/java/com/android/tools/r8/naming/mappinginformation/MappingInformation.java b/src/main/java/com/android/tools/r8/naming/mappinginformation/MappingInformation.java
index 0495ad2..034b537 100644
--- a/src/main/java/com/android/tools/r8/naming/mappinginformation/MappingInformation.java
+++ b/src/main/java/com/android/tools/r8/naming/mappinginformation/MappingInformation.java
@@ -6,7 +6,6 @@
import com.android.tools.r8.DiagnosticsHandler;
import com.android.tools.r8.naming.MapVersion;
-import com.android.tools.r8.naming.mappinginformation.ScopedMappingInformation.ScopeReference;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import java.util.function.BiConsumer;
diff --git a/src/main/java/com/android/tools/r8/naming/mappinginformation/MappingInformationDiagnostics.java b/src/main/java/com/android/tools/r8/naming/mappinginformation/MappingInformationDiagnostics.java
index 42cb7ba..261a544 100644
--- a/src/main/java/com/android/tools/r8/naming/mappinginformation/MappingInformationDiagnostics.java
+++ b/src/main/java/com/android/tools/r8/naming/mappinginformation/MappingInformationDiagnostics.java
@@ -6,7 +6,6 @@
import com.android.tools.r8.Diagnostic;
import com.android.tools.r8.Keep;
-import com.android.tools.r8.naming.mappinginformation.ScopedMappingInformation.ScopeReference;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
import com.android.tools.r8.position.TextPosition;
diff --git a/src/main/java/com/android/tools/r8/naming/mappinginformation/MetaInfMappingInformation.java b/src/main/java/com/android/tools/r8/naming/mappinginformation/MetaInfMappingInformation.java
index 75a4753..f3becb8 100644
--- a/src/main/java/com/android/tools/r8/naming/mappinginformation/MetaInfMappingInformation.java
+++ b/src/main/java/com/android/tools/r8/naming/mappinginformation/MetaInfMappingInformation.java
@@ -8,7 +8,6 @@
import com.android.tools.r8.DiagnosticsHandler;
import com.android.tools.r8.naming.MapVersion;
-import com.android.tools.r8.naming.mappinginformation.ScopedMappingInformation.ScopeReference;
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
import java.util.function.BiConsumer;
diff --git a/src/main/java/com/android/tools/r8/naming/mappinginformation/ScopeReference.java b/src/main/java/com/android/tools/r8/naming/mappinginformation/ScopeReference.java
new file mode 100644
index 0000000..1ce5efa
--- /dev/null
+++ b/src/main/java/com/android/tools/r8/naming/mappinginformation/ScopeReference.java
@@ -0,0 +1,108 @@
+// 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.naming.mappinginformation;
+
+import com.android.tools.r8.errors.Unimplemented;
+import com.android.tools.r8.errors.Unreachable;
+import com.android.tools.r8.references.ClassReference;
+import com.android.tools.r8.references.Reference;
+import com.android.tools.r8.utils.DescriptorUtils;
+
+/** Abstraction for the items referenced in a scope. */
+public abstract class ScopeReference {
+
+ public static ScopeReference globalScope() {
+ return GlobalScopeReference.INSTANCE;
+ }
+
+ public static ScopeReference fromClassReference(ClassReference reference) {
+ return new ClassScopeReference(reference);
+ }
+
+ // Method for reading in the serialized reference format.
+ public static ScopeReference fromReferenceString(String referenceString) {
+ if (DescriptorUtils.isClassDescriptor(referenceString)) {
+ return fromClassReference(Reference.classFromDescriptor(referenceString));
+ }
+ throw new Unimplemented("No support for reference: " + referenceString);
+ }
+
+ public boolean isGlobalScope() {
+ return equals(ScopeReference.globalScope());
+ }
+
+ public abstract String toReferenceString();
+
+ public abstract ClassReference getHolderReference();
+
+ @Override
+ public abstract boolean equals(Object other);
+
+ @Override
+ public abstract int hashCode();
+
+ @Override
+ public String toString() {
+ return toReferenceString();
+ }
+
+ public static class GlobalScopeReference extends ScopeReference {
+ private static final GlobalScopeReference INSTANCE = new GlobalScopeReference();
+
+ @Override
+ public String toReferenceString() {
+ throw new Unreachable();
+ }
+
+ @Override
+ public String toString() {
+ return "<global-scope>";
+ }
+
+ @Override
+ public ClassReference getHolderReference() {
+ throw new Unreachable();
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ return this == other;
+ }
+
+ @Override
+ public int hashCode() {
+ return System.identityHashCode(this);
+ }
+ }
+
+ public static class ClassScopeReference extends ScopeReference {
+ private final ClassReference reference;
+
+ public ClassScopeReference(ClassReference reference) {
+ assert reference != null;
+ this.reference = reference;
+ }
+
+ @Override
+ public String toReferenceString() {
+ return reference.getDescriptor();
+ }
+
+ @Override
+ public ClassReference getHolderReference() {
+ return reference;
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ return other instanceof ClassScopeReference
+ && reference.equals(((ClassScopeReference) other).reference);
+ }
+
+ @Override
+ public int hashCode() {
+ return reference.hashCode();
+ }
+ }
+}
diff --git a/src/main/java/com/android/tools/r8/naming/mappinginformation/ScopedMappingInformation.java b/src/main/java/com/android/tools/r8/naming/mappinginformation/ScopedMappingInformation.java
index d6eff65..4a5b3d3 100644
--- a/src/main/java/com/android/tools/r8/naming/mappinginformation/ScopedMappingInformation.java
+++ b/src/main/java/com/android/tools/r8/naming/mappinginformation/ScopedMappingInformation.java
@@ -4,12 +4,7 @@
package com.android.tools.r8.naming.mappinginformation;
import com.android.tools.r8.DiagnosticsHandler;
-import com.android.tools.r8.errors.Unimplemented;
-import com.android.tools.r8.errors.Unreachable;
import com.android.tools.r8.naming.MapVersion;
-import com.android.tools.r8.references.ClassReference;
-import com.android.tools.r8.references.Reference;
-import com.android.tools.r8.utils.DescriptorUtils;
import com.google.common.collect.ImmutableList;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
@@ -19,107 +14,6 @@
public abstract class ScopedMappingInformation {
- // Abstraction for the items referenced in a scope.
- // We should consider passing in a scope reference factory.
- // For reading we likely want to map directly to DexItem, whereas for writing we likely want
- // to map to java.lang.String with the post-minification names.
- public abstract static class ScopeReference {
-
- public static ScopeReference globalScope() {
- return GlobalScopeReference.INSTANCE;
- }
-
- public static ScopeReference fromClassReference(ClassReference reference) {
- return new ClassScopeReference(reference);
- }
-
- // Method for reading in the serialized reference format.
- public static ScopeReference fromReferenceString(String referenceString) {
- if (DescriptorUtils.isClassDescriptor(referenceString)) {
- return fromClassReference(Reference.classFromDescriptor(referenceString));
- }
- throw new Unimplemented("No support for reference: " + referenceString);
- }
-
- public boolean isGlobalScope() {
- return equals(ScopeReference.globalScope());
- }
-
- public abstract String toReferenceString();
-
- public abstract ClassReference getHolderReference();
-
- @Override
- public abstract boolean equals(Object other);
-
- @Override
- public abstract int hashCode();
-
- @Override
- public String toString() {
- return toReferenceString();
- }
- }
-
- public static class GlobalScopeReference extends ScopeReference {
- private static final GlobalScopeReference INSTANCE = new GlobalScopeReference();
-
- @Override
- public String toReferenceString() {
- throw new Unreachable();
- }
-
- @Override
- public String toString() {
- return "<global-scope>";
- }
-
- @Override
- public ClassReference getHolderReference() {
- throw new Unreachable();
- }
-
- @Override
- public boolean equals(Object other) {
- return this == other;
- }
-
- @Override
- public int hashCode() {
- return System.identityHashCode(this);
- }
- }
-
- public static class ClassScopeReference extends ScopeReference {
- private final ClassReference reference;
-
- public ClassScopeReference(ClassReference reference) {
- assert reference != null;
- this.reference = reference;
- }
-
- @Override
- public String toReferenceString() {
- return reference.getDescriptor();
- }
-
- @Override
- public ClassReference getHolderReference() {
- return reference;
- }
-
- @Override
- public boolean equals(Object other) {
- return other instanceof ClassScopeReference
- && reference.equals(((ClassScopeReference) other).reference);
- }
-
- @Override
- public int hashCode() {
- return reference.hashCode();
- }
- }
-
private static final MapVersion SCOPE_SUPPORTED = MapVersion.MapVersionExperimental;
public static final String SCOPE_KEY = "scope";
diff --git a/src/main/java/com/android/tools/r8/retrace/internal/RetraceClassResultImpl.java b/src/main/java/com/android/tools/r8/retrace/internal/RetraceClassResultImpl.java
index 1bd8c4c..613e869 100644
--- a/src/main/java/com/android/tools/r8/retrace/internal/RetraceClassResultImpl.java
+++ b/src/main/java/com/android/tools/r8/retrace/internal/RetraceClassResultImpl.java
@@ -11,7 +11,7 @@
import com.android.tools.r8.naming.ClassNamingForNameMapper.MappedRangesOfName;
import com.android.tools.r8.naming.MemberNaming;
import com.android.tools.r8.naming.mappinginformation.MappingInformation;
-import com.android.tools.r8.naming.mappinginformation.ScopedMappingInformation.ScopeReference;
+import com.android.tools.r8.naming.mappinginformation.ScopeReference;
import com.android.tools.r8.references.ClassReference;
import com.android.tools.r8.references.Reference;
import com.android.tools.r8.references.TypeReference;
diff --git a/src/main/java/com/android/tools/r8/retrace/internal/RetracerImpl.java b/src/main/java/com/android/tools/r8/retrace/internal/RetracerImpl.java
index 4c76e3a..d14df13 100644
--- a/src/main/java/com/android/tools/r8/retrace/internal/RetracerImpl.java
+++ b/src/main/java/com/android/tools/r8/retrace/internal/RetracerImpl.java
@@ -7,7 +7,7 @@
import com.android.tools.r8.DiagnosticsHandler;
import com.android.tools.r8.naming.ClassNameMapper;
import com.android.tools.r8.naming.mappinginformation.MappingInformation;
-import com.android.tools.r8.naming.mappinginformation.ScopedMappingInformation.ScopeReference;
+import com.android.tools.r8.naming.mappinginformation.ScopeReference;
import com.android.tools.r8.references.ClassReference;
import com.android.tools.r8.references.FieldReference;
import com.android.tools.r8.references.MethodReference;
diff --git a/src/main/java/com/android/tools/r8/utils/LineNumberOptimizer.java b/src/main/java/com/android/tools/r8/utils/LineNumberOptimizer.java
index 43fdc86..050519f 100644
--- a/src/main/java/com/android/tools/r8/utils/LineNumberOptimizer.java
+++ b/src/main/java/com/android/tools/r8/utils/LineNumberOptimizer.java
@@ -50,7 +50,7 @@
import com.android.tools.r8.naming.Range;
import com.android.tools.r8.naming.mappinginformation.CompilerSynthesizedMappingInformation;
import com.android.tools.r8.naming.mappinginformation.FileNameInformation;
-import com.android.tools.r8.naming.mappinginformation.ScopedMappingInformation.ScopeReference;
+import com.android.tools.r8.naming.mappinginformation.ScopeReference;
import com.android.tools.r8.references.Reference;
import com.android.tools.r8.retrace.internal.RetraceUtils;
import com.android.tools.r8.shaking.KeepInfoCollection;
diff --git a/src/test/java/com/android/tools/r8/naming/MapReaderVersionTest.java b/src/test/java/com/android/tools/r8/naming/MapReaderVersionTest.java
index c2d5e34..1412ed0 100644
--- a/src/test/java/com/android/tools/r8/naming/MapReaderVersionTest.java
+++ b/src/test/java/com/android/tools/r8/naming/MapReaderVersionTest.java
@@ -10,7 +10,7 @@
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.TestParametersCollection;
import com.android.tools.r8.naming.mappinginformation.MappingInformation;
-import com.android.tools.r8.naming.mappinginformation.ScopedMappingInformation.ScopeReference;
+import com.android.tools.r8.naming.mappinginformation.ScopeReference;
import com.android.tools.r8.references.Reference;
import com.android.tools.r8.utils.StringUtils;
import java.io.IOException;
diff --git a/src/test/java/com/android/tools/r8/utils/codeinspector/CodeInspector.java b/src/test/java/com/android/tools/r8/utils/codeinspector/CodeInspector.java
index caea2a4..8c8ba0f 100644
--- a/src/test/java/com/android/tools/r8/utils/codeinspector/CodeInspector.java
+++ b/src/test/java/com/android/tools/r8/utils/codeinspector/CodeInspector.java
@@ -29,7 +29,7 @@
import com.android.tools.r8.naming.ClassNamingForNameMapper;
import com.android.tools.r8.naming.MemberNaming.MethodSignature;
import com.android.tools.r8.naming.mappinginformation.MappingInformation;
-import com.android.tools.r8.naming.mappinginformation.ScopedMappingInformation.ScopeReference;
+import com.android.tools.r8.naming.mappinginformation.ScopeReference;
import com.android.tools.r8.naming.signature.GenericSignatureAction;
import com.android.tools.r8.naming.signature.GenericSignatureParser;
import com.android.tools.r8.origin.Origin;