diff options
author | 2017-07-06 17:19:32 -0400 | |
---|---|---|
committer | 2017-07-07 07:08:02 -0400 | |
commit | 7e0f3329834029c75a4057854f18e8443e72742e (patch) | |
tree | 5a535e23b0d56ec0d5223e51c24bf0514e3c6aa2 /src/main/java/com/google/devtools/build/lib/packages/BuildType.java | |
parent | 58dc6b98f92c88bd788b6459a2e26101c99f245a (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.java | 16 |
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"); } |