Separate Info object semantics from Struct object semantics.
Info objects are objects that are created by Provider instances, and Struct objects are created by calls to struct(). There's no real reason these two sets of semantics must be bound together.
This change demonstrates separated semantics by migrating ObjcProvider to be no longer a struct. This means that ObjcProvider no longer has methods to_json() and to_proto(); this should not be considered a breaking change, however, because prior to this change, calling those methods on an ObjcProvider would always result in a thrown error.
RELNOTES: None.
PiperOrigin-RevId: 209210876
diff --git a/src/main/java/com/google/devtools/build/lib/packages/Provider.java b/src/main/java/com/google/devtools/build/lib/packages/Provider.java
index 895240a..2ef9cca 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/Provider.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/Provider.java
@@ -19,7 +19,7 @@
import com.google.devtools.build.lib.syntax.ClassObject;
/**
- * Declared Provider (a constructor for {@link Info}).
+ * Declared Provider (a constructor for {@link InfoInterface}).
*
* <p>Declared providers can be declared either natively ({@link NativeProvider} or in Skylark
* {@link SkylarkProvider}.
@@ -27,7 +27,7 @@
* <p>{@link Provider} serves both as "type identifier" for declared provider instances and as a
* function that can be called to construct a provider. To the Skylark user, there are "providers"
* and "provider instances"; the former is a Java instance of this class, and the latter is a Java
- * instance of {@link Info}.
+ * instance of {@link InfoInterface}.
*
* <p>Prefer to use {@link Key} as a serializable identifier of {@link Provider}. In particular,
* {@link Key} should be used in all data structures exposed to Skyframe.