aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java36
1 files changed, 15 insertions, 21 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java
index 12fd6b9224..8b197298fb 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java
@@ -25,12 +25,12 @@ import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.packages.ClassObjectConstructor;
import com.google.devtools.build.lib.packages.PackageSpecification;
import com.google.devtools.build.lib.packages.SkylarkClassObject;
-import com.google.devtools.build.lib.packages.SkylarkProviderIdentifier;
import com.google.devtools.build.lib.packages.Target;
import com.google.devtools.build.lib.syntax.ClassObject;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.EvalUtils;
import java.util.concurrent.atomic.AtomicReference;
+import java.util.function.Consumer;
import javax.annotation.Nullable;
/**
@@ -159,12 +159,13 @@ public abstract class AbstractConfiguredTarget
if (getProvider(OutputGroupProvider.class) != null) {
result.add(OutputGroupProvider.SKYLARK_NAME);
}
- if (getProvider(SkylarkProviders.class) != null) {
- result.addAll(getProvider(SkylarkProviders.class).getKeys());
- }
+ addExtraSkylarkKeys(result::add);
return result.build();
}
+ protected void addExtraSkylarkKeys(Consumer<String> result) {
+ }
+
private DefaultProvider getDefaultProvider() {
if (defaultProvider.get() == null) {
defaultProvider.compareAndSet(
@@ -177,16 +178,6 @@ public abstract class AbstractConfiguredTarget
return defaultProvider.get();
}
- @Nullable
- @Override
- public final Object get(SkylarkProviderIdentifier id) {
- if (id.isLegacy()) {
- return get(id.getLegacyId());
- }
- return get(id.getKey());
- }
-
-
/** Returns a declared provider provided by this target. Only meant to use from Skylark. */
@Nullable
@Override
@@ -197,13 +188,14 @@ public abstract class AbstractConfiguredTarget
if (providerKey.equals(OutputGroupProvider.SKYLARK_CONSTRUCTOR.getKey())) {
return OutputGroupProvider.get(this);
}
- SkylarkProviders skylarkProviders = getProvider(SkylarkProviders.class);
- if (skylarkProviders != null) {
- return skylarkProviders.getDeclaredProvider(providerKey);
- }
- return null;
+ return rawGetSkylarkProvider(providerKey);
}
+ /** Implement in subclasses to get a skylark provider for a given {@code providerKey}. */
+ @Nullable
+ protected abstract SkylarkClassObject rawGetSkylarkProvider(
+ ClassObjectConstructor.Key providerKey);
+
/**
* Returns a value provided by this target. Only meant to use from Skylark.
*/
@@ -212,8 +204,10 @@ public abstract class AbstractConfiguredTarget
if (OutputGroupProvider.SKYLARK_NAME.equals(providerKey)) {
return getProvider(OutputGroupProvider.class);
}
- SkylarkProviders skylarkProviders = getProvider(SkylarkProviders.class);
- return skylarkProviders != null ? skylarkProviders.getValue(providerKey) : null;
+ return rawGetSkylarkProvider(providerKey);
}
+ /** Implement in subclasses to get a skylark provider for a given {@code providerKey}. */
+ protected abstract Object rawGetSkylarkProvider(String providerKey);
+
}