diff options
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.java | 28 |
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; } |