aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/packages/SkylarkInfo.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/packages/SkylarkInfo.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/SkylarkInfo.java28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/SkylarkInfo.java b/src/main/java/com/google/devtools/build/lib/packages/SkylarkInfo.java
index 5445f80f64..a2da054efa 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/SkylarkInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/SkylarkInfo.java
@@ -17,6 +17,7 @@ package com.google.devtools.build.lib.packages;
import com.google.common.base.Joiner;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableCollection;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
@@ -27,6 +28,7 @@ import com.google.devtools.build.lib.syntax.Concatable;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.EvalUtils;
import java.util.Arrays;
+import java.util.List;
import java.util.Map;
import javax.annotation.Nullable;
@@ -71,6 +73,13 @@ public abstract class SkylarkInfo extends Info implements Concatable {
*/
protected abstract Iterable<Object> getValues();
+ /**
+ * Returns the custom (i.e. per-instance, as opposed to per-provider-type) error message string
+ * format used by this provider instance, or null if not set.
+ */
+ @Nullable
+ public abstract String getCustomErrorMessageFormatForUnknownField();
+
/** Returns the layout for this provider if it is schemaful, null otherwise. */
@Nullable
public abstract Layout getLayout();
@@ -136,6 +145,15 @@ public abstract class SkylarkInfo extends Info implements Concatable {
}
/**
+ * Returns the concrete implementation classes of this abstract class.
+ *
+ * <p>This is useful for code that depends on reflection.
+ */
+ public static List<Class<? extends SkylarkInfo>> getImplementationClasses() {
+ return ImmutableList.of(MapBackedSkylarkInfo.class, CompactSkylarkInfo.class);
+ }
+
+ /**
* A specification of what fields a provider instance has, and how they are ordered in an
* array-backed implementation.
*
@@ -261,6 +279,11 @@ public abstract class SkylarkInfo extends Info implements Concatable {
}
@Override
+ public String getCustomErrorMessageFormatForUnknownField() {
+ return errorMessageFormatForUnknownField;
+ }
+
+ @Override
public Layout getLayout() {
return null;
}
@@ -318,6 +341,11 @@ public abstract class SkylarkInfo extends Info implements Concatable {
}
@Override
+ public String getCustomErrorMessageFormatForUnknownField() {
+ return null;
+ }
+
+ @Override
public Layout getLayout() {
return layout;
}