| Index: tools/gn/analyzer.cc
|
| diff --git a/tools/gn/analyzer.cc b/tools/gn/analyzer.cc
|
| index 38acb6b84a1a76a50800cf18654a13c9aad6782d..8ee303ff0811614b6f50beccf56bc259a3b73797 100644
|
| --- a/tools/gn/analyzer.cc
|
| +++ b/tools/gn/analyzer.cc
|
| @@ -157,7 +157,7 @@ Err JSONToInputs(const Label& default_toolchain,
|
| inputs->source_vec.push_back(SourceFile(s));
|
| }
|
|
|
| - strings = GetStringVector(*dict, "compile_targets", &err);
|
| + strings = GetStringVector(*dict, "additional_compile_targets", &err);
|
| if (err.has_error())
|
| return err;
|
|
|
| @@ -193,7 +193,7 @@ Err JSONToInputs(const Label& default_toolchain,
|
| }
|
|
|
| std::string OutputsToJSON(const Outputs& outputs,
|
| - const Label& default_toolchain) {
|
| + const Label& default_toolchain, Err *err) {
|
| std::string output;
|
| auto value = base::MakeUnique<base::DictionaryValue>();
|
|
|
| @@ -208,7 +208,8 @@ std::string OutputsToJSON(const Outputs& outputs,
|
| WriteLabels(default_toolchain, *value, "test_targets", outputs.test_labels);
|
| }
|
|
|
| - base::JSONWriter::Write(*value.get(), &output);
|
| + if (!base::JSONWriter::Write(*value.get(), &output))
|
| + *err = Err(Location(), "Failed to marshal JSON value for output");
|
| return output;
|
| }
|
|
|
| @@ -237,9 +238,7 @@ std::string Analyzer::Analyze(const std::string& input, Err* err) const {
|
| Err local_err = JSONToInputs(default_toolchain_, input, &inputs);
|
| if (local_err.has_error()) {
|
| outputs.error = local_err.message();
|
| - if (err)
|
| - *err = Err();
|
| - return "";
|
| + return OutputsToJSON(outputs, default_toolchain_, err);
|
| }
|
|
|
| LabelSet invalid_labels;
|
| @@ -250,17 +249,13 @@ std::string Analyzer::Analyze(const std::string& input, Err* err) const {
|
| if (!invalid_labels.empty()) {
|
| outputs.error = "Invalid targets";
|
| outputs.invalid_labels = invalid_labels;
|
| - if (err)
|
| - *err = Err();
|
| - return OutputsToJSON(outputs, default_toolchain_);
|
| + return OutputsToJSON(outputs, default_toolchain_, err);
|
| }
|
|
|
| TargetSet affected_targets = AllAffectedTargets(inputs.source_files);
|
| if (affected_targets.empty()) {
|
| outputs.status = "No dependency";
|
| - if (err)
|
| - *err = Err();
|
| - return OutputsToJSON(outputs, default_toolchain_);
|
| + return OutputsToJSON(outputs, default_toolchain_, err);
|
| }
|
|
|
| // TODO: We can do smarter things when we detect changes to build files.
|
| @@ -272,9 +267,7 @@ std::string Analyzer::Analyze(const std::string& input, Err* err) const {
|
| outputs.status = "Found dependency (all)";
|
| outputs.compile_labels = inputs.compile_labels;
|
| outputs.test_labels = inputs.test_labels;
|
| - if (err)
|
| - *err = Err();
|
| - return OutputsToJSON(outputs, default_toolchain_);
|
| + return OutputsToJSON(outputs, default_toolchain_, err);
|
| }
|
|
|
| TargetSet compile_targets = TargetsFor(inputs.compile_labels);
|
| @@ -293,8 +286,7 @@ std::string Analyzer::Analyze(const std::string& input, Err* err) const {
|
| outputs.status = "No dependency";
|
| else
|
| outputs.status = "Found dependency";
|
| - *err = Err();
|
| - return OutputsToJSON(outputs, default_toolchain_);
|
| + return OutputsToJSON(outputs, default_toolchain_, err);
|
| }
|
|
|
| TargetSet Analyzer::AllAffectedTargets(
|
|
|