Add logic for skylark options to all BuildOptions mechanics (construction, diff-ing, reconstruction, serialization, etc). Get the new skylark information from an OptionsProvider (the same way native options are retrieved). Rename the <code>getOptions()</code> method in BuildOptions to <code>getNativeOptions</code> to better reflect this new information being stored in BuildOptions.
PiperOrigin-RevId: 209841664
diff --git a/src/main/java/com/google/devtools/common/options/OptionsBase.java b/src/main/java/com/google/devtools/common/options/OptionsBase.java
index 9496c65..ce66e66 100644
--- a/src/main/java/com/google/devtools/common/options/OptionsBase.java
+++ b/src/main/java/com/google/devtools/common/options/OptionsBase.java
@@ -91,8 +91,13 @@
*/
public final String cacheKey() {
StringBuilder result = new StringBuilder(getClass().getName()).append("{");
+ result.append(mapToCacheKey(asMap()));
+ return result.append("}").toString();
+ }
- for (Map.Entry<String, Object> entry : asMap().entrySet()) {
+ public static String mapToCacheKey(Map<String, Object> optionsMap) {
+ StringBuilder result = new StringBuilder();
+ for (Map.Entry<String, Object> entry : optionsMap.entrySet()) {
result.append(entry.getKey()).append("=");
Object value = entry.getValue();
@@ -110,15 +115,12 @@
}
result.append(", ");
}
-
- return result.append("}").toString();
+ return result.toString();
}
@Override
public final boolean equals(Object that) {
- return that != null &&
- this.getClass() == that.getClass() &&
- this.asMap().equals(((OptionsBase) that).asMap());
+ return that instanceof OptionsBase && this.asMap().equals(((OptionsBase) that).asMap());
}
@Override