aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/com/android
diff options
context:
space:
mode:
authorIan Zerny <zerny@google.com>2017-10-26 13:36:14 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2017-10-26 13:36:14 +0000
commitbc8be4d8a8438ebd0be73fe655e160e22da3be9d (patch)
treebf673bdf67ec542a3a59977056ae396b172e7443 /src/test/java/com/android
parent4d22d2d18bab390754a423972ffc2a7b47fbde79 (diff)
parentf76614b69a9a5cdf865087797546add35401ab07 (diff)
downloadr8-bc8be4d8a8438ebd0be73fe655e160e22da3be9d.tar.gz
Merge "Define distinct access-flag types for classes, methods and fields."
Diffstat (limited to 'src/test/java/com/android')
-rw-r--r--src/test/java/com/android/tools/r8/dex/JumboStringProcessing.java5
-rw-r--r--src/test/java/com/android/tools/r8/dex/SharedClassWritingTest.java18
-rw-r--r--src/test/java/com/android/tools/r8/maindexlist/MainDexListTests.java8
-rw-r--r--src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java48
-rw-r--r--src/test/java/com/android/tools/r8/shaking/TreeShakingTest.java13
-rw-r--r--src/test/java/com/android/tools/r8/utils/DexInspector.java45
6 files changed, 50 insertions, 87 deletions
diff --git a/src/test/java/com/android/tools/r8/dex/JumboStringProcessing.java b/src/test/java/com/android/tools/r8/dex/JumboStringProcessing.java
index 98f107102..e3e9ea0e3 100644
--- a/src/test/java/com/android/tools/r8/dex/JumboStringProcessing.java
+++ b/src/test/java/com/android/tools/r8/dex/JumboStringProcessing.java
@@ -12,12 +12,12 @@ import com.android.tools.r8.code.IfNe;
import com.android.tools.r8.code.IfNez;
import com.android.tools.r8.code.Instruction;
import com.android.tools.r8.code.ReturnVoid;
-import com.android.tools.r8.graph.DexAccessFlags;
import com.android.tools.r8.graph.DexCode;
import com.android.tools.r8.graph.DexCode.Try;
import com.android.tools.r8.graph.DexEncodedMethod;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.graph.DexString;
+import com.android.tools.r8.graph.MethodAccessFlags;
import com.android.tools.r8.naming.NamingLens;
import java.util.ArrayList;
import java.util.List;
@@ -99,8 +99,7 @@ public class JumboStringProcessing {
null,
null,
null);
- DexAccessFlags flags = new DexAccessFlags(0);
- flags.setPublic();
+ MethodAccessFlags flags = MethodAccessFlags.fromSharedAccessFlags(Constants.ACC_PUBLIC, false);
DexEncodedMethod method = new DexEncodedMethod(null, flags, null, null, code);
new JumboStringRewriter(method, string, factory).rewrite();
return method.getCode().asDexCode();
diff --git a/src/test/java/com/android/tools/r8/dex/SharedClassWritingTest.java b/src/test/java/com/android/tools/r8/dex/SharedClassWritingTest.java
index add8637e1..e0d97b189 100644
--- a/src/test/java/com/android/tools/r8/dex/SharedClassWritingTest.java
+++ b/src/test/java/com/android/tools/r8/dex/SharedClassWritingTest.java
@@ -8,7 +8,7 @@ import com.android.tools.r8.code.Instruction;
import com.android.tools.r8.code.ReturnVoid;
import com.android.tools.r8.errors.DexOverflowException;
import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.DexAccessFlags;
+import com.android.tools.r8.graph.ClassAccessFlags;
import com.android.tools.r8.graph.DexAnnotationSet;
import com.android.tools.r8.graph.DexAnnotationSetRefList;
import com.android.tools.r8.graph.DexApplication;
@@ -23,6 +23,7 @@ import com.android.tools.r8.graph.DexString;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.graph.DexTypeList;
import com.android.tools.r8.graph.DirectMappedDexApplication;
+import com.android.tools.r8.graph.MethodAccessFlags;
import com.android.tools.r8.naming.NamingLens;
import com.android.tools.r8.utils.DescriptorUtils;
import com.android.tools.r8.utils.IgnoreContentsOutputSink;
@@ -72,10 +73,13 @@ public class SharedClassWritingTest {
instructions[stringCount] = new ReturnVoid();
DexCode code = new DexCode(1, 0, 0, instructions, new Try[0], new TryHandler[0], null,
strings[startOffset + stringCount - 1]);
- return new DexEncodedMethod(dexItemFactory
- .createMethod(holder, dexItemFactory.createProto(dexItemFactory.voidType), "theMethod"),
- new DexAccessFlags(Constants.ACC_PUBLIC), DexAnnotationSet.empty(),
- DexAnnotationSetRefList.empty(), code);
+ return new DexEncodedMethod(
+ dexItemFactory.createMethod(
+ holder, dexItemFactory.createProto(dexItemFactory.voidType), "theMethod"),
+ MethodAccessFlags.fromSharedAccessFlags(Constants.ACC_PUBLIC, false),
+ DexAnnotationSet.empty(),
+ DexAnnotationSetRefList.empty(),
+ code);
}
private DexProgramClass makeClass(String name, int stringCount, int startOffset,
@@ -86,7 +90,7 @@ public class SharedClassWritingTest {
type,
null,
null,
- new DexAccessFlags(Constants.ACC_PUBLIC),
+ ClassAccessFlags.fromSharedAccessFlags(Constants.ACC_PUBLIC),
dexItemFactory.objectType,
DexTypeList.empty(),
null,
@@ -94,7 +98,7 @@ public class SharedClassWritingTest {
DexEncodedField.EMPTY_ARRAY,
DexEncodedField.EMPTY_ARRAY,
DexEncodedMethod.EMPTY_ARRAY,
- new DexEncodedMethod[]{makeMethod(type, stringCount, startOffset)},
+ new DexEncodedMethod[] {makeMethod(type, stringCount, startOffset)},
synthesizedFrom);
}
diff --git a/src/test/java/com/android/tools/r8/maindexlist/MainDexListTests.java b/src/test/java/com/android/tools/r8/maindexlist/MainDexListTests.java
index a358e26fc..29299960d 100644
--- a/src/test/java/com/android/tools/r8/maindexlist/MainDexListTests.java
+++ b/src/test/java/com/android/tools/r8/maindexlist/MainDexListTests.java
@@ -21,10 +21,9 @@ import com.android.tools.r8.dex.Constants;
import com.android.tools.r8.errors.CompilationError;
import com.android.tools.r8.errors.DexOverflowException;
import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.ClassAccessFlags;
import com.android.tools.r8.graph.Code;
import com.android.tools.r8.graph.DebugLocalInfo;
-import com.android.tools.r8.graph.DexAccessFlags;
import com.android.tools.r8.graph.DexAnnotationSet;
import com.android.tools.r8.graph.DexAnnotationSetRefList;
import com.android.tools.r8.graph.DexApplication;
@@ -36,6 +35,7 @@ import com.android.tools.r8.graph.DexString;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.graph.DexTypeList;
import com.android.tools.r8.graph.DirectMappedDexApplication;
+import com.android.tools.r8.graph.MethodAccessFlags;
import com.android.tools.r8.ir.code.CatchHandlers;
import com.android.tools.r8.ir.code.IRCode;
import com.android.tools.r8.ir.code.Position;
@@ -577,7 +577,7 @@ public class MainDexListTests extends TestBase {
DexType type = factory.createType(desc);
DexEncodedMethod[] directMethods = new DexEncodedMethod[methodCount];
for (int i = 0; i < methodCount; i++) {
- DexAccessFlags access = new DexAccessFlags();
+ MethodAccessFlags access = MethodAccessFlags.fromSharedAccessFlags(0, false);
access.setPublic();
access.setStatic();
Code code = new SynthesizedCode(new ReturnVoidCode());
@@ -602,7 +602,7 @@ public class MainDexListTests extends TestBase {
type,
null,
null,
- new DexAccessFlags(),
+ ClassAccessFlags.fromSharedAccessFlags(0),
factory.objectType,
DexTypeList.empty(),
null,
diff --git a/src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java b/src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java
index 6dc19aa5a..d119423d8 100644
--- a/src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java
@@ -14,8 +14,10 @@ import static org.junit.Assert.fail;
import com.android.tools.r8.DiagnosticsHandler;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.ToolHelper;
-import com.android.tools.r8.graph.DexAccessFlags;
+import com.android.tools.r8.graph.ClassAccessFlags;
import com.android.tools.r8.graph.DexItemFactory;
+import com.android.tools.r8.graph.FieldAccessFlags;
+import com.android.tools.r8.graph.MethodAccessFlags;
import com.android.tools.r8.utils.DefaultDiagnosticsHandler;
import com.android.tools.r8.utils.FileUtils;
import com.android.tools.r8.utils.InternalOptions.PackageObfuscationMode;
@@ -224,33 +226,39 @@ public class ProguardConfigurationParserTest extends TestBase {
List<ProguardConfigurationRule> rules = parser.getConfig().getRules();
assertEquals(1, rules.size());
ProguardConfigurationRule rule = rules.get(0);
- DexAccessFlags publicAndFinalFlags = new DexAccessFlags(0);
+ ClassAccessFlags publicAndFinalFlags = ClassAccessFlags.fromSharedAccessFlags(0);
publicAndFinalFlags.setPublic();
publicAndFinalFlags.setFinal();
- assertTrue(rule.getClassAccessFlags().containsNoneOf(publicAndFinalFlags));
- assertTrue(rule.getNegatedClassAccessFlags().containsAllOf(publicAndFinalFlags));
- DexAccessFlags abstractFlags = new DexAccessFlags(0);
+ assertTrue(rule.getClassAccessFlags().containsNone(publicAndFinalFlags));
+ assertTrue(rule.getNegatedClassAccessFlags().containsAll(publicAndFinalFlags));
+ ClassAccessFlags abstractFlags = ClassAccessFlags.fromSharedAccessFlags(0);
abstractFlags.setAbstract();
- assertTrue(rule.getClassAccessFlags().containsAllOf(abstractFlags));
- assertTrue(rule.getNegatedClassAccessFlags().containsNoneOf(abstractFlags));
+ assertTrue(rule.getClassAccessFlags().containsAll(abstractFlags));
+ assertTrue(rule.getNegatedClassAccessFlags().containsNone(abstractFlags));
for (ProguardMemberRule member : rule.getMemberRules()) {
if (member.getRuleType() == ProguardMemberType.ALL_FIELDS) {
- DexAccessFlags publicFlags = new DexAccessFlags(0);
- publicAndFinalFlags.setPublic();
- assertTrue(member.getAccessFlags().containsAllOf(publicFlags));
- assertTrue(member.getNegatedAccessFlags().containsNoneOf(publicFlags));
- DexAccessFlags staticFlags = new DexAccessFlags(0);
+ FieldAccessFlags publicFlags = FieldAccessFlags.fromSharedAccessFlags(0);
+ publicFlags.setPublic();
+ assertTrue(member.getAccessFlags().containsAll(publicFlags));
+ assertTrue(member.getNegatedAccessFlags().containsNone(publicFlags));
+ FieldAccessFlags staticFlags = FieldAccessFlags.fromSharedAccessFlags(0);
staticFlags.setStatic();
- assertTrue(member.getAccessFlags().containsNoneOf(staticFlags));
- assertTrue(member.getNegatedAccessFlags().containsAllOf(staticFlags));
+ assertTrue(member.getAccessFlags().containsNone(staticFlags));
+ assertTrue(member.getNegatedAccessFlags().containsAll(staticFlags));
} else {
assertTrue(member.getRuleType() == ProguardMemberType.ALL_METHODS);
- DexAccessFlags publicProtectedVolatileFlags = new DexAccessFlags(0);
- publicProtectedVolatileFlags.setPublic();
- publicProtectedVolatileFlags.setProtected();
- publicProtectedVolatileFlags.setVolatile();
- assertTrue(member.getAccessFlags().containsNoneOf(publicProtectedVolatileFlags));
- assertTrue(member.getNegatedAccessFlags().containsAllOf(publicProtectedVolatileFlags));
+
+ MethodAccessFlags publicNativeFlags = MethodAccessFlags.fromSharedAccessFlags(0, false);
+ publicNativeFlags.setPublic();
+ publicNativeFlags.setNative();
+ assertTrue(member.getAccessFlags().containsAll(publicNativeFlags));
+ assertFalse(member.getNegatedAccessFlags().containsNone(publicNativeFlags));
+
+ MethodAccessFlags protectedNativeFlags = MethodAccessFlags.fromSharedAccessFlags(0, false);
+ protectedNativeFlags.setProtected();
+ protectedNativeFlags.setNative();
+ assertTrue(member.getAccessFlags().containsAll(protectedNativeFlags));
+ assertFalse(member.getNegatedAccessFlags().containsNone(protectedNativeFlags));
}
}
}
diff --git a/src/test/java/com/android/tools/r8/shaking/TreeShakingTest.java b/src/test/java/com/android/tools/r8/shaking/TreeShakingTest.java
index b285ac060..32cfb1493 100644
--- a/src/test/java/com/android/tools/r8/shaking/TreeShakingTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/TreeShakingTest.java
@@ -9,8 +9,6 @@ import com.android.tools.r8.CompilationException;
import com.android.tools.r8.R8Command;
import com.android.tools.r8.ToolHelper;
import com.android.tools.r8.ToolHelper.ArtCommandBuilder;
-import com.android.tools.r8.dex.Constants;
-import com.android.tools.r8.graph.DexAccessFlags;
import com.android.tools.r8.naming.MemberNaming.FieldSignature;
import com.android.tools.r8.naming.MemberNaming.MethodSignature;
import com.android.tools.r8.utils.AndroidApp;
@@ -196,14 +194,13 @@ public class TreeShakingTest {
private static void hasNoPrivateMethods(DexInspector inspector) {
inspector.forAllClasses(clazz -> clazz.forAllMethods(
- method -> Assert.assertTrue(method.hasNone(new DexAccessFlags(Constants.ACC_PRIVATE)))
- ));
+ method -> Assert.assertTrue(!method.getMethod().accessFlags.isPrivate())));
}
private static void hasNoPublicMethodsButPrivate(DexInspector inspector) {
inspector.forAllClasses(clazz -> clazz.forAllMethods(method -> {
if (!method.isStatic() && !method.isFinal()) {
- Assert.assertTrue(method.hasNone(new DexAccessFlags(Constants.ACC_PUBLIC)));
+ Assert.assertTrue(!method.getMethod().accessFlags.isPublic());
}
}));
Assert.assertTrue(inspector.clazz("shaking6.Superclass")
@@ -255,7 +252,7 @@ public class TreeShakingTest {
private static void shaking7HasOnlyPublicFields(DexInspector inspector) {
inspector.forAllClasses(clazz -> {
clazz.forAllFields(field -> {
- Assert.assertTrue(field.hasAll(new DexAccessFlags(Constants.ACC_PUBLIC)));
+ Assert.assertTrue(field.getField().accessFlags.isPublic());
});
});
ClassSubject subclass = inspector.clazz("shaking7.Subclass");
@@ -283,7 +280,7 @@ public class TreeShakingTest {
private static void shaking7HasOnlyPublicFieldsNamedTheDoubleField(DexInspector inspector) {
inspector.forAllClasses(clazz -> {
clazz.forAllFields(field -> {
- Assert.assertTrue(field.hasAll(new DexAccessFlags(Constants.ACC_PUBLIC)));
+ Assert.assertTrue(field.getField().accessFlags.isPublic());
});
});
ClassSubject subclass = inspector.clazz("shaking7.Subclass");
@@ -297,7 +294,7 @@ public class TreeShakingTest {
private static void shaking7HasOnlyPublicFieldsNamedTheIntField(DexInspector inspector) {
inspector.forAllClasses(clazz -> {
clazz.forAllFields(field -> {
- Assert.assertTrue(field.hasAll(new DexAccessFlags(Constants.ACC_PUBLIC)));
+ Assert.assertTrue(field.getField().accessFlags.isPublic());
});
});
ClassSubject subclass = inspector.clazz("shaking7.Subclass");
diff --git a/src/test/java/com/android/tools/r8/utils/DexInspector.java b/src/test/java/com/android/tools/r8/utils/DexInspector.java
index 612043efe..e70f6f7f6 100644
--- a/src/test/java/com/android/tools/r8/utils/DexInspector.java
+++ b/src/test/java/com/android/tools/r8/utils/DexInspector.java
@@ -43,7 +43,6 @@ import com.android.tools.r8.code.SputObject;
import com.android.tools.r8.code.SputShort;
import com.android.tools.r8.code.SputWide;
import com.android.tools.r8.dex.ApplicationReader;
-import com.android.tools.r8.graph.DexAccessFlags;
import com.android.tools.r8.graph.DexAnnotation;
import com.android.tools.r8.graph.DexApplication;
import com.android.tools.r8.graph.DexClass;
@@ -503,10 +502,6 @@ public class DexInspector {
public abstract class MemberSubject extends Subject {
- public abstract boolean hasAll(DexAccessFlags flags);
-
- public abstract boolean hasNone(DexAccessFlags flags);
-
public abstract boolean isStatic();
public abstract boolean isFinal();
@@ -551,16 +546,6 @@ public class DexInspector {
}
@Override
- public boolean hasAll(DexAccessFlags flags) {
- return false;
- }
-
- @Override
- public boolean hasNone(DexAccessFlags flags) {
- return true;
- }
-
- @Override
public boolean isStatic() {
return false;
}
@@ -622,16 +607,6 @@ public class DexInspector {
}
@Override
- public boolean hasAll(DexAccessFlags flags) {
- return dexMethod.accessFlags.containsAllOf(flags);
- }
-
- @Override
- public boolean hasNone(DexAccessFlags flags) {
- return dexMethod.accessFlags.containsNoneOf(flags);
- }
-
- @Override
public boolean isStatic() {
return dexMethod.accessFlags.isStatic();
}
@@ -704,16 +679,6 @@ public class DexInspector {
public class AbsentFieldSubject extends FieldSubject {
@Override
- public boolean hasAll(DexAccessFlags flags) {
- return false;
- }
-
- @Override
- public boolean hasNone(DexAccessFlags flags) {
- return true;
- }
-
- @Override
public boolean isStatic() {
return false;
}
@@ -770,16 +735,6 @@ public class DexInspector {
}
@Override
- public boolean hasAll(DexAccessFlags flags) {
- return dexField.accessFlags.containsAllOf(flags);
- }
-
- @Override
- public boolean hasNone(DexAccessFlags flags) {
- return dexField.accessFlags.containsNoneOf(flags);
- }
-
- @Override
public boolean isStatic() {
return dexField.accessFlags.isStatic();
}