aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/packages/BuildType.java
diff options
context:
space:
mode:
authorGravatar vladmos <vladmos@google.com>2017-07-06 17:19:32 -0400
committerGravatar John Cater <jcater@google.com>2017-07-07 07:08:02 -0400
commit7e0f3329834029c75a4057854f18e8443e72742e (patch)
tree5a535e23b0d56ec0d5223e51c24bf0514e3c6aa2 /src/main/java/com/google/devtools/build/lib/packages/BuildType.java
parent58dc6b98f92c88bd788b6459a2e26101c99f245a (diff)
Clean up string representations for select values
If --incompatible_descriptive_string_representations is passed, select values are converted to strings using `str`, `repr` and `print` functions differently: "select(...)" instead of "selector(...)". PiperOrigin-RevId: 161129809
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/packages/BuildType.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/BuildType.java16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/BuildType.java b/src/main/java/com/google/devtools/build/lib/packages/BuildType.java
index 418ac4d48f..70f6ba49ac 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/BuildType.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/BuildType.java
@@ -23,6 +23,8 @@ import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
import com.google.devtools.build.lib.packages.License.DistributionType;
import com.google.devtools.build.lib.packages.License.LicenseParsingException;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.Printer;
import com.google.devtools.build.lib.syntax.Printer.BasePrinter;
@@ -461,7 +463,7 @@ public final class BuildType {
* {@code attr = rawValue + select(...) + select(...) + ..."} syntax. For consistency's
* sake, raw values are stored as selects with only a default condition.
*/
- public static final class SelectorList<T> {
+ public static final class SelectorList<T> implements SkylarkValue {
private final Type<T> originalType;
private final List<Selector<T>> elements;
@@ -525,6 +527,16 @@ public final class BuildType {
@Override
public String toString() {
+ return Printer.repr(this);
+ }
+
+ @Override
+ public boolean isImmutable() {
+ return false;
+ }
+
+ @Override
+ public void repr(SkylarkPrinter printer) {
// Convert to a lib.syntax.SelectorList to guarantee consistency with callers that serialize
// directly on that type.
List<SelectorValue> selectorValueList = new ArrayList<>();
@@ -532,7 +544,7 @@ public final class BuildType {
selectorValueList.add(new SelectorValue(element.getEntries(), element.getNoMatchError()));
}
try {
- return com.google.devtools.build.lib.syntax.SelectorList.of(selectorValueList).toString();
+ printer.repr(com.google.devtools.build.lib.syntax.SelectorList.of(selectorValueList));
} catch (EvalException e) {
throw new IllegalStateException("this list should have been validated on creation");
}