Make aspects attached to aliases work when their actual= attribute is a select.

Fixes https://github.com/bazelbuild/e4b/issues/6 .

--
MOS_MIGRATED_REVID=131698950
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java b/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java
index f602e8b..14c4b1f 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java
@@ -60,6 +60,46 @@
   }
 
   @Test
+  public void testAspectAppliedToAliasWithSelect() throws Exception {
+    setRulesAvailableInTests(new TestAspects.BaseRule(), new AspectRequiringRule());
+    pkg("a",
+        "aspect(name='a', foo=[':b'])",
+        "alias(name='b', actual=select({'//conditions:default': ':c'}))",
+        "base(name='c')");
+    ConfiguredTarget a = getConfiguredTarget("//a:a");
+    assertThat(a.getProvider(RuleInfo.class).getData())
+        .containsExactly("aspect //a:c", "rule //a:a");
+  }
+
+  @Test
+  public void testAspectAppliedToChainedAliases() throws Exception {
+    setRulesAvailableInTests(new TestAspects.BaseRule(), new AspectRequiringRule());
+    pkg("a",
+        "aspect(name='a', foo=[':b'])",
+        "alias(name='b', actual=':c')",
+        "alias(name='c', actual=':d')",
+        "alias(name='d', actual=':e')",
+        "base(name='e')");
+
+    ConfiguredTarget a = getConfiguredTarget("//a:a");
+    assertThat(a.getProvider(RuleInfo.class).getData())
+        .containsExactly("aspect //a:e", "rule //a:a");
+  }
+
+  @Test
+  public void testAspectAppliedToChainedAliasesAndSelect() throws Exception {
+    setRulesAvailableInTests(new TestAspects.BaseRule(), new AspectRequiringRule());
+    pkg("a",
+        "aspect(name='a', foo=[':b'])",
+        "alias(name='b', actual=select({'//conditions:default': ':c'}))",
+        "alias(name='c', actual=select({'//conditions:default': ':d'}))",
+        "base(name='d')");
+    ConfiguredTarget a = getConfiguredTarget("//a:a");
+    assertThat(a.getProvider(RuleInfo.class).getData())
+        .containsExactly("aspect //a:d", "rule //a:a");
+  }
+
+  @Test
   public void providersOfAspectAreMergedIntoDependency() throws Exception {
     setRulesAvailableInTests(new TestAspects.BaseRule(), new AspectRequiringRule());
     pkg("a",