aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar brandjon <brandjon@google.com>2017-12-28 07:38:31 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2017-12-28 07:40:35 -0800
commitd331fa7b642ac5487a3e084ad53117fc3c2cf5df (patch)
tree9955e9e0cea4b4c0e296c901fcdd51593f2f1927
parent3c0f67c07498cc97053505ded617320ec459436c (diff)
Rename some ClassObject/Provider-related methods
The terminology "field" is preferred over "key" for the components of a struct or struct-like object. RELNOTES: None PiperOrigin-RevId: 180269374
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTarget.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/OutputGroupInfo.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/FragmentCollection.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/AbstractConfiguredTarget.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/RuleConfiguredTarget.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java58
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/Info.java44
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/NativeInfo.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/NativeProvider.java18
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/Provider.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/SkylarkInfo.java20
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/SkylarkProvider.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/AliasConfiguredTarget.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/XcTestAppProvider.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/ClassObject.java23
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/DotExpression.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/SkylarkCallbackFunction.java2
-rw-r--r--src/test/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContextTest.java2
-rw-r--r--src/test/java/com/google/devtools/build/lib/packages/SkylarkInfoTest.java4
-rw-r--r--src/test/java/com/google/devtools/build/lib/packages/SkylarkProviderTest.java6
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainSelectionTest.java2
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java2
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java2
-rw-r--r--src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java4
30 files changed, 153 insertions, 153 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTarget.java
index 872a153777..d1aa8878fd 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTarget.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTarget.java
@@ -20,6 +20,7 @@ import com.google.devtools.build.lib.analysis.configuredtargets.InputFileConfigu
import com.google.devtools.build.lib.packages.Target;
import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
import com.google.devtools.build.lib.syntax.ClassObject;
+import com.google.devtools.build.lib.syntax.EvalException;
import javax.annotation.Nullable;
/**
@@ -63,11 +64,11 @@ public interface ConfiguredTarget extends TransitiveInfoCollection, ClassObject,
/**
* Returns keys for a legacy Skylark provider.
*
- * Overrides {@link ClassObject#getKeys()}, but does not allow {@link EvalException} to
+ * Overrides {@link ClassObject#getFieldNames()}, but does not allow {@link EvalException} to
* be thrown.
*/
@Override
- ImmutableCollection<String> getKeys();
+ ImmutableCollection<String> getFieldNames();
/**
* Returns a legacy Skylark provider.
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java
index a9b5461759..9af9811a50 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java
@@ -96,7 +96,7 @@ public final class DefaultInfo extends NativeInfo {
}
@Override
- public ImmutableCollection<String> getKeys() {
+ public ImmutableCollection<String> getFieldNames() {
return KEYS;
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupInfo.java
index 8c313d091d..73c1f8bcfa 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupInfo.java
@@ -252,7 +252,7 @@ public final class OutputGroupInfo extends NativeInfo
}
@Override
- public ImmutableCollection<String> getKeys() {
+ public ImmutableCollection<String> getFieldNames() {
return outputGroups.keySet();
}
@@ -281,8 +281,8 @@ public final class OutputGroupInfo extends NativeInfo
}
@Override
- public String getErrorMessageFormatForInstances() {
- return "Output group %s not present";
+ public String getErrorMessageFormatForUnknownField() {
+ return "Output group '%s' not present";
}
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentCollection.java b/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentCollection.java
index d0a779c1c7..d11e3bd5be 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentCollection.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentCollection.java
@@ -53,21 +53,21 @@ public class FragmentCollection implements ClassObject {
}
@Override
- public ImmutableCollection<String> getKeys() {
+ public ImmutableCollection<String> getFieldNames() {
return ruleContext.getSkylarkFragmentNames(transition);
}
@Override
@Nullable
- public String errorMessage(String name) {
+ public String getErrorMessageForUnknownField(String name) {
return String.format(
"There is no configuration fragment named '%s' in %s configuration. "
+ "Available fragments: %s",
- name, getConfigurationName(transition), printKeys());
+ name, getConfigurationName(transition), fieldsToString());
}
- private String printKeys() {
- return String.format("'%s'", Joiner.on("', '").join(getKeys()));
+ private String fieldsToString() {
+ return String.format("'%s'", Joiner.on("', '").join(getFieldNames()));
}
public static String getConfigurationName(Transition config) {
@@ -76,6 +76,6 @@ public class FragmentCollection implements ClassObject {
@Override
public String toString() {
- return getConfigurationName(transition) + ": [ " + printKeys() + "]";
+ return getConfigurationName(transition) + ": [ " + fieldsToString() + "]";
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/AbstractConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/AbstractConfiguredTarget.java
index ca2fc81fc3..c00f385c8e 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/AbstractConfiguredTarget.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/AbstractConfiguredTarget.java
@@ -152,12 +152,12 @@ public abstract class AbstractConfiguredTarget
}
@Override
- public String errorMessage(String name) {
+ public String getErrorMessageForUnknownField(String name) {
return null;
}
@Override
- public final ImmutableCollection<String> getKeys() {
+ public final ImmutableCollection<String> getFieldNames() {
ImmutableList.Builder<String> result = ImmutableList.builder();
result.addAll(ImmutableList.of(
DATA_RUNFILES_FIELD,
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/RuleConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/RuleConfiguredTarget.java
index 30959f72be..f79f4cf6db 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/RuleConfiguredTarget.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/RuleConfiguredTarget.java
@@ -142,7 +142,7 @@ public final class RuleConfiguredTarget extends AbstractConfiguredTarget {
}
@Override
- public String errorMessage(String name) {
+ public String getErrorMessageForUnknownField(String name) {
return Printer.format("%r (rule '%s') doesn't have provider '%s'",
this, getTarget().getRuleClass(), name);
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java
index 1879227a38..e27d47963e 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java
@@ -1062,11 +1062,11 @@ public class SkylarkRuleClassFunctions {
private void printProtoTextMessage(
ClassObject object, StringBuilder sb, int indent, Location loc) throws EvalException {
- // For determinism sort the keys alphabetically
- List<String> keys = new ArrayList<>(object.getKeys());
- Collections.sort(keys);
- for (String key : keys) {
- printProtoTextMessage(key, object.getValue(key), sb, indent, loc);
+ // For determinism sort the fields alphabetically.
+ List<String> fields = new ArrayList<>(object.getFieldNames());
+ Collections.sort(fields);
+ for (String field : fields) {
+ printProtoTextMessage(field, object.getValue(field), sb, indent, loc);
}
}
@@ -1175,13 +1175,13 @@ public class SkylarkRuleClassFunctions {
sb.append("{");
String join = "";
- for (String subKey : ((ClassObject) value).getKeys()) {
+ for (String field : ((ClassObject) value).getFieldNames()) {
sb.append(join);
join = ",";
sb.append("\"");
- sb.append(subKey);
+ sb.append(field);
sb.append("\":");
- printJson(((ClassObject) value).getValue(subKey), sb, loc, "struct field", subKey);
+ printJson(((ClassObject) value).getValue(field), sb, loc, "struct field", field);
}
sb.append("}");
} else if (value instanceof List) {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java
index 7f3a3b15b2..b398073f70 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java
@@ -66,7 +66,7 @@ public final class SkylarkRuleConfiguredTargetUtil {
private SkylarkRuleConfiguredTargetUtil() {}
- private static final ImmutableSet<String> DEFAULT_PROVIDER_KEYS =
+ private static final ImmutableSet<String> DEFAULT_PROVIDER_FIELDS =
ImmutableSet.of("files", "runfiles", "data_runfiles", "default_runfiles", "executable");
/**
@@ -190,7 +190,7 @@ public final class SkylarkRuleConfiguredTargetUtil {
throws EvalException {
Location insLoc = insStruct.getCreationLoc();
FileTypeSet fileTypeSet = FileTypeSet.ANY_FILE;
- if (insStruct.getKeys().contains("extensions")) {
+ if (insStruct.getFieldNames().contains("extensions")) {
@SuppressWarnings("unchecked")
List<String> exts = cast("extensions", insStruct, SkylarkList.class, String.class, insLoc);
if (exts.isEmpty()) {
@@ -204,12 +204,12 @@ public final class SkylarkRuleConfiguredTargetUtil {
}
}
List<String> dependencyAttributes = Collections.emptyList();
- if (insStruct.getKeys().contains("dependency_attributes")) {
+ if (insStruct.getFieldNames().contains("dependency_attributes")) {
dependencyAttributes =
cast("dependency_attributes", insStruct, SkylarkList.class, String.class, insLoc);
}
List<String> sourceAttributes = Collections.emptyList();
- if (insStruct.getKeys().contains("source_attributes")) {
+ if (insStruct.getFieldNames().contains("source_attributes")) {
sourceAttributes =
cast("source_attributes", insStruct, SkylarkList.class, String.class, insLoc);
}
@@ -280,7 +280,7 @@ public final class SkylarkRuleConfiguredTargetUtil {
// Old-style struct, but it may contain declared providers
oldStyleProviders = struct;
- if (struct.hasKey("providers")) {
+ if (struct.hasField("providers")) {
Iterable iterable = cast("providers", struct, Iterable.class, loc);
for (Object o : iterable) {
Info declaredProvider =
@@ -317,7 +317,7 @@ public final class SkylarkRuleConfiguredTargetUtil {
.getProvider()
.getKey()
.equals(DefaultInfo.PROVIDER.getKey())) {
- parseDefaultProviderKeys(declaredProvider, context, builder);
+ parseDefaultProviderFields(declaredProvider, context, builder);
defaultProviderProvidedExplicitly = true;
} else {
builder.addSkylarkDeclaredProvider(declaredProvider);
@@ -325,31 +325,31 @@ public final class SkylarkRuleConfiguredTargetUtil {
}
if (!defaultProviderProvidedExplicitly) {
- parseDefaultProviderKeys(oldStyleProviders, context, builder);
+ parseDefaultProviderFields(oldStyleProviders, context, builder);
}
- for (String key : oldStyleProviders.getKeys()) {
- if (DEFAULT_PROVIDER_KEYS.contains(key)) {
- // These keys have already been parsed above.
+ for (String field : oldStyleProviders.getFieldNames()) {
+ if (DEFAULT_PROVIDER_FIELDS.contains(field)) {
+ // These fields have already been parsed above.
// If a default provider has been provided explicitly then it's an error that they also
// occur here.
if (defaultProviderProvidedExplicitly) {
throw new EvalException(
loc,
"Provider '"
- + key
+ + field
+ "' should be specified in DefaultInfo if it's provided explicitly.");
}
- } else if (key.equals("output_groups")) {
- addOutputGroups(oldStyleProviders.getValue(key), loc, builder);
- } else if (key.equals("instrumented_files")) {
+ } else if (field.equals("output_groups")) {
+ addOutputGroups(oldStyleProviders.getValue(field), loc, builder);
+ } else if (field.equals("instrumented_files")) {
Info insStruct = cast("instrumented_files", oldStyleProviders, Info.class, loc);
addInstrumentedFiles(insStruct, context.getRuleContext(), builder);
- } else if (isNativeDeclaredProviderWithLegacySkylarkName(oldStyleProviders.getValue(key))) {
- builder.addNativeDeclaredProvider((Info) oldStyleProviders.getValue(key));
- } else if (!key.equals("providers")) {
+ } else if (isNativeDeclaredProviderWithLegacySkylarkName(oldStyleProviders.getValue(field))) {
+ builder.addNativeDeclaredProvider((Info) oldStyleProviders.getValue(field));
+ } else if (!field.equals("providers")) {
// We handled providers already.
- builder.addSkylarkTransitiveInfo(key, oldStyleProviders.getValue(key), loc);
+ builder.addSkylarkTransitiveInfo(field, oldStyleProviders.getValue(field), loc);
}
}
}
@@ -362,10 +362,10 @@ public final class SkylarkRuleConfiguredTargetUtil {
}
/**
- * Parses keys of (not necessarily a default) provider. If it is an actual default provider,
- * throws an {@link EvalException} if there are unknown keys.
+ * Parses fields of (not necessarily a default) provider. If it is an actual default provider,
+ * throws an {@link EvalException} if there are unknown fields.
*/
- private static void parseDefaultProviderKeys(
+ private static void parseDefaultProviderFields(
Info provider, SkylarkRuleContext context, RuleConfiguredTargetBuilder builder)
throws EvalException {
SkylarkNestedSet files = null;
@@ -376,23 +376,23 @@ public final class SkylarkRuleConfiguredTargetUtil {
Location loc = provider.getCreationLoc();
- for (String key : provider.getKeys()) {
- if (key.equals("files")) {
+ for (String field : provider.getFieldNames()) {
+ if (field.equals("files")) {
files = cast("files", provider, SkylarkNestedSet.class, Artifact.class, loc);
- } else if (key.equals("runfiles")) {
+ } else if (field.equals("runfiles")) {
statelessRunfiles = cast("runfiles", provider, Runfiles.class, loc);
- } else if (key.equals("data_runfiles")) {
+ } else if (field.equals("data_runfiles")) {
dataRunfiles = cast("data_runfiles", provider, Runfiles.class, loc);
- } else if (key.equals("default_runfiles")) {
+ } else if (field.equals("default_runfiles")) {
defaultRunfiles = cast("default_runfiles", provider, Runfiles.class, loc);
- } else if (key.equals("executable")) {
+ } else if (field.equals("executable")) {
executable = cast("executable", provider, Artifact.class, loc);
} else if (provider
.getProvider()
.getKey()
.equals(DefaultInfo.PROVIDER.getKey())) {
- // Custom keys are not allowed for default providers
- throw new EvalException(loc, "Invalid key for default provider: " + key);
+ // Custom fields are not allowed for default providers
+ throw new EvalException(loc, "Invalid field for default provider: " + field);
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java
index 1bcc46c5ed..3f8a54a71b 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java
@@ -366,7 +366,7 @@ public final class SkylarkRuleContext implements SkylarkValue {
}
@Override
- public ImmutableCollection<String> getKeys() throws EvalException {
+ public ImmutableCollection<String> getFieldNames() throws EvalException {
checkMutable();
ImmutableList.Builder<String> result = ImmutableList.builder();
if (context.isExecutable() && executableCreated) {
@@ -391,7 +391,7 @@ public final class SkylarkRuleContext implements SkylarkValue {
@Nullable
@Override
- public String errorMessage(String name) {
+ public String getErrorMessageForUnknownField(String name) {
return String.format(
"No attribute '%s' in outputs. Make sure you declared a rule output with this name.",
name);
@@ -407,16 +407,16 @@ public final class SkylarkRuleContext implements SkylarkValue {
}
boolean first = true;
printer.append("ctx.outputs(");
- // Sort by key to ensure deterministic output.
+ // Sort by field name to ensure deterministic output.
try {
- for (String key : Ordering.natural().sortedCopy(getKeys())) {
+ for (String field : Ordering.natural().sortedCopy(getFieldNames())) {
if (!first) {
printer.append(", ");
}
first = false;
- printer.append(key);
+ printer.append(field);
printer.append(" = ");
- printer.repr(getValue(key));
+ printer.repr(getValue(field));
}
printer.append(")");
} catch (EvalException e) {
diff --git a/src/main/java/com/google/devtools/build/lib/packages/Info.java b/src/main/java/com/google/devtools/build/lib/packages/Info.java
index 550ef181ea..b885d65581 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/Info.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/Info.java
@@ -70,14 +70,14 @@ public abstract class Info implements ClassObject, SkylarkValue, Serializable {
public Info(Provider provider, @Nullable Location location) {
this.provider = provider;
this.creationLoc = location == null ? Location.BUILTIN : location;
- this.errorMessageFormatForUnknownField = provider.getErrorMessageFormatForInstances();
+ this.errorMessageFormatForUnknownField = provider.getErrorMessageFormatForUnknownField();
}
/** Creates a built-in struct (i.e. without a Skylark creation location). */
public Info(Provider provider) {
this.provider = provider;
this.creationLoc = Location.BUILTIN;
- this.errorMessageFormatForUnknownField = provider.getErrorMessageFormatForInstances();
+ this.errorMessageFormatForUnknownField = provider.getErrorMessageFormatForUnknownField();
}
/**
@@ -113,10 +113,9 @@ public abstract class Info implements ClassObject, SkylarkValue, Serializable {
/**
* Returns whether the given field name exists.
*
- * <p>The "key" nomenclature is historic and for consistency with {@link ClassObject}.
+ * <p>This conceptually extends the API for {@link ClassObject}.
*/
- // TODO(bazel-team): Rename to hasField(), and likewise in ClassObject.
- public abstract boolean hasKey(String name);
+ public abstract boolean hasField(String name);
/** Returns a value and try to cast it into specified type */
public <T> T getValue(String key, Class<T> type) throws EvalException {
@@ -144,11 +143,11 @@ public abstract class Info implements ClassObject, SkylarkValue, Serializable {
/**
* Returns the fields of this struct.
*
- * Overrides {@link ClassObject#getKeys()}, but does not allow {@link EvalException} to
+ * Overrides {@link ClassObject#getFieldNames()}, but does not allow {@link EvalException} to
* be thrown.
*/
@Override
- public abstract ImmutableCollection<String> getKeys();
+ public abstract ImmutableCollection<String> getFieldNames();
/**
* Returns the value associated with the name field in this struct,
@@ -161,11 +160,10 @@ public abstract class Info implements ClassObject, SkylarkValue, Serializable {
@Override
public abstract Object getValue(String name);
- // TODO(bazel-team): Rename to getErrorMessageForUnknownField.
@Override
- public String errorMessage(String name) {
- String suffix =
- "Available attributes: " + Joiner.on(", ").join(Ordering.natural().sortedCopy(getKeys()));
+ public String getErrorMessageForUnknownField(String name) {
+ String suffix = "Available attributes: "
+ + Joiner.on(", ").join(Ordering.natural().sortedCopy(getFieldNames()));
return String.format(errorMessageFormatForUnknownField, name) + "\n" + suffix;
}
@@ -181,12 +179,12 @@ public abstract class Info implements ClassObject, SkylarkValue, Serializable {
if (!this.provider.equals(other.provider)) {
return false;
}
- // Compare objects' keys and values
- if (!this.getKeys().equals(other.getKeys())) {
+ // Compare objects' fields and their values
+ if (!this.getFieldNames().equals(other.getFieldNames())) {
return false;
}
- for (String key : getKeys()) {
- if (!this.getValue(key).equals(other.getValue(key))) {
+ for (String field : getFieldNames()) {
+ if (!this.getValue(field).equals(other.getValue(field))) {
return false;
}
}
@@ -195,13 +193,13 @@ public abstract class Info implements ClassObject, SkylarkValue, Serializable {
@Override
public int hashCode() {
- List<String> keys = new ArrayList<>(getKeys());
- Collections.sort(keys);
+ List<String> fields = new ArrayList<>(getFieldNames());
+ Collections.sort(fields);
List<Object> objectsToHash = new ArrayList<>();
objectsToHash.add(provider);
- for (String key : keys) {
- objectsToHash.add(key);
- objectsToHash.add(getValue(key));
+ for (String field : fields) {
+ objectsToHash.add(field);
+ objectsToHash.add(getValue(field));
}
return Objects.hashCode(objectsToHash.toArray());
}
@@ -215,14 +213,14 @@ public abstract class Info implements ClassObject, SkylarkValue, Serializable {
boolean first = true;
printer.append("struct(");
// Sort by key to ensure deterministic output.
- for (String key : Ordering.natural().sortedCopy(getKeys())) {
+ for (String fieldName : Ordering.natural().sortedCopy(getFieldNames())) {
if (!first) {
printer.append(", ");
}
first = false;
- printer.append(key);
+ printer.append(fieldName);
printer.append(" = ");
- printer.repr(getValue(key));
+ printer.repr(getValue(fieldName));
}
printer.append(")");
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/NativeInfo.java b/src/main/java/com/google/devtools/build/lib/packages/NativeInfo.java
index d52fa87a1d..e1035c86e9 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/NativeInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/NativeInfo.java
@@ -29,12 +29,12 @@ public class NativeInfo extends Info {
}
@Override
- public boolean hasKey(String name) {
+ public boolean hasField(String name) {
return values.containsKey(name);
}
@Override
- public ImmutableCollection<String> getKeys() {
+ public ImmutableCollection<String> getFieldNames() {
return values.keySet();
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/NativeProvider.java b/src/main/java/com/google/devtools/build/lib/packages/NativeProvider.java
index 93bbcfe025..0f78e4659c 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/NativeProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/NativeProvider.java
@@ -40,16 +40,16 @@ import javax.annotation.Nullable;
* #createInstanceFromSkylark(Object[], Location)} (see {@link #STRUCT} for an example.
*/
@Immutable
-public abstract class NativeProvider<VALUE extends Info> extends Provider {
+public abstract class NativeProvider<V extends Info> extends Provider {
private final NativeKey key;
- private final String errorMessageForInstances;
+ private final String errorMessageFormatForUnknownField;
/** "struct" function. */
public static final StructConstructor STRUCT = new StructConstructor();
- private final Class<VALUE> valueClass;
+ private final Class<V> valueClass;
- public Class<VALUE> getValueClass() {
+ public Class<V> getValueClass() {
return valueClass;
}
@@ -94,18 +94,18 @@ public abstract class NativeProvider<VALUE extends Info> extends Provider {
private static final FunctionSignature.WithValues<Object, SkylarkType> SIGNATURE =
FunctionSignature.WithValues.create(FunctionSignature.KWARGS);
- protected NativeProvider(Class<VALUE> clazz, String name) {
+ protected NativeProvider(Class<V> clazz, String name) {
this(clazz, name, SIGNATURE);
}
protected NativeProvider(
- Class<VALUE> valueClass,
+ Class<V> valueClass,
String name,
FunctionSignature.WithValues<Object, SkylarkType> signature) {
super(name, signature, Location.BUILTIN);
key = new NativeKey(name, getClass());
this.valueClass = valueClass;
- errorMessageForInstances = String.format("'%s' object has no attribute '%%s'", name);
+ errorMessageFormatForUnknownField = String.format("'%s' object has no attribute '%%s'", name);
}
/**
@@ -136,8 +136,8 @@ public abstract class NativeProvider<VALUE extends Info> extends Provider {
}
@Override
- public String getErrorMessageFormatForInstances() {
- return errorMessageForInstances;
+ public String getErrorMessageFormatForUnknownField() {
+ return errorMessageFormatForUnknownField;
}
@Override
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 028a03d446..dc06b664ee 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
@@ -17,6 +17,7 @@ import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
import com.google.devtools.build.lib.syntax.BaseFunction;
+import com.google.devtools.build.lib.syntax.ClassObject;
import com.google.devtools.build.lib.syntax.Environment;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.FuncallExpression;
@@ -93,12 +94,12 @@ public abstract class Provider extends BaseFunction {
public abstract String getPrintableName();
/**
- * Returns an error message format for instances.
+ * Returns an error message format string for instances to use for their {@link
+ * ClassObject#getErrorMessageForUnknownField(String)}.
*
- * <p>Must contain one {@code '%s'} placeholder for field name.
+ * <p>The format string must contain one {@code '%s'} placeholder for the field name.
*/
- // TODO(bazel-team): Rename to getErrorMessageFormatForUnknownField().
- public abstract String getErrorMessageFormatForInstances();
+ public abstract String getErrorMessageFormatForUnknownField();
public SkylarkProviderIdentifier id() {
return SkylarkProviderIdentifier.forKey(getKey());
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 2025b1e5ba..cc5d3ea93d 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
@@ -85,12 +85,12 @@ public abstract class SkylarkInfo extends Info implements Concatable {
}
@Override
- public boolean hasKey(String name) {
+ public boolean hasField(String name) {
return values.containsKey(name);
}
@Override
- public ImmutableCollection<String> getKeys() {
+ public ImmutableCollection<String> getFieldNames() {
return values.keySet();
}
@@ -133,14 +133,14 @@ public abstract class SkylarkInfo extends Info implements Concatable {
}
@Override
- public boolean hasKey(String name) {
+ public boolean hasField(String name) {
Integer index = layout.get(name);
return index != null && values[index] != null;
}
@Override
- public ImmutableCollection<String> getKeys() {
- ImmutableSet.Builder<String> result = new ImmutableSet.Builder();
+ public ImmutableCollection<String> getFieldNames() {
+ ImmutableSet.Builder<String> result = ImmutableSet.builder();
for (Map.Entry<String, Integer> entry : layout.entrySet()) {
if (values[entry.getValue()] != null) {
result.add(entry.getKey());
@@ -175,7 +175,7 @@ public abstract class SkylarkInfo extends Info implements Concatable {
}
SetView<String> commonFields =
Sets.intersection(
- ImmutableSet.copyOf(lval.getKeys()), ImmutableSet.copyOf(rval.getKeys()));
+ ImmutableSet.copyOf(lval.getFieldNames()), ImmutableSet.copyOf(rval.getFieldNames()));
if (!commonFields.isEmpty()) {
throw new EvalException(
loc,
@@ -198,11 +198,11 @@ public abstract class SkylarkInfo extends Info implements Concatable {
compactLeft.getProvider(), compactLeft.layout, newValues, loc);
}
ImmutableMap.Builder<String, Object> newValues = ImmutableMap.builder();
- for (String key : lval.getKeys()) {
- newValues.put(key, lval.getValue(key));
+ for (String field : lval.getFieldNames()) {
+ newValues.put(field, lval.getValue(field));
}
- for (String key : rval.getKeys()) {
- newValues.put(key, rval.getValue(key));
+ for (String field : rval.getFieldNames()) {
+ newValues.put(field, rval.getValue(field));
}
return new MapBackedSkylarkInfo(provider, newValues.build(), loc);
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/SkylarkProvider.java b/src/main/java/com/google/devtools/build/lib/packages/SkylarkProvider.java
index 1a94c9cf2b..557b1ca3e8 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/SkylarkProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/SkylarkProvider.java
@@ -48,6 +48,7 @@ public class SkylarkProvider extends Provider implements SkylarkExportable {
private static final FunctionSignature.WithValues<Object, SkylarkType> SCHEMALESS_SIGNATURE =
FunctionSignature.WithValues.create(FunctionSignature.KWARGS);
+ /** Default value for {@link #errorMessageFormatForUnknownField}. */
private static final String DEFAULT_ERROR_MESSAGE_FORMAT = "Object has no '%s' attribute.";
/**
@@ -65,7 +66,7 @@ public class SkylarkProvider extends Provider implements SkylarkExportable {
private SkylarkKey key;
/** Error message format. Reassigned upon exporting. */
- private String errorMessageFormatForInstances;
+ private String errorMessageFormatForUnknownField;
/**
* Creates an unexported {@link SkylarkProvider} with no schema.
@@ -132,9 +133,9 @@ public class SkylarkProvider extends Provider implements SkylarkExportable {
super(/*name=*/ null, buildSignature(fields), location);
this.layout = buildLayout(fields);
this.key = key; // possibly null
- this.errorMessageFormatForInstances =
+ this.errorMessageFormatForUnknownField =
key == null ? DEFAULT_ERROR_MESSAGE_FORMAT
- : makeErrorMessageFormatForInstances(key.getExportedName());
+ : makeErrorMessageFormatForUnknownField(key.getExportedName());
}
@@ -209,18 +210,18 @@ public class SkylarkProvider extends Provider implements SkylarkExportable {
}
@Override
- public String getErrorMessageFormatForInstances() {
- return errorMessageFormatForInstances;
+ public String getErrorMessageFormatForUnknownField() {
+ return errorMessageFormatForUnknownField;
}
@Override
public void export(Label extensionLabel, String exportedName) {
Preconditions.checkState(!isExported());
this.key = new SkylarkKey(extensionLabel, exportedName);
- this.errorMessageFormatForInstances = makeErrorMessageFormatForInstances(exportedName);
+ this.errorMessageFormatForUnknownField = makeErrorMessageFormatForUnknownField(exportedName);
}
- private static String makeErrorMessageFormatForInstances(String exportedName) {
+ private static String makeErrorMessageFormatForUnknownField(String exportedName) {
return String.format("'%s' object has no attribute '%%s'", exportedName);
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/AliasConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/rules/AliasConfiguredTarget.java
index 0c2b15e467..ff5c287f36 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/AliasConfiguredTarget.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/AliasConfiguredTarget.java
@@ -122,12 +122,12 @@ public final class AliasConfiguredTarget implements ConfiguredTarget, ClassObjec
}
@Override
- public ImmutableCollection<String> getKeys() {
- return actual.getKeys();
+ public ImmutableCollection<String> getFieldNames() {
+ return actual.getFieldNames();
}
@Override
- public String errorMessage(String name) {
+ public String getErrorMessageForUnknownField(String name) {
// Use the default error message.
return null;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
index 1eeb89064b..9ac9dcc4b4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
@@ -1010,8 +1010,8 @@ public final class ObjcProvider extends NativeInfo {
}
@Override
- public String getErrorMessageFormatForInstances() {
- return "ObjcProvider field %s could not be instantiated";
+ public String getErrorMessageFormatForUnknownField() {
+ return "ObjcProvider field '%s' could not be instantiated";
}
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/XcTestAppProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/XcTestAppProvider.java
index 6dc6db113b..09bbad98dc 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/XcTestAppProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/XcTestAppProvider.java
@@ -94,8 +94,8 @@ public final class XcTestAppProvider extends NativeInfo {
}
@Override
- public String getErrorMessageFormatForInstances() {
- return "XcTestAppProvider field %s could not be instantiated";
+ public String getErrorMessageFormatForUnknownField() {
+ return "XcTestAppProvider field '%s' could not be instantiated";
}
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java
index 24112a4fae..d66d30bb55 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java
@@ -116,11 +116,11 @@ public class SkylarkAspectFactory implements ConfiguredAspectFactory {
} else {
Info struct = (Info) aspectSkylarkObject;
Location loc = struct.getCreationLoc();
- for (String key : struct.getKeys()) {
- if (key.equals("output_groups")) {
- addOutputGroups(struct.getValue(key), loc, builder);
- } else if (key.equals("providers")) {
- Object value = struct.getValue(key);
+ for (String field : struct.getFieldNames()) {
+ if (field.equals("output_groups")) {
+ addOutputGroups(struct.getValue(field), loc, builder);
+ } else if (field.equals("providers")) {
+ Object value = struct.getValue(field);
Iterable providers =
SkylarkType.cast(
value,
@@ -131,7 +131,7 @@ public class SkylarkAspectFactory implements ConfiguredAspectFactory {
EvalUtils.getDataTypeName(value, false));
addDeclaredProviders(builder, providers);
} else {
- builder.addSkylarkTransitiveInfo(key, struct.getValue(key), loc);
+ builder.addSkylarkTransitiveInfo(field, struct.getValue(field), loc);
}
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/ClassObject.java b/src/main/java/com/google/devtools/build/lib/syntax/ClassObject.java
index 93cc35c12f..522ecaa052 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/ClassObject.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/ClassObject.java
@@ -11,20 +11,17 @@
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
+
package com.google.devtools.build.lib.syntax;
import com.google.common.collect.ImmutableCollection;
import javax.annotation.Nullable;
-/**
- * An interface for objects behaving like Skylark structs.
- */
-// TODO(bazel-team): type checks
+/** An interface for Skylark objects (such as structs) that have fields. */
public interface ClassObject {
/**
- * Returns the value associated with the name field in this struct,
- * or null if the field does not exist.
+ * Returns the value of the field with the given name, or null if the field does not exist.
*
* @throws EvalException if a user-visible error occurs (other than non-existent field).
*/
@@ -32,15 +29,17 @@ public interface ClassObject {
Object getValue(String name) throws EvalException;
/**
- * Returns the fields of this struct.
+ * Returns the names of the fields of this struct, in some canonical order.
*
- * @throws EvalException if a user-visible error occurs.
+ * @throws EvalException if a user-visible error occurs
*/
- ImmutableCollection<String> getKeys() throws EvalException;
+ ImmutableCollection<String> getFieldNames() throws EvalException;
/**
- * Returns a customized error message to print if the name is not a valid struct field
- * of this struct, or returns null to use the default error message.
+ * Returns the error message to print for an attempt to access an undefined field.
+ *
+ * <p>May return null to use a default error message.
*/
- @Nullable String errorMessage(String name);
+ @Nullable
+ String getErrorMessageForUnknownField(String field);
}
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/DotExpression.java b/src/main/java/com/google/devtools/build/lib/syntax/DotExpression.java
index 970d0ca14c..8aa0ad92ec 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/DotExpression.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/DotExpression.java
@@ -65,11 +65,11 @@ public final class DotExpression extends Expression {
}
String suffix = "";
if (objValue instanceof ClassObject) {
- String customErrorMessage = ((ClassObject) objValue).errorMessage(name);
+ String customErrorMessage = ((ClassObject) objValue).getErrorMessageForUnknownField(name);
if (customErrorMessage != null) {
throw new EvalException(loc, customErrorMessage);
}
- suffix = SpellChecker.didYouMean(name, ((ClassObject) objValue).getKeys());
+ suffix = SpellChecker.didYouMean(name, ((ClassObject) objValue).getFieldNames());
}
throw new EvalException(
loc,
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java b/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
index 657d28d4da..f3c0d5f3c1 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
@@ -2066,7 +2066,7 @@ public class MethodLibrary {
// Order the fields alphabetically.
Set<String> fields = new TreeSet<>();
if (object instanceof ClassObject) {
- fields.addAll(((ClassObject) object).getKeys());
+ fields.addAll(((ClassObject) object).getFieldNames());
}
fields.addAll(Runtime.getBuiltinRegistry().getFunctionNames(object.getClass()));
fields.addAll(FuncallExpression.getMethodNames(object.getClass()));
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkCallbackFunction.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkCallbackFunction.java
index 719c94b961..60c6aece91 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkCallbackFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkCallbackFunction.java
@@ -64,7 +64,7 @@ public class SkylarkCallbackFunction {
String name = names.get(pos);
Object value = ctx.getValue(name);
if (value == null) {
- throw new IllegalArgumentException(ctx.errorMessage(name));
+ throw new IllegalArgumentException(ctx.getErrorMessageForUnknownField(name));
}
builder.add(value);
}
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContextTest.java b/src/test/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContextTest.java
index 7b716c3f3a..29ed8aad2e 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContextTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContextTest.java
@@ -107,7 +107,7 @@ public class SkylarkRepositoryContextTest {
ImmutableMap.<String, Object>of("name", "test", "foo", "bar"),
Attribute.attr("foo", Type.STRING).build());
- assertThat(context.getAttr().getKeys()).contains("foo");
+ assertThat(context.getAttr().getFieldNames()).contains("foo");
assertThat(context.getAttr().getValue("foo")).isEqualTo("bar");
}
diff --git a/src/test/java/com/google/devtools/build/lib/packages/SkylarkInfoTest.java b/src/test/java/com/google/devtools/build/lib/packages/SkylarkInfoTest.java
index b57b894b2c..cbcfa4835d 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/SkylarkInfoTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/SkylarkInfoTest.java
@@ -101,7 +101,7 @@ public class SkylarkInfoTest {
new CompactSkylarkInfo(provider, layout, new Object[] {null, 5}, Location.BUILTIN);
Concatable result = p1.getConcatter().concat(p1, p2, Location.BUILTIN);
assertThat(result).isInstanceOf(MapBackedSkylarkInfo.class);
- assertThat(((SkylarkInfo) result).getKeys()).containsExactly("f1", "f2");
+ assertThat(((SkylarkInfo) result).getFieldNames()).containsExactly("f1", "f2");
assertThat(((SkylarkInfo) result).getValue("f1")).isEqualTo(4);
assertThat(((SkylarkInfo) result).getValue("f2")).isEqualTo(5);
}
@@ -117,7 +117,7 @@ public class SkylarkInfoTest {
new CompactSkylarkInfo(provider, layout, new Object[] {null, 5}, Location.BUILTIN);
Concatable result = p1.getConcatter().concat(p1, p2, Location.BUILTIN);
assertThat(result).isInstanceOf(CompactSkylarkInfo.class);
- assertThat(((CompactSkylarkInfo) result).getKeys()).containsExactly("f1", "f2");
+ assertThat(((CompactSkylarkInfo) result).getFieldNames()).containsExactly("f1", "f2");
assertThat(((CompactSkylarkInfo) result).getValue("f1")).isEqualTo(4);
assertThat(((CompactSkylarkInfo) result).getValue("f2")).isEqualTo(5);
}
diff --git a/src/test/java/com/google/devtools/build/lib/packages/SkylarkProviderTest.java b/src/test/java/com/google/devtools/build/lib/packages/SkylarkProviderTest.java
index 171bb9f439..26c11763b5 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/SkylarkProviderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/SkylarkProviderTest.java
@@ -37,7 +37,7 @@ public final class SkylarkProviderTest {
assertThat(provider.isExported()).isFalse();
assertThat(provider.getName()).isEqualTo("<no name>");
assertThat(provider.getPrintableName()).isEqualTo("<no name>");
- assertThat(provider.getErrorMessageFormatForInstances())
+ assertThat(provider.getErrorMessageFormatForUnknownField())
.isEqualTo("Object has no '%s' attribute.");
assertThat(provider.isImmutable()).isFalse();
assertThat(Printer.repr(provider)).isEqualTo("<provider>");
@@ -53,7 +53,7 @@ public final class SkylarkProviderTest {
assertThat(provider.isExported()).isTrue();
assertThat(provider.getName()).isEqualTo("prov");
assertThat(provider.getPrintableName()).isEqualTo("prov");
- assertThat(provider.getErrorMessageFormatForInstances())
+ assertThat(provider.getErrorMessageFormatForUnknownField())
.isEqualTo("'prov' object has no attribute '%s'");
assertThat(provider.isImmutable()).isTrue();
assertThat(Printer.repr(provider)).isEqualTo("<provider>");
@@ -140,7 +140,7 @@ public final class SkylarkProviderTest {
/** Asserts that a {@link SkylarkInfo} has fields a=1, b=2, c=3 (and nothing else). */
private static void assertHasExactlyValuesA1B2C3(SkylarkInfo info) {
- assertThat(info.getKeys()).containsExactly("a", "b", "c");
+ assertThat(info.getFieldNames()).containsExactly("a", "b", "c");
assertThat(info.getValue("a")).isEqualTo(1);
assertThat(info.getValue("b")).isEqualTo(2);
assertThat(info.getValue("c")).isEqualTo(3);
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainSelectionTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainSelectionTest.java
index 7ba0faa6e0..94ff70e6c4 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainSelectionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainSelectionTest.java
@@ -124,7 +124,7 @@ public class CcToolchainSelectionTest extends BuildViewTestCase {
getRuleContext(target).getToolchainContext().getResolvedToolchainProviders();
ToolchainInfo toolchain =
providers.getForToolchainType(Label.parseAbsolute(CPP_TOOLCHAIN_TYPE));
- assertThat(toolchain.getKeys()).isEmpty();
+ assertThat(toolchain.getFieldNames()).isEmpty();
}
@Test
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
index 87561bd3b7..930ba2586c 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
@@ -1051,7 +1051,7 @@ public class SkylarkRuleClassFunctionsTest extends SkylarkTestCase {
"y = struct(c = 1, d = 2)",
"z = x + y\n");
Info z = (Info) lookup("z");
- assertThat(z.getKeys()).isEqualTo(ImmutableSet.of("a", "b", "c", "d"));
+ assertThat(z.getFieldNames()).isEqualTo(ImmutableSet.of("a", "b", "c", "d"));
}
@Test
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
index 8dfb22dc5a..877bcf8786 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
@@ -1186,7 +1186,7 @@ public class SkylarkRuleImplementationFunctionsTest extends SkylarkTestCase {
getConfiguredTarget("//test:my_rule");
fail();
} catch (AssertionError expected) {
- assertThat(expected).hasMessageThat().contains("Invalid key for default provider: foo");
+ assertThat(expected).hasMessageThat().contains("Invalid field for default provider: foo");
}
}
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
index 8aaeb88b00..2f9742c117 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
@@ -235,12 +235,12 @@ public class SkylarkEvaluationTest extends EvaluationTest {
}
@Override
- public ImmutableCollection<String> getKeys() {
+ public ImmutableCollection<String> getFieldNames() {
return ImmutableList.of("field", "nset");
}
@Override
- public String errorMessage(String name) {
+ public String getErrorMessageForUnknownField(String name) {
return null;
}
}