diff options
author | 2016-06-20 22:51:10 +0000 | |
---|---|---|
committer | 2016-06-21 09:59:16 +0000 | |
commit | cecca155c50b2b58890c7b84448d72c28a0ee7cf (patch) | |
tree | b9458b316a172a7fbba7cce78ca9f1d3b8491678 | |
parent | 1442442e9ddff85efdec0f34ac312a513962862c (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.java | 12 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/analysis/AnalysisUtilsTest.java | 6 |
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 +} |