Throw a rule error when a skylark rule implementation returns multiple providers of the same type.
This error-throwing functionality is tied to semantic flag --incompatible_disallow_conflicting_providers
Partial fix for #5902. (That issue will still track migration).
RELNOTES: A rule error will be thrown if a Skylark rule implementation function returns multiple providers of the same type. Try the `--incompatible_disallow_conflicting_providers` flag to ensure your code is forward-compatible.
PiperOrigin-RevId: 208884695
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java
index 85f6d4d..ac13aad 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java
@@ -57,6 +57,8 @@
public abstract boolean incompatibleDisableObjcProviderResources();
+ public abstract boolean incompatibleDisallowConflictingProviders();
+
public abstract boolean incompatibleDisallowDataTransition();
public abstract boolean incompatibleDisallowDictPlus();
@@ -110,6 +112,7 @@
.incompatibleDepsetUnion(false)
.incompatibleDisableDeprecatedAttrParams(false)
.incompatibleDisableObjcProviderResources(false)
+ .incompatibleDisallowConflictingProviders(false)
.incompatibleDisallowDataTransition(false)
.incompatibleDisallowDictPlus(false)
.incompatibleDisallowFileType(false)
@@ -148,6 +151,8 @@
public abstract Builder incompatibleDisableObjcProviderResources(boolean value);
+ public abstract Builder incompatibleDisallowConflictingProviders(boolean value);
+
public abstract Builder incompatibleDisallowDataTransition(boolean value);
public abstract Builder incompatibleDisallowDictPlus(boolean value);