Fix desc to handle single-value outputs correctly
Change-Id: Ie1dd39a7bc676bdab0a59bb75112188e44ecadfa
Reviewed-on: https://gn-review.googlesource.com/c/gn/+/5620
Commit-Queue: Julie Hockett <juliehockett@google.com>
Reviewed-by: Brett Wilson <brettw@chromium.org>
diff --git a/tools/gn/command_desc.cc b/tools/gn/command_desc.cc
index a499384..6531a8e 100644
--- a/tools/gn/command_desc.cc
+++ b/tools/gn/command_desc.cc
@@ -229,20 +229,26 @@
}
// Outputs need special processing when output patterns are present.
-void ProcessOutputs(base::DictionaryValue* target) {
+void ProcessOutputs(base::DictionaryValue* target, bool files_only) {
base::ListValue* patterns = nullptr;
base::ListValue* outputs = nullptr;
target->GetList("output_patterns", &patterns);
target->GetList(variables::kOutputs, &outputs);
+ int indent = 0;
if (outputs || patterns) {
- OutputString("\noutputs\n");
- int indent = 1;
+ if (!files_only) {
+ OutputString("\noutputs\n");
+ indent = 1;
+ }
if (patterns) {
- OutputString(" Output patterns\n");
- indent = 2;
+ if (!files_only) {
+ OutputString(" Output patterns\n");
+ indent = 2;
+ }
PrintValue(patterns, indent);
- OutputString("\n Resolved output file list\n");
+ if (!files_only)
+ OutputString("\n Resolved output file list\n");
}
if (outputs)
PrintValue(outputs, indent);
@@ -323,6 +329,10 @@
}
// Print single value
if (!what.empty() && dict->size() == 1 && single_target) {
+ if (what == variables::kOutputs) {
+ ProcessOutputs(dict.get(), true);
+ return true;
+ }
base::DictionaryValue::Iterator iter(*dict);
auto pair = handler_map.find(what);
if (pair != handler_map.end())
@@ -352,7 +362,7 @@
HandleProperty(variables::kScript, handler_map, v, dict);
HandleProperty(variables::kArgs, handler_map, v, dict);
HandleProperty(variables::kDepfile, handler_map, v, dict);
- ProcessOutputs(dict.get());
+ ProcessOutputs(dict.get(), false);
HandleProperty("bundle_data", handler_map, v, dict);
HandleProperty(variables::kArflags, handler_map, v, dict);
HandleProperty(variables::kAsmflags, handler_map, v, dict);