diff options
Diffstat (limited to 'gn/src/gn/target_generator.cc')
-rw-r--r-- | gn/src/gn/target_generator.cc | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/gn/src/gn/target_generator.cc b/gn/src/gn/target_generator.cc index 0ae9dafda81..1ff3b8304bb 100644 --- a/gn/src/gn/target_generator.cc +++ b/gn/src/gn/target_generator.cc @@ -58,6 +58,9 @@ void TargetGenerator::Run() { if (!FillTestonly()) return; + if (!FillRspTypes()) + return; + if (!FillAssertNoDeps()) return; @@ -311,6 +314,27 @@ bool TargetGenerator::FillTestonly() { return true; } +bool TargetGenerator::FillRspTypes() { + const Value* value = scope_->GetValue(variables::kRspTypes, true); + if (!value) + return true; + if (!value->VerifyTypeIs(Value::LIST, err_)) + return false; + + const std::vector<Value>& value_list = value->list_value(); + std::vector<std::string>& rsp_types = target_->rsp_types(); + rsp_types.reserve(value_list.size()); + + for (size_t i = 0; i < value_list.size(); i++) { + const Value& value = value_list[i]; + if (!value.VerifyTypeIs(Value::STRING, err_)) + return false; + const std::string str = value.string_value(); + rsp_types.push_back(str); + } + return true; +} + bool TargetGenerator::FillAssertNoDeps() { const Value* value = scope_->GetValue(variables::kAssertNoDeps, true); if (value) { |