diff options
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTarget.java | 1 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/SkylarkApiProvider.java | 8 |
2 files changed, 7 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTarget.java index 8f6b61cbc3..95d8f8260b 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTarget.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTarget.java @@ -63,6 +63,7 @@ public final class RuleConfiguredTarget extends AbstractConfiguredTarget { // Initialize every SkylarkApiProvider for (int i = 0; i < providers.getProviderCount(); i++) { + Object providerKeyAt = providers.getProviderKeyAt(i); Object obj = providers.getProviderInstanceAt(i); if (obj instanceof SkylarkApiProvider) { ((SkylarkApiProvider) obj).init(this); diff --git a/src/main/java/com/google/devtools/build/lib/rules/SkylarkApiProvider.java b/src/main/java/com/google/devtools/build/lib/rules/SkylarkApiProvider.java index b9fbdd07e0..83cdd438a0 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/SkylarkApiProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/SkylarkApiProvider.java @@ -30,8 +30,12 @@ public abstract class SkylarkApiProvider { public final void init(TransitiveInfoCollection info) { if (this.info != null) { - // Allow multiple calls, but only consistent ones. - Preconditions.checkState(info == this.info); + // todo(dslomov): nuke this weird initialization mechanism. + + // Allow multiple calls. + // It is possible for the Skylark rule to get a SkylarkApiProvider such as `target.java` + // from its dependency and pass it on. It does not make a whole lot of sense, but we + // shouldn't crash. return; } this.info = Preconditions.checkNotNull(info); |