aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/apple/DottedVersion.java
diff options
context:
space:
mode:
authorGravatar vladmos <vladmos@google.com>2017-07-11 16:31:32 +0200
committerGravatar László Csomor <laszlocsomor@google.com>2017-07-11 18:26:04 +0200
commitf07773b31450b1863dd6f9390b9bb8b3040e2d6d (patch)
tree86cf32dee846e7351573b40584ff3bda27127b14 /src/main/java/com/google/devtools/build/lib/rules/apple/DottedVersion.java
parent2a32a66878ca6f3de6dcb35c8c2043b02ca8f89d (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.java17
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;