aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkPath.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/apple/ApplePlatform.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/apple/DottedVersion.java17
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/Printer.java8
6 files changed, 62 insertions, 13 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkPath.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkPath.java
index 72505fb217..264a034bcb 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkPath.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkPath.java
@@ -19,6 +19,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 com.google.devtools.build.lib.vfs.Path;
import java.io.IOException;
@@ -34,7 +36,7 @@ import java.io.IOException;
category = SkylarkModuleCategory.NONE,
doc = "A structure representing a file to be used inside a repository."
)
-final class SkylarkPath {
+final class SkylarkPath implements SkylarkValue {
private final Path path;
SkylarkPath(Path path) {
@@ -118,4 +120,9 @@ final class SkylarkPath {
public String toString() {
return path.toString();
}
+
+ @Override
+ public void repr(SkylarkPrinter printer) {
+ printer.append(toString());
+ }
}
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java b/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java
index 8640f261de..e276793023 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java
@@ -17,6 +17,8 @@ package com.google.devtools.build.lib.cmdline;
import com.google.common.collect.ComparisonChain;
import com.google.common.collect.Interner;
import com.google.devtools.build.lib.concurrent.BlazeInterners;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
import com.google.devtools.build.lib.util.Preconditions;
import com.google.devtools.build.lib.vfs.Canonicalizer;
import com.google.devtools.build.lib.vfs.PathFragment;
@@ -27,12 +29,13 @@ import javax.annotation.concurrent.Immutable;
/**
* Uniquely identifies a package, given a repository name and a package's path fragment.
*
- * <p>The repository the build is happening in is the <i>default workspace</i>, and is identified
- * by the workspace name "". Other repositories can be named in the WORKSPACE file. These
- * workspaces are prefixed by {@literal @}.</p>
+ * <p>The repository the build is happening in is the <i>default workspace</i>, and is identified by
+ * the workspace name "". Other repositories can be named in the WORKSPACE file. These workspaces
+ * are prefixed by {@literal @}.
*/
@Immutable
-public final class PackageIdentifier implements Comparable<PackageIdentifier>, Serializable {
+public final class PackageIdentifier
+ implements Comparable<PackageIdentifier>, Serializable, SkylarkValue {
private static final Interner<PackageIdentifier> INTERNER = BlazeInterners.newWeakInterner();
@@ -216,4 +219,9 @@ public final class PackageIdentifier implements Comparable<PackageIdentifier>, S
.compare(pkgName, that.pkgName)
.result();
}
+
+ @Override
+ public void repr(SkylarkPrinter printer) {
+ printer.repr(toString());
+ }
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java
index 748f1df0e7..2256156496 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java
@@ -26,6 +26,8 @@ import com.google.devtools.build.lib.rules.apple.AppleConfiguration.Configuratio
import com.google.devtools.build.lib.rules.apple.ApplePlatform.PlatformType;
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 com.google.devtools.common.options.Converters.CommaSeparatedOptionListConverter;
import com.google.devtools.common.options.EnumConverter;
import com.google.devtools.common.options.Option;
@@ -406,7 +408,7 @@ public class AppleCommandLineOptions extends FragmentOptions {
+ "\"embedded\", and \"embedded_markers\""
)
@Immutable
- public enum AppleBitcodeMode {
+ public enum AppleBitcodeMode implements SkylarkValue {
/** Do not compile bitcode. */
NONE("none", ImmutableList.<String>of()),
@@ -435,6 +437,11 @@ public class AppleCommandLineOptions extends FragmentOptions {
return mode;
}
+ @Override
+ public void repr(SkylarkPrinter printer) {
+ printer.append(mode);
+ }
+
/** Returns the names of any crosstool features that correspond to this bitcode mode. */
public ImmutableList<String> getFeatureNames() {
return featureNames;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/ApplePlatform.java b/src/main/java/com/google/devtools/build/lib/rules/apple/ApplePlatform.java
index 8e047c31c0..d81e698d6b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/apple/ApplePlatform.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/apple/ApplePlatform.java
@@ -22,6 +22,8 @@ import com.google.devtools.build.lib.packages.SkylarkClassObject;
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 com.google.devtools.build.lib.util.Preconditions;
import java.util.HashMap;
import java.util.Locale;
@@ -34,7 +36,7 @@ import javax.annotation.Nullable;
doc = "Distinguishes between various apple platforms."
)
@Immutable
-public enum ApplePlatform {
+public enum ApplePlatform implements SkylarkValue {
IOS_DEVICE("ios_device", "iPhoneOS", PlatformType.IOS, true),
IOS_SIMULATOR("ios_simulator", "iPhoneSimulator", PlatformType.IOS, false),
MACOS("macos", "MacOSX", PlatformType.MACOS, true),
@@ -196,6 +198,11 @@ public enum ApplePlatform {
return new SkylarkClassObject(constructor, fields);
}
+ @Override
+ public void repr(SkylarkPrinter printer) {
+ printer.append(toString());
+ }
+
/**
* Value used to describe Apple platform "type". A {@link ApplePlatform} is implied from a
* platform type (for example, watchOS) together with a cpu value (for example, armv7).
@@ -207,7 +214,7 @@ public enum ApplePlatform {
doc = "Describes Apple platform \"type\", such as iOS, tvOS, macOS etc."
)
@Immutable
- public enum PlatformType {
+ public enum PlatformType implements SkylarkValue {
IOS("ios"),
WATCHOS("watchos"),
TVOS("tvos"),
@@ -253,5 +260,10 @@ public enum ApplePlatform {
}
return new SkylarkClassObject(constructor, fields);
}
+
+ @Override
+ public void repr(SkylarkPrinter printer) {
+ printer.append(toString());
+ }
}
}
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;
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Printer.java b/src/main/java/com/google/devtools/build/lib/syntax/Printer.java
index 12cc7929f4..3a6c60d7e0 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Printer.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Printer.java
@@ -20,6 +20,7 @@ import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
import com.google.devtools.build.lib.syntax.SkylarkList.Tuple;
+import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.io.IOException;
import java.util.Formattable;
@@ -351,10 +352,10 @@ public class Printer {
} else if (o instanceof Integer || o instanceof Double) {
this.append(o.toString());
- } else if (o == Boolean.TRUE) {
+ } else if (Boolean.TRUE.equals(o)) {
this.append("True");
- } else if (o == Boolean.FALSE) {
+ } else if (Boolean.FALSE.equals(o)) {
this.append("False");
} else if (o instanceof Map<?, ?>) {
@@ -374,6 +375,9 @@ public class Printer {
} else if (o instanceof PathFragment) {
this.append(((PathFragment) o).getPathString());
+ } else if (o instanceof Path) {
+ append(o.toString());
+
} else if (o instanceof Class<?>) {
this.append(EvalUtils.getDataTypeNameFromClass((Class<?>) o));