diff options
author | 2016-08-17 20:03:35 +0000 | |
---|---|---|
committer | 2016-08-18 08:31:31 +0000 | |
commit | 6c3fe26cbd07d3cb52739c1c296853f23332275d (patch) | |
tree | 42095e8606ca3d40cef7912cc35396bc3b7b09fa /src | |
parent | ff33193e8fcd24da29d377a0850b198a0a6c53d5 (diff) |
Fix NPE when aspect propagates over an alias.
--
MOS_MIGRATED_REVID=130553300
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/packages/TargetUtils.java | 3 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java | 29 |
2 files changed, 31 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/TargetUtils.java b/src/main/java/com/google/devtools/build/lib/packages/TargetUtils.java index 85dc32044d..17b09a4ef7 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/TargetUtils.java +++ b/src/main/java/com/google/devtools/build/lib/packages/TargetUtils.java @@ -261,7 +261,8 @@ public final class TargetUtils { } Rule rule = (Rule) target; - if (!rule.getRuleClass().equals("bind")) { + String ruleClass = rule.getRuleClass(); + if (!(ruleClass.equals("alias") || ruleClass.equals("bind"))) { return null; } diff --git a/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java b/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java index c7e161b8e5..4f59705365 100644 --- a/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java +++ b/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java @@ -1620,6 +1620,35 @@ public class AndroidStudioInfoAspectTest extends AndroidStudioInfoAspectTestBase assertThat(ruleIdeInfo.hasCRuleIdeInfo()).isFalse(); } + @Test + public void testAlias() throws Exception { + scratch.file( + "com/google/example/BUILD", + "java_library(", + " name = 'test',", + " srcs = ['Test.java'],", + " deps = [':alias']", + ")", + "alias(", + " name = 'alias',", + " actual = ':alias2',", + ")", + "alias(", + " name = 'alias2',", + " actual = ':real',", + ")", + "java_library(", + " name = 'real',", + " srcs = ['Real.java'],", + ")"); + Map<String, RuleIdeInfo> ruleIdeInfos = buildRuleIdeInfo("//com/google/example:test"); + RuleIdeInfo testInfo = getRuleInfoAndVerifyLabel( + "//com/google/example:test", ruleIdeInfos); + assertThat(testInfo.getDependenciesList()) + .contains("//com/google/example:real"); + assertThat(getRuleInfoAndVerifyLabel("//com/google/example:real", ruleIdeInfos)).isNotNull(); + } + /** * Returns true if we are testing the native aspect, not the Skylark one. * Eventually Skylark aspect will be equivalent to a native one, and this method |