summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMikael Peltier <mikaelpeltier@google.com>2015-04-28 14:14:38 +0000
committerMikael Peltier <mikaelpeltier@google.com>2015-04-28 14:14:38 +0000
commit16f26e6be0d9ea48d4a3e517ad8f42ee7ee5fefc (patch)
tree62310815cf4f05432e5217af1b6e0e2b042f9fe1
parent88ac57db8ef6442d2a87aacad089104b488052e0 (diff)
downloadtoolchain_jack-16f26e6be0d9ea48d4a3e517ad8f42ee7ee5fefc.tar.gz
toolchain_jack-16f26e6be0d9ea48d4a3e517ad8f42ee7ee5fefc.tar.bz2
toolchain_jack-16f26e6be0d9ea48d4a3e517ad8f42ee7ee5fefc.zip
Revert "During shrinking generate error if they are unknow types"
This reverts commit 88ac57db8ef6442d2a87aacad089104b488052e0. Change-Id: I67a420bcc60bf0ccbea0af30a551e3326d18e420
-rw-r--r--jack-tests/tests/com/android/jack/fileconflict/FileConflictTests.java2
-rw-r--r--jack-tests/tests/com/android/jack/resource/ResourceTests.java4
-rw-r--r--jack-tests/tests/com/android/jack/shrob/ShrinkTests.java124
-rw-r--r--jack-tests/tests/com/android/jack/withphantom/WithPhantomTests.java11
-rw-r--r--jack/src/com/android/jack/shrob/shrink/KeeperBrush.java72
-rw-r--r--jack/src/com/android/jack/shrob/shrink/ShrinkingException.java46
6 files changed, 1 insertions, 258 deletions
diff --git a/jack-tests/tests/com/android/jack/fileconflict/FileConflictTests.java b/jack-tests/tests/com/android/jack/fileconflict/FileConflictTests.java
index a31cc2ca..44128a9d 100644
--- a/jack-tests/tests/com/android/jack/fileconflict/FileConflictTests.java
+++ b/jack-tests/tests/com/android/jack/fileconflict/FileConflictTests.java
@@ -577,8 +577,6 @@ public class FileConflictTests {
toolchain = getToolchain(isApiTest);
toolchain.addProguardFlags(new File(TEST001_DIR, "proguard.flags"));
toolchain.addStaticLibs(jackImport1, jackImport2);
- toolchain.addToClasspath(toolchain.getDefaultBootClasspath());
-
if (collisionPolicy != null) {
toolchain.addProperty(JayceFileImporter.COLLISION_POLICY.getName(), collisionPolicy);
}
diff --git a/jack-tests/tests/com/android/jack/resource/ResourceTests.java b/jack-tests/tests/com/android/jack/resource/ResourceTests.java
index ca8ee9b0..a5d46ff9 100644
--- a/jack-tests/tests/com/android/jack/resource/ResourceTests.java
+++ b/jack-tests/tests/com/android/jack/resource/ResourceTests.java
@@ -143,7 +143,6 @@ public class ResourceTests {
File shrobbedJackAr =
AbstractTestTools.createTempFile("shrobbedJackAr", toolchain.getLibraryExtension());
toolchain.addProguardFlags(new File(FILE, "proguard.flags"));
- toolchain.addToClasspath(toolchain.getDefaultBootClasspath());
toolchain.libToLib(jackAr, shrobbedJackAr, /* zipFiles = */ true);
// check that resources are contained in dex archive
@@ -171,7 +170,6 @@ public class ResourceTests {
File shrobbedJackAr =
AbstractTestTools.createTempFile("shrobbedJackAr", toolchain.getLibraryExtension());
toolchain.addProguardFlags(new File(FILE, "proguard.flags"));
- toolchain.addToClasspath(toolchain.getDefaultBootClasspath());
toolchain.libToLib(jackFolder, shrobbedJackAr, /* zipFiles = */ true);
// check that resources are contained in Jack archive
@@ -191,7 +189,6 @@ public class ResourceTests {
File shrobbedJackDir = AbstractTestTools.createTempDir();
JackBasedToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class);
toolchain.addProguardFlags(new File(FILE, "proguard.flags"));
- toolchain.addToClasspath(toolchain.getDefaultBootClasspath());
toolchain.libToLib(jackAr, shrobbedJackDir, /* zipFiles = */ false);
// check that resources are contained in Jack dir
@@ -218,7 +215,6 @@ public class ResourceTests {
File shrobbedJackDir = AbstractTestTools.createTempDir();
toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class);
toolchain.addProguardFlags(new File(FILE, "proguard.flags"));
- toolchain.addToClasspath(toolchain.getDefaultBootClasspath());
toolchain.libToLib(jackFolder, shrobbedJackDir, /* zipFiles = */ false);
// check that resources are contained in Jack dir
diff --git a/jack-tests/tests/com/android/jack/shrob/ShrinkTests.java b/jack-tests/tests/com/android/jack/shrob/ShrinkTests.java
index 8e03f6ac..6ffa637c 100644
--- a/jack-tests/tests/com/android/jack/shrob/ShrinkTests.java
+++ b/jack-tests/tests/com/android/jack/shrob/ShrinkTests.java
@@ -16,25 +16,18 @@
package com.android.jack.shrob;
-import com.google.common.io.NullOutputStream;
-
-import com.android.jack.JackAbortException;
import com.android.jack.Main;
import com.android.jack.Options;
import com.android.jack.ProguardFlags;
import com.android.jack.shrob.shrink.ShrinkStructurePrinter;
-import com.android.jack.shrob.shrink.ShrinkingException;
import com.android.jack.test.comparator.ComparatorMapping;
import com.android.jack.test.helper.SourceToDexComparisonTestHelper;
import com.android.jack.test.toolchain.AbstractTestTools;
import com.android.jack.test.toolchain.DummyToolchain;
-import com.android.jack.test.toolchain.IToolchain;
import com.android.jack.test.toolchain.JackApiToolchainBase;
import com.android.jack.test.toolchain.JackBasedToolchain;
import com.android.jack.util.TextUtils;
-import junit.framework.Assert;
-
import org.junit.BeforeClass;
import org.junit.Test;
@@ -120,7 +113,6 @@ public class ShrinkTests extends AbstractTest {
toolchain.addProguardFlags(
dontObfuscateFlagFile,
new ProguardFlags(new File(shrobTestsDir, "test020"),"proguard.flags"));
- toolchain.addToClasspath(toolchain.getDefaultBootClasspath());
toolchain.libToLib(
testOut,
shrinkOut,
@@ -170,7 +162,6 @@ public class ShrinkTests extends AbstractTest {
dontObfuscateFlagFile,
new ProguardFlags(new File( shrobTestsDir, "test021"),"proguard.flags001"));
shrinkOut = AbstractTestTools.createTempDir();
- toolchain.addToClasspath(toolchain.getDefaultBootClasspath());
toolchain.libToLib(jackOut, shrinkOut, /* zipFiles = */ false);
new ComparatorMapping(candidateNodeListing,
@@ -178,7 +169,6 @@ public class ShrinkTests extends AbstractTest {
dexOut = AbstractTestTools.createTempDir();
toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
- toolchain.addToClasspath(toolchain.getDefaultBootClasspath());
toolchain.libToExe(shrinkOut, dexOut, /* zipFile = */ false);
} catch (Exception e) {
@@ -238,118 +228,4 @@ public class ShrinkTests extends AbstractTest {
public void test42_003() throws Exception {
runTest("042", "003", "");
}
-
- /**
- * Check that a program importing a library using another library is well shrinked, if the used
- * library is on the classpath. If the used library is not on the classpath, Jack must generate
- * an error otherwise it could shrink class members that are needed.
- */
- @Test
- public void test45_001() throws Exception {
- String testNumber = "045";
- String flagNumber = "001";
-
- File lib2Out = AbstractTestTools.createTempDir();
- JackBasedToolchain toolchainLib2 =
- AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class);
- toolchainLib2.addToClasspath(toolchainLib2.getDefaultBootClasspath()).srcToLib(lib2Out,
- /* zipFiles = */false, new File(shrobTestsDir, "test" + testNumber + "/lib2"));
-
- File lib1Out = AbstractTestTools.createTempDir();
- JackBasedToolchain toolchainLib1 =
- AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class);
- toolchainLib1.addToClasspath(lib2Out);
- toolchainLib1.addToClasspath(toolchainLib1.getDefaultBootClasspath()).srcToLib(lib1Out,
- /* zipFiles = */false, new File(shrobTestsDir, "test" + testNumber + "/lib1"));
-
- JackBasedToolchain toolchain =
- AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class);
-
- File testFolder = new File(shrobTestsDir, "test" + testNumber);
- File refFolder = new File(testFolder, "refsShrinking");
-
- File candidateNodeListing = AbstractTestTools.createTempFile("nodeListing", ".txt");
- toolchain.addProperty(ShrinkStructurePrinter.STRUCTURE_PRINTING.getName(), "true");
- toolchain.addProperty(ShrinkStructurePrinter.STRUCTURE_PRINTING_FILE.getName(),
- candidateNodeListing.getPath());
- toolchain.addProperty(Options.METHOD_FILTER.getName(), "supported-methods");
- toolchain.disableDxOptimizations();
- toolchain.addStaticLibs(lib1Out);
- toolchain.addToClasspath(lib2Out);
-
- File outFolder = AbstractTestTools.createTempDir();
-
- SourceToDexComparisonTestHelper env =
- new SourceToDexComparisonTestHelper(new File(testFolder, "jack"));
-
- env.setWithDebugInfo(true);
- env.setCandidateTestTools(toolchain);
- env.setReferenceTestTools(new DummyToolchain());
- env.setProguardFlags(dontObfuscateFlagFile,
- new ProguardFlags(testFolder, "proguard.flags" + flagNumber));
-
- env.runTest(new ComparatorMapping(new File(refFolder, "expected-" + flagNumber + ".txt"),
- candidateNodeListing));
- }
-
- /**
- * Check that a program importing a library using another library generate an error if the use
- * library is not into the classpath. If the used library is not on the classpath, Jack must
- * generate an error otherwise it could shrink class members that are needed.
- */
- @Test
- public void test45_001_bis() throws Exception {
- String testNumber = "045";
- String flagNumber = "001";
-
- File lib2Out = AbstractTestTools.createTempDir();
- JackApiToolchainBase toolchainLib2 =
- AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
- toolchainLib2.addToClasspath(toolchainLib2.getDefaultBootClasspath()).srcToLib(lib2Out,
- /* zipFiles = */false, new File(shrobTestsDir, "test" + testNumber + "/lib2"));
-
- File lib1Out = AbstractTestTools.createTempDir();
- JackApiToolchainBase toolchainLib1 =
- AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
- toolchainLib1.addToClasspath(lib2Out);
- toolchainLib1.addToClasspath(toolchainLib1.getDefaultBootClasspath()).srcToLib(lib1Out,
- /* zipFiles = */false, new File(shrobTestsDir, "test" + testNumber + "/lib1"));
-
- JackApiToolchainBase toolchain =
- AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
-
- File testFolder = new File(shrobTestsDir, "test" + testNumber);
- File refFolder = new File(testFolder, "refsShrinking");
-
- File candidateNodeListing = AbstractTestTools.createTempFile("nodeListing", ".txt");
- toolchain.addProperty(ShrinkStructurePrinter.STRUCTURE_PRINTING.getName(), "true");
- toolchain.addProperty(ShrinkStructurePrinter.STRUCTURE_PRINTING_FILE.getName(),
- candidateNodeListing.getPath());
- toolchain.addProperty(Options.METHOD_FILTER.getName(), "supported-methods");
- toolchain.disableDxOptimizations();
- toolchain.addStaticLibs(lib1Out);
- toolchain.setErrorStream(new NullOutputStream());
- File outFolder = AbstractTestTools.createTempDir();
-
- SourceToDexComparisonTestHelper env =
- new SourceToDexComparisonTestHelper(new File(testFolder, "jack"));
-
- env.setWithDebugInfo(true);
- env.setCandidateTestTools(toolchain);
- env.setReferenceTestTools(new DummyToolchain());
- env.setProguardFlags(dontObfuscateFlagFile,
- new ProguardFlags(testFolder, "proguard.flags" + flagNumber));
-
- try {
- env.runTest(new ComparatorMapping(new File(refFolder, "expected-" + flagNumber + ".txt"),
- candidateNodeListing));
- } catch (JackAbortException e) {
- Assert.assertTrue(e.getCause() instanceof ShrinkingException);
- Assert
- .assertEquals(
- "Error during the skrinking: Unknown referenced type 'com.android.jack.shrob.test045."
- + "lib2.A'. Add type into your classpath.",
- e.getMessage());
- }
- }
}
diff --git a/jack-tests/tests/com/android/jack/withphantom/WithPhantomTests.java b/jack-tests/tests/com/android/jack/withphantom/WithPhantomTests.java
index e3918efa..8967a4d5 100644
--- a/jack-tests/tests/com/android/jack/withphantom/WithPhantomTests.java
+++ b/jack-tests/tests/com/android/jack/withphantom/WithPhantomTests.java
@@ -77,26 +77,21 @@ public class WithPhantomTests {
File tempOut1 = AbstractTestTools.createTempDir();
toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class, exclude);
toolchain.addProguardFlags(new ProguardFlags(testFolder, "shrink1.flags"))
- .addToClasspath(toolchain.getDefaultBootClasspath())
.libToLib(tempJackFolder, tempOut1, /* zipFiles = */ false);
File tempOut2 = AbstractTestTools.createTempDir();
toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class, exclude);
- toolchain.addToClasspath(toolchain.getDefaultBootClasspath())
- .addProguardFlags(new ProguardFlags(testFolder, "shrink2.flags"))
-
+ toolchain.addProguardFlags(new ProguardFlags(testFolder, "shrink2.flags"))
.libToLib(tempJackFolder, tempOut2, /* zipFiles = */ false);
File tempOut3 = AbstractTestTools.createTempDir();
toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class, exclude);
toolchain.addProguardFlags(new ProguardFlags(testFolder, "obf1.flags"))
- .addToClasspath(toolchain.getDefaultBootClasspath())
.libToLib(tempJackFolder, tempOut3, /* zipFiles = */ false);
File tempOut4 = AbstractTestTools.createTempDir();
toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class, exclude);
toolchain.addProguardFlags(new ProguardFlags(testFolder, "obf2.flags"))
- .addToClasspath(toolchain.getDefaultBootClasspath())
.libToLib(tempJackFolder, tempOut4, /* zipFiles = */ false);
File tempOut5 = AbstractTestTools.createTempDir();
@@ -131,25 +126,21 @@ public class WithPhantomTests {
File tempOut1 = AbstractTestTools.createTempDir();
toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class);
toolchain.addProguardFlags(new ProguardFlags(testFolder, "shrink1.flags"))
- .addToClasspath(toolchain.getDefaultBootClasspath())
.libToLib(tempJackFolder, tempOut1, /* zipFiles = */ false);
File tempOut2 = AbstractTestTools.createTempDir();
toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class);
toolchain.addProguardFlags(new ProguardFlags(testFolder, "shrink2.flags"))
- .addToClasspath(toolchain.getDefaultBootClasspath())
.libToLib(tempJackFolder, tempOut2, /* zipFiles = */ false);
File tempOut3 = AbstractTestTools.createTempDir();
toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class);
toolchain.addProguardFlags(new ProguardFlags(testFolder, "obf1.flags"))
- .addToClasspath(toolchain.getDefaultBootClasspath())
.libToLib(tempJackFolder, tempOut3, /* zipFiles = */ false);
File tempOut4 = AbstractTestTools.createTempDir();
toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class);
toolchain.addProguardFlags(new ProguardFlags(testFolder, "obf2.flags"))
- .addToClasspath(toolchain.getDefaultBootClasspath())
.libToLib(tempJackFolder, tempOut4, /* zipFiles = */ false);
File tempOutFolder = AbstractTestTools.createTempDir();
diff --git a/jack/src/com/android/jack/shrob/shrink/KeeperBrush.java b/jack/src/com/android/jack/shrob/shrink/KeeperBrush.java
index b323f3d7..d6f14c7f 100644
--- a/jack/src/com/android/jack/shrob/shrink/KeeperBrush.java
+++ b/jack/src/com/android/jack/shrob/shrink/KeeperBrush.java
@@ -16,23 +16,12 @@
package com.android.jack.shrob.shrink;
-import com.android.jack.Jack;
-import com.android.jack.JackAbortException;
import com.android.jack.analysis.tracer.AbstractTracerBrush;
import com.android.jack.analysis.tracer.Tracer;
-import com.android.jack.ir.ast.JClass;
-import com.android.jack.ir.ast.JDefinedClass;
import com.android.jack.ir.ast.JDefinedClassOrInterface;
-import com.android.jack.ir.ast.JDefinedInterface;
import com.android.jack.ir.ast.JField;
-import com.android.jack.ir.ast.JInterface;
import com.android.jack.ir.ast.JMethod;
import com.android.jack.ir.ast.JNode;
-import com.android.jack.ir.ast.JPhantomClass;
-import com.android.jack.ir.ast.JPhantomClassOrInterface;
-import com.android.jack.ir.ast.JPhantomInterface;
-import com.android.jack.ir.formatter.UserFriendlyFormatter;
-import com.android.jack.reporting.Reporter.Severity;
import com.android.jack.shrob.seed.SeedMarker;
import com.android.jack.shrob.spec.KeepModifier;
import com.android.sched.item.Description;
@@ -54,26 +43,6 @@ import javax.annotation.Nonnull;
@HasKeyId
public class KeeperBrush extends AbstractTracerBrush<KeepMarker> {
- private static final class UnknownReferencedTypeException extends Exception {
-
- private static final long serialVersionUID = 1L;
-
- @Nonnull
- private final JPhantomClassOrInterface phantomClOrI;
-
- private UnknownReferencedTypeException(@Nonnull JPhantomClassOrInterface phantomClOrI) {
- this.phantomClOrI = phantomClOrI;
- }
-
- @Override
- @Nonnull
- public String getMessage() {
- return "Unknown referenced type '"
- + UserFriendlyFormatter.getFormatter().getName(phantomClOrI)
- + "'. Add type into your classpath.";
- }
- }
-
@Nonnull
public static final BooleanPropertyId KEEP_ENCLOSING_METHOD = BooleanPropertyId.create(
"jack.shrink.keep.enclosing.method",
@@ -148,45 +117,4 @@ public class KeeperBrush extends AbstractTracerBrush<KeepMarker> {
return marker != null && marker.getModifier() != KeepModifier.ALLOW_SHRINKING;
}
- @Override
- public boolean startTrace(@Nonnull JDefinedClassOrInterface type) {
- boolean traceType = markIfNecessary(type);
- if (traceType) {
- try {
- if (type instanceof JDefinedClass) {
- verifyHierarchy((JDefinedClass) type);
- } else {
- assert type instanceof JDefinedInterface;
- verifyImplementedInterfaces(type);
- }
- } catch (UnknownReferencedTypeException e) {
- ShrinkingException reportable = new ShrinkingException(e);
- Jack.getSession().getReporter().report(Severity.FATAL, reportable);
- throw new JackAbortException(reportable);
- }
- }
- return traceType;
- }
-
- private void verifyHierarchy(@Nonnull JDefinedClass t) throws UnknownReferencedTypeException {
- JClass superClass = t.getSuperClass();
- if (superClass instanceof JPhantomClass) {
- throw new UnknownReferencedTypeException((JPhantomClass) superClass);
- } else if (superClass != null) {
- verifyHierarchy((JDefinedClass) superClass);
- }
- verifyImplementedInterfaces(t);
- }
-
- private void verifyImplementedInterfaces(@Nonnull JDefinedClassOrInterface t)
- throws UnknownReferencedTypeException {
- for (JInterface jInterface : t.getImplements()) {
- if (jInterface instanceof JPhantomInterface) {
- throw new UnknownReferencedTypeException((JPhantomInterface) jInterface);
- } else {
- assert jInterface instanceof JDefinedInterface;
- verifyImplementedInterfaces((JDefinedInterface) jInterface);
- }
- }
- }
}
diff --git a/jack/src/com/android/jack/shrob/shrink/ShrinkingException.java b/jack/src/com/android/jack/shrob/shrink/ShrinkingException.java
deleted file mode 100644
index b543e733..00000000
--- a/jack/src/com/android/jack/shrob/shrink/ShrinkingException.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.jack.shrob.shrink;
-
-import com.android.jack.reporting.ReportableException;
-
-import javax.annotation.Nonnull;
-
-/**
- * A {@link ReportableException} that occurs during the shrinking.
- */
-public class ShrinkingException extends ReportableException {
-
- private static final long serialVersionUID = 1L;
-
- public ShrinkingException(@Nonnull Throwable cause) {
- super(cause);
- }
-
- @Override
- @Nonnull
- public String getMessage() {
- return "Error during skrinking: " + getCause().getMessage();
- }
-
- @Override
- @Nonnull
- public ProblemLevel getDefaultProblemLevel() {
- return ProblemLevel.ERROR;
- }
-
-}