summaryrefslogtreecommitdiff
path: root/gn/src/gn/target_generator.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gn/src/gn/target_generator.cc')
-rw-r--r--gn/src/gn/target_generator.cc24
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) {