Remove the ability for an aspect to propagate a different aspect.
This functionality is never used, have never been exposed to Skylark
and is a continuous pain to maintain and test.
--
PiperOrigin-RevId: 145079832
MOS_MIGRATED_REVID=145079832
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
index 2060e81..dc1f292 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
@@ -34,7 +34,6 @@
import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.packages.EnvironmentGroup;
import com.google.devtools.build.lib.packages.InputFile;
-import com.google.devtools.build.lib.packages.NativeAspectClass;
import com.google.devtools.build.lib.packages.NoSuchThingException;
import com.google.devtools.build.lib.packages.OutputFile;
import com.google.devtools.build.lib.packages.PackageGroup;
@@ -559,19 +558,8 @@
ImmutableList.Builder<Aspect> aspectCandidates = ImmutableList.builder();
aspectCandidates.addAll(attribute.getAspects(originalRule));
for (Aspect aspect : aspects) {
- for (AspectClass aspectClass :
- aspect.getDefinition().getAttributeAspects(attribute)) {
- if (aspectClass.equals(aspect.getAspectClass())) {
- aspectCandidates.add(aspect);
- } else if (aspectClass instanceof NativeAspectClass) {
- aspectCandidates.add(
- Aspect.forNative((NativeAspectClass) aspectClass, aspect.getParameters()));
- } else {
- // If we ever want to support this specifying arbitrary aspects for Skylark aspects,
- // we will need to do a Skyframe call here to load an up-to-date definition.
- throw new IllegalStateException(
- "Skylark aspect classes sending different aspects along attributes is not supported");
- }
+ if (aspect.getDefinition().propagateAlong(attribute)) {
+ aspectCandidates.add(aspect);
}
}
return aspectCandidates.build();
diff --git a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java
index 4c2dc81..e1f31fa 100644
--- a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java
@@ -158,8 +158,8 @@
public AspectDefinition getDefinition(AspectParameters aspectParameters) {
AspectDefinition.Builder builder =
new AspectDefinition.Builder(this)
- .attributeAspect("runtime_deps", this)
- .attributeAspect("resources", this)
+ .propagateAlongAttribute("runtime_deps")
+ .propagateAlongAttribute("resources")
.add(
attr("$packageParser", LABEL)
.cfg(HOST)
@@ -176,7 +176,7 @@
toolsRepository + "//tools/android:JarFilter")));
for (PrerequisiteAttr prerequisiteAttr : prerequisiteAttrs) {
- builder.attributeAspect(prerequisiteAttr.name, this);
+ builder.propagateAlongAttribute(prerequisiteAttr.name);
}
return builder.build();
diff --git a/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java b/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java
index 58b8fea..55b0616 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java
@@ -14,12 +14,9 @@
package com.google.devtools.build.lib.packages;
-import com.google.common.collect.ImmutableCollection;
-import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.ImmutableSetMultimap;
import com.google.common.collect.LinkedHashMultimap;
import com.google.common.collect.Multimap;
import com.google.common.collect.SetMultimap;
@@ -30,6 +27,7 @@
import com.google.devtools.build.lib.util.Preconditions;
import java.util.Collection;
import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import javax.annotation.Nullable;
@@ -53,31 +51,34 @@
*/
@Immutable
public final class AspectDefinition {
-
private final AspectClass aspectClass;
private final RequiredProviders requiredProviders;
private final RequiredProviders requiredProvidersForAspects;
private final ImmutableMap<String, Attribute> attributes;
- private final PropagationFunction attributeAspects;
- @Nullable private final ConfigurationFragmentPolicy configurationFragmentPolicy;
- private interface PropagationFunction {
- ImmutableCollection<AspectClass> propagate(Attribute attribute);
- }
+ /**
+ * Which attributes aspect should propagate along:
+ * <ul>
+ * <li>A {@code null} value means propagate along all attributes</li>
+ * <li>A (possibly empty) set means to propagate only along the attributes in a set</li>
+ * </ul>
+ */
+ @Nullable private final ImmutableSet<String> restrictToAttributes;
+ @Nullable private final ConfigurationFragmentPolicy configurationFragmentPolicy;
private AspectDefinition(
AspectClass aspectClass,
RequiredProviders requiredProviders,
RequiredProviders requiredAspectProviders,
ImmutableMap<String, Attribute> attributes,
- PropagationFunction attributeAspects,
+ @Nullable ImmutableSet<String> restrictToAttributes,
@Nullable ConfigurationFragmentPolicy configurationFragmentPolicy) {
this.aspectClass = aspectClass;
this.requiredProviders = requiredProviders;
this.requiredProvidersForAspects = requiredAspectProviders;
this.attributes = attributes;
- this.attributeAspects = attributeAspects;
+ this.restrictToAttributes = restrictToAttributes;
this.configurationFragmentPolicy = configurationFragmentPolicy;
}
@@ -119,10 +120,13 @@
/**
- * Returns the set of required aspects for a given atribute.
+ * Returns the set of required aspects for a given attribute.
*/
- public ImmutableCollection<AspectClass> getAttributeAspects(Attribute attribute) {
- return attributeAspects.propagate(attribute);
+ public boolean propagateAlong(Attribute attribute) {
+ if (restrictToAttributes != null) {
+ return restrictToAttributes.contains(attribute.getName());
+ }
+ return true;
}
/**
@@ -216,8 +220,8 @@
private RequiredProviders.Builder requiredProviders = RequiredProviders.acceptAnyBuilder();
private RequiredProviders.Builder requiredAspectProviders =
RequiredProviders.acceptNoneBuilder();
- private final Multimap<String, AspectClass> attributeAspects = LinkedHashMultimap.create();
- private ImmutableCollection<AspectClass> allAttributesAspects = null;
+ @Nullable
+ private LinkedHashSet<String> propagateAlongAttributes = new LinkedHashSet<>();
private final ConfigurationFragmentPolicy.Builder configurationFragmentPolicy =
new ConfigurationFragmentPolicy.Builder();
@@ -265,42 +269,38 @@
/**
- * Declares that this aspect depends on the given aspects in {@code aspectFactories} provided
- * by direct dependencies through attribute {@code attribute} on the target associated with this
- * aspect.
+ * Declares that this aspect propagates along an {@code attribute} on the target
+ * associated with this aspect.
*
- * <p>Note that {@code ConfiguredAspectFactory} instances are expected in the second argument,
- * but we cannot reference that interface here.
+ * Specify multiple attributes by calling {@link #propagateAlongAttribute(String)}
+ * repeatedly.
+ *
+ * Aspect can also declare to propagate along all attributes with
+ * {@link #propagateAlongAttributes}.
*/
- public final Builder attributeAspect(String attribute, NativeAspectClass... aspectClasses) {
+ public final Builder propagateAlongAttribute(String attribute) {
Preconditions.checkNotNull(attribute);
- for (NativeAspectClass aspectClass : aspectClasses) {
- this.attributeAspect(attribute, Preconditions.checkNotNull(aspectClass));
- }
+ Preconditions.checkState(this.propagateAlongAttributes != null,
+ "Either propagate along all attributes, or along specific attributes, not both");
+
+ this.propagateAlongAttributes.add(attribute);
+
return this;
}
/**
- * Declares that this aspect depends on the given {@link AspectClass} provided
- * by direct dependencies through attribute {@code attribute} on the target associated with this
- * aspect.
+ * Declares that this aspect propagates along all attributes on the target
+ * associated with this aspect.
+ *
+ * Specify either this or {@link #propagateAlongAttribute(String)}, not both.
*/
- public final Builder attributeAspect(String attribute, AspectClass aspectClass) {
- Preconditions.checkNotNull(attribute);
- Preconditions.checkState(this.allAttributesAspects == null,
- "Specify either aspects for all attributes, or for specific attributes, not both");
-
- this.attributeAspects.put(attribute, Preconditions.checkNotNull(aspectClass));
-
- return this;
- }
-
- public final Builder allAttributesAspect(AspectClass... aspectClasses) {
- Preconditions.checkState(this.attributeAspects.isEmpty(),
- "Specify either aspects for all attributes, or for specific attributes, not both");
- Preconditions.checkState(this.allAttributesAspects == null,
+ public final Builder propagateAlongAllAttributes() {
+ Preconditions.checkState(this.propagateAlongAttributes != null,
"Aspects for all attributes must only be specified once");
- this.allAttributesAspects = ImmutableList.copyOf(aspectClasses);
+
+ Preconditions.checkState(this.propagateAlongAttributes.isEmpty(),
+ "Specify either aspects for all attributes, or for specific attributes, not both");
+ this.propagateAlongAttributes = null;
return this;
}
@@ -394,34 +394,6 @@
return this;
}
- @Immutable
- private static final class AllAttributesPropagationFunction implements PropagationFunction {
- private final ImmutableCollection<AspectClass> aspects;
-
- private AllAttributesPropagationFunction(ImmutableCollection<AspectClass> aspects) {
- this.aspects = aspects;
- }
-
- @Override
- public ImmutableCollection<AspectClass> propagate(Attribute attribute) {
- return aspects;
- }
- }
-
- @Immutable
- private static final class PerAttributePropagationFunction implements PropagationFunction {
- ImmutableSetMultimap<String, AspectClass> aspects;
-
- public PerAttributePropagationFunction(
- ImmutableSetMultimap<String, AspectClass> aspects) {
- this.aspects = aspects;
- }
-
- @Override
- public ImmutableCollection<AspectClass> propagate(Attribute attribute) {
- return aspects.get(attribute.getName());
- }
- }
/**
* Builds the aspect definition.
@@ -433,9 +405,9 @@
requiredProviders.build(),
requiredAspectProviders.build(),
ImmutableMap.copyOf(attributes),
- allAttributesAspects != null
- ? new AllAttributesPropagationFunction(allAttributesAspects)
- : new PerAttributePropagationFunction(ImmutableSetMultimap.copyOf(attributeAspects)),
+ propagateAlongAttributes == null
+ ? null
+ : ImmutableSet.copyOf(propagateAlongAttributes),
configurationFragmentPolicy.build());
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/SkylarkAspect.java b/src/main/java/com/google/devtools/build/lib/packages/SkylarkAspect.java
index 5d04a5c..6c393ae 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/SkylarkAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/SkylarkAspect.java
@@ -121,10 +121,10 @@
public AspectDefinition getDefinition(AspectParameters aspectParams) {
AspectDefinition.Builder builder = new AspectDefinition.Builder(aspectClass);
if (allAttrAspects.equals(attributeAspects)) {
- builder.allAttributesAspect(aspectClass);
+ builder.propagateAlongAllAttributes();
} else {
for (String attributeAspect : attributeAspects) {
- builder.attributeAspect(attributeAspect, aspectClass);
+ builder.propagateAlongAttribute(attributeAspect);
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidNeverlinkAspect.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidNeverlinkAspect.java
index b7c6c59..68ee612 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidNeverlinkAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidNeverlinkAspect.java
@@ -79,7 +79,7 @@
public AspectDefinition getDefinition(AspectParameters aspectParameters) {
AspectDefinition.Builder builder = new AspectDefinition.Builder(this);
for (String attribute : ATTRIBUTES) {
- builder.attributeAspect(attribute, this);
+ builder.propagateAlongAttribute(attribute);
}
return builder
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java b/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java
index 9904c66..3e9a2c8 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java
@@ -129,7 +129,7 @@
.value(Label.parseAbsoluteUnchecked(toolsRepository + "//tools/android:dexbuilder")));
}
for (String attr : TRANSITIVE_ATTRIBUTES) {
- result.attributeAspect(attr, this);
+ result.propagateAlongAttribute(attr);
}
return result.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/JackAspect.java b/src/main/java/com/google/devtools/build/lib/rules/android/JackAspect.java
index c6a25ee..877da92 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/JackAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/JackAspect.java
@@ -65,9 +65,9 @@
.add(attr(":android_sdk", LABEL)
.allowedRuleClasses("android_sdk")
.value(new AndroidSdkLabel(androidSdk)))
- .attributeAspect("deps", this)
- .attributeAspect("exports", this)
- .attributeAspect("runtime_deps", this)
+ .propagateAlongAttribute("deps")
+ .propagateAlongAttribute("exports")
+ .propagateAlongAttribute("runtime_deps")
.requiresConfigurationFragments(AndroidConfiguration.class)
.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java
index da7e446..ea569e9 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java
@@ -108,7 +108,7 @@
public AspectDefinition getDefinition(AspectParameters aspectParameters) {
AspectDefinition.Builder result =
new AspectDefinition.Builder(this)
- .attributeAspect("deps", this)
+ .propagateAlongAttribute("deps")
.requiresConfigurationFragments(CppConfiguration.class, ProtoConfiguration.class)
.requireProviders(ProtoSupportDataProvider.class)
.add(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java
index f868407..a151b3d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java
@@ -115,7 +115,7 @@
public AspectDefinition getDefinition(AspectParameters aspectParameters) {
AspectDefinition.Builder result =
new AspectDefinition.Builder(this)
- .attributeAspect("deps", this)
+ .propagateAlongAttribute("deps")
.requiresConfigurationFragments(JavaConfiguration.class, ProtoConfiguration.class)
.requireProviders(ProtoSourcesProvider.class)
.add(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java
index 5eba495..a248bbf 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java
@@ -122,7 +122,7 @@
public AspectDefinition getDefinition(AspectParameters aspectParameters) {
AspectDefinition.Builder result =
new AspectDefinition.Builder(this)
- .attributeAspect("deps", this)
+ .propagateAlongAttribute("deps")
.requiresConfigurationFragments(JavaConfiguration.class, ProtoConfiguration.class)
.requireProviders(ProtoSourcesProvider.class)
.add(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
index 73fdbe6..d25be99 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
@@ -136,9 +136,9 @@
@Override
public AspectDefinition getDefinition(AspectParameters aspectParameters) {
return addAdditionalAttributes(new AspectDefinition.Builder(this))
- .attributeAspect("deps", this)
- .attributeAspect("exports", this)
- .attributeAspect("runtime_deps", this)
+ .propagateAlongAttribute("deps")
+ .propagateAlongAttribute("exports")
+ .propagateAlongAttribute("runtime_deps")
.requireProviderSets(
ImmutableList.of(
ImmutableSet.<Class<?>>of(JavaCompilationArgsProvider.class),
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoAspect.java
index fa959e1..befd3d4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoAspect.java
@@ -36,7 +36,7 @@
@Override
public AspectDefinition getDefinition(AspectParameters aspectParameters) {
return new AspectDefinition.Builder(this)
- .attributeAspect("deps", this)
+ .propagateAlongAttribute("deps")
.build();
}
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java
index f522433..924e3ba 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java
@@ -120,26 +120,26 @@
@Test
public void testAttributeAspect_WrapsAndAddsToMap() throws Exception {
AspectDefinition withAspects = new AspectDefinition.Builder(TEST_ASPECT_CLASS)
- .attributeAspect("srcs", TEST_ASPECT_CLASS)
- .attributeAspect("deps", TEST_ASPECT_CLASS)
+ .propagateAlongAttribute("srcs")
+ .propagateAlongAttribute("deps")
.build();
- assertThat(withAspects.getAttributeAspects(createLabelListAttribute("srcs")))
- .containsExactly(TEST_ASPECT_CLASS);
- assertThat(withAspects.getAttributeAspects(createLabelListAttribute("deps")))
- .containsExactly(TEST_ASPECT_CLASS);
+ assertThat(withAspects.propagateAlong(createLabelListAttribute("srcs")))
+ .isTrue();
+ assertThat(withAspects.propagateAlong(createLabelListAttribute("deps")))
+ .isTrue();
}
@Test
public void testAttributeAspect_AllAttributes() throws Exception {
AspectDefinition withAspects = new AspectDefinition.Builder(TEST_ASPECT_CLASS)
- .allAttributesAspect(TEST_ASPECT_CLASS)
+ .propagateAlongAllAttributes()
.build();
- assertThat(withAspects.getAttributeAspects(createLabelListAttribute("srcs")))
- .containsExactly(TEST_ASPECT_CLASS);
- assertThat(withAspects.getAttributeAspects(createLabelListAttribute("deps")))
- .containsExactly(TEST_ASPECT_CLASS);
+ assertThat(withAspects.propagateAlong(createLabelListAttribute("srcs")))
+ .isTrue();
+ assertThat(withAspects.propagateAlong(createLabelListAttribute("deps")))
+ .isTrue();
}
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java b/src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java
index 724b1c5..2926564 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java
@@ -251,7 +251,7 @@
public static final AttributeAspect ATTRIBUTE_ASPECT = new AttributeAspect();
private static final AspectDefinition ATTRIBUTE_ASPECT_DEFINITION =
new AspectDefinition.Builder(ATTRIBUTE_ASPECT)
- .attributeAspect("foo", ATTRIBUTE_ASPECT)
+ .propagateAlongAttribute("foo")
.build();
/**
@@ -267,7 +267,7 @@
public static final NativeAspectClass ALL_ATTRIBUTES_ASPECT = new AllAttributesAspect();
private static final AspectDefinition ALL_ATTRIBUTES_ASPECT_DEFINITION =
new AspectDefinition.Builder(ALL_ATTRIBUTES_ASPECT)
- .allAttributesAspect(ALL_ATTRIBUTES_ASPECT)
+ .propagateAlongAllAttributes()
.build();
/** An aspect that propagates along all attributes and has a tool dependency. */
@@ -283,7 +283,7 @@
new AllAttributesWithToolAspect();
private static final AspectDefinition ALL_ATTRIBUTES_WITH_TOOL_ASPECT_DEFINITION =
new AspectDefinition.Builder(ALL_ATTRIBUTES_WITH_TOOL_ASPECT)
- .allAttributesAspect(ALL_ATTRIBUTES_WITH_TOOL_ASPECT)
+ .propagateAlongAllAttributes()
.add(
attr("$tool", BuildType.LABEL)
.allowedFileTypes(FileTypeSet.ANY_FILE)
@@ -338,7 +338,7 @@
public AspectDefinition getDefinition(AspectParameters aspectParameters) {
AspectDefinition.Builder builder =
new AspectDefinition.Builder(PARAMETRIZED_DEFINITION_ASPECT)
- .attributeAspect("foo", this);
+ .propagateAlongAttribute("foo");
ImmutableCollection<String> baz = aspectParameters.getAttribute("baz");
if (baz != null) {
try {
@@ -413,7 +413,7 @@
public static final WarningAspect WARNING_ASPECT = new WarningAspect();
private static final AspectDefinition WARNING_ASPECT_DEFINITION =
new AspectDefinition.Builder(WARNING_ASPECT)
- .attributeAspect("bar", WARNING_ASPECT)
+ .propagateAlongAttribute("bar")
.build();
/**
@@ -438,7 +438,7 @@
public static final ErrorAspect ERROR_ASPECT = new ErrorAspect();
private static final AspectDefinition ERROR_ASPECT_DEFINITION =
new AspectDefinition.Builder(ERROR_ASPECT)
- .attributeAspect("bar", ERROR_ASPECT)
+ .propagateAlongAttribute("bar")
.build();
/**
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
index 0575203..37d4cea 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
@@ -1134,9 +1134,9 @@
"my_aspect = aspect(_impl, attr_aspects=['*'])");
SkylarkAspect myAspect = (SkylarkAspect) lookup("my_aspect");
- assertThat(myAspect.getDefinition(AspectParameters.EMPTY).getAttributeAspects(
+ assertThat(myAspect.getDefinition(AspectParameters.EMPTY).propagateAlong(
Attribute.attr("foo", BuildType.LABEL).allowedFileTypes().build()
- )).containsExactly(myAspect.getAspectClass());
+ )).isTrue();
}
@Test