Use the same data structure for native and Skylark providers.
The memory cost of adding Skylark provider is now the same as native.
Skylark providers (declared and legacy) benefit from the same
shape-sharing optimization as native providers.
RELNOTES: None.
PiperOrigin-RevId: 160944263
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProvider.java
index de538b9..9ee8933 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProvider.java
@@ -60,4 +60,19 @@
* @see com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory
*/
public interface TransitiveInfoProvider {
+
+ /**
+ * Implement this to mark that a native provider should be exported with
+ * certain name to Skylark.
+ * Broken: only works for rules, not for aspects.
+ * DO NOT USE FOR NEW CODE!
+ *
+ * Use native declared providers
+ * ({@link com.google.devtools.build.lib.packages.NativeClassObjectConstructor}) to
+ * expose providers to both native and Skylark code.
+ */
+ @Deprecated
+ interface WithLegacySkylarkName {
+ String getSkylarkName();
+ }
}