diff options
author | vladmos <vladmos@google.com> | 2017-07-11 16:31:32 +0200 |
---|---|---|
committer | László Csomor <laszlocsomor@google.com> | 2017-07-11 18:26:04 +0200 |
commit | f07773b31450b1863dd6f9390b9bb8b3040e2d6d (patch) | |
tree | 86cf32dee846e7351573b40584ff3bda27127b14 /src/main/java/com/google/devtools/build/lib/rules/apple/DottedVersion.java | |
parent | 2a32a66878ca6f3de6dcb35c8c2043b02ca8f89d (diff) |
Make some objects SkylarkValues
Skylark's Printer.BasePrinter doesn't guarantee it will call `.toString` on
objects of unknown types, and in the future that won't be the case anymore.
In order to keep their current string representations objects should implement
the SkylarkValue interface by providing an explicit implementation of `repr`.
PiperOrigin-RevId: 161526182
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/apple/DottedVersion.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/apple/DottedVersion.java | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/DottedVersion.java b/src/main/java/com/google/devtools/build/lib/rules/apple/DottedVersion.java index 2a38bfeb7b..bdbc910905 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/apple/DottedVersion.java +++ b/src/main/java/com/google/devtools/build/lib/rules/apple/DottedVersion.java @@ -24,6 +24,8 @@ import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; +import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter; +import com.google.devtools.build.lib.skylarkinterface.SkylarkValue; import java.util.ArrayList; import java.util.Objects; import java.util.regex.Matcher; @@ -38,7 +40,9 @@ import java.util.regex.Pattern; * * <p>Dotted versions are ordered using natural integer sorting on components in order from first to * last where any missing element is considered to have the value 0 if they don't contain any - * non-numeric characters. For example: <pre> + * non-numeric characters. For example: + * + * <pre> * 3.1.25 > 3.1.1 * 3.1.20 > 3.1.2 * 3.1.1 > 3.1 @@ -51,7 +55,9 @@ import java.util.regex.Pattern; * component with a smaller integer. If the integers are the same, the alphabetic sequences are * compared lexicographically, and if <i>they</i> turn out to be the same, the final (optional) * integer is compared. As with the leading integer, this final integer is considered to be 0 if not - * present. For example: <pre> + * present. For example: + * + * <pre> * 3.1.1 > 3.1.1beta3 * 3.1.1beta1 > 3.1.0 * 3.1 > 3.1.0alpha1 @@ -72,7 +78,7 @@ import java.util.regex.Pattern; + "1.2.3.4." ) @Immutable -public final class DottedVersion implements Comparable<DottedVersion> { +public final class DottedVersion implements Comparable<DottedVersion>, SkylarkValue { private static final Splitter DOT_SPLITTER = Splitter.on('.'); private static final Pattern COMPONENT_PATTERN = Pattern.compile("(\\d+)(?:([a-z]+)(\\d*))?"); private static final String ILLEGAL_VERSION = @@ -238,6 +244,11 @@ public final class DottedVersion implements Comparable<DottedVersion> { return ZERO_COMPONENT; } + @Override + public void repr(SkylarkPrinter printer) { + printer.append(stringRepresentation); + } + private static final class Component implements Comparable<Component> { private final int firstNumber; private final String alphaSequence; |