aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Laurent Le Brun <laurentlb@google.com>2017-02-27 14:52:40 +0000
committerGravatar Yue Gan <yueg@google.com>2017-02-27 15:10:57 +0000
commitccbcf8ed221c8a9dd8313672a9fa37976ad57f2b (patch)
treee8beb32b0c3b3423322a7cbdfa79893a73b7e4d1
parent949b7b5300afb224078ccffcfd09782415a38309 (diff)
Handle TriState type in `bazel query --output=build`
-- PiperOrigin-RevId: 148643993 MOS_MIGRATED_REVID=148643993
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/TriState.java17
-rw-r--r--src/main/java/com/google/devtools/build/lib/query2/output/OutputFormatter.java3
2 files changed, 19 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/TriState.java b/src/main/java/com/google/devtools/build/lib/packages/TriState.java
index ce9188c540..d321e9d020 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/TriState.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/TriState.java
@@ -18,5 +18,20 @@ package com.google.devtools.build.lib.packages;
* Enum used to represent tri-state parameters in rule attributes (yes/no/auto).
*/
public enum TriState {
- YES, NO, AUTO
+ YES,
+ NO,
+ AUTO;
+
+ public int toInt() {
+ switch (this) {
+ case YES:
+ return 1;
+ case NO:
+ return 0;
+ case AUTO:
+ return -1;
+ default:
+ throw new IllegalStateException();
+ }
+ }
}
diff --git a/src/main/java/com/google/devtools/build/lib/query2/output/OutputFormatter.java b/src/main/java/com/google/devtools/build/lib/query2/output/OutputFormatter.java
index d20880c5ef..18890c3eb6 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/output/OutputFormatter.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/output/OutputFormatter.java
@@ -32,6 +32,7 @@ import com.google.devtools.build.lib.packages.License;
import com.google.devtools.build.lib.packages.RawAttributeMapper;
import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.packages.Target;
+import com.google.devtools.build.lib.packages.TriState;
import com.google.devtools.build.lib.query2.engine.OutputFormatterCallback;
import com.google.devtools.build.lib.query2.engine.QueryEnvironment;
import com.google.devtools.build.lib.query2.output.QueryOptions.OrderOutput;
@@ -449,6 +450,8 @@ public abstract class OutputFormatter implements Serializable {
} else if (value instanceof List<?> && EvalUtils.isImmutable(value)) {
// Display it as a list (and not as a tuple). Attributes can never be tuples.
value = new ArrayList<>((List<?>) value);
+ } else if (value instanceof TriState) {
+ value = ((TriState) value).toInt();
}
// It is *much* faster to write to a StringBuilder compared to the PrintStream object.
StringBuilder builder = new StringBuilder();