aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2016-06-20 22:51:10 +0000
committerGravatar Philipp Wollermann <philwo@google.com>2016-06-21 09:59:16 +0000
commitcecca155c50b2b58890c7b84448d72c28a0ee7cf (patch)
treeb9458b316a172a7fbba7cce78ca9f1d3b8491678
parent1442442e9ddff85efdec0f34ac312a513962862c (diff)
Optimize an assertion which was showing up in profiles. (Even better might be
to remove the call from RuleConfiguredTarget.getProvider() and instead check the types when the providers ImmutableMap is built.) -- MOS_MIGRATED_REVID=125389561
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java12
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/AnalysisUtilsTest.java6
2 files changed, 7 insertions, 11 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java
index c350cb239a..40fdf9b6b1 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java
@@ -26,7 +26,6 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.packages.TriState;
-import com.google.devtools.build.lib.util.Preconditions;
import com.google.devtools.build.lib.vfs.PathFragment;
/**
@@ -129,12 +128,11 @@ public final class AnalysisUtils {
* Checks that the given provider class either refers to an interface or to a value class.
*/
public static <T extends TransitiveInfoProvider> void checkProvider(Class<T> clazz) {
- if (!clazz.isInterface()) {
- Preconditions.checkArgument(
- !clazz.getSimpleName().startsWith("AutoValue_") || clazz.getSuperclass() == null,
- "%s is generated by @AutoValue - you should use %s instead",
- clazz.getSimpleName(),
- clazz.getSuperclass().getSimpleName());
+ // Write this check in terms of getName() rather than getSimpleName(); the latter is expensive.
+ if (!clazz.isInterface() && clazz.getName().contains(".AutoValue_")) {
+ // We must have a superclass due to the generic bound above.
+ throw new IllegalArgumentException(
+ clazz + " is generated by @AutoValue; use " + clazz.getSuperclass() + " instead");
}
}
}
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/AnalysisUtilsTest.java b/src/test/java/com/google/devtools/build/lib/analysis/AnalysisUtilsTest.java
index d64f971e59..f7f9b2798a 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/AnalysisUtilsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/AnalysisUtilsTest.java
@@ -38,9 +38,7 @@ public class AnalysisUtilsTest {
checkProvider(AutoValue_AnalysisUtilsTest_AutoValuedClass.class);
fail("Expected IllegalArgumentException, but nothing was thrown.");
} catch (IllegalArgumentException e) {
- assertThat(e.getMessage()).isEqualTo(
- "AutoValue_AnalysisUtilsTest_AutoValuedClass is generated by @AutoValue - "
- + "you should use AutoValuedClass instead");
+ assertThat(e.getMessage()).contains("generated by @AutoValue");
}
}
@@ -50,4 +48,4 @@ public class AnalysisUtilsTest {
abstract static class AutoValuedClass implements TransitiveInfoProvider {
abstract int foo();
}
-} \ No newline at end of file
+}