Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(396)

Side by Side Diff: tools/gn/action_target_generator.cc

Issue 2627703002: Validate GN substitutions in args and rsp files. (Closed)
Patch Set: Format Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « build/nocompile.gni ('k') | tools/gn/action_target_generator_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "tools/gn/action_target_generator.h" 5 #include "tools/gn/action_target_generator.h"
6 6
7 #include "tools/gn/build_settings.h" 7 #include "tools/gn/build_settings.h"
8 #include "tools/gn/err.h" 8 #include "tools/gn/err.h"
9 #include "tools/gn/filesystem_utils.h" 9 #include "tools/gn/filesystem_utils.h"
10 #include "tools/gn/parse_tree.h" 10 #include "tools/gn/parse_tree.h"
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 scope_->settings()->build_settings()->root_path_utf8()); 110 scope_->settings()->build_settings()->root_path_utf8());
111 if (err_->has_error()) 111 if (err_->has_error())
112 return false; 112 return false;
113 target_->action_values().set_script(script_file); 113 target_->action_values().set_script(script_file);
114 return true; 114 return true;
115 } 115 }
116 116
117 bool ActionTargetGenerator::FillScriptArgs() { 117 bool ActionTargetGenerator::FillScriptArgs() {
118 const Value* value = scope_->GetValue(variables::kArgs, true); 118 const Value* value = scope_->GetValue(variables::kArgs, true);
119 if (!value) 119 if (!value)
120 return true; 120 return true; // Nothing to do.
121 return target_->action_values().args().Parse(*value, err_); 121
122 if (!target_->action_values().args().Parse(*value, err_))
123 return false;
124 if (!EnsureValidSubstitutions(
125 target_->action_values().args().required_types(),
126 &IsValidScriptArgsSubstitution,
127 value->origin(), err_))
128 return false;
129
130 return true;
122 } 131 }
123 132
124 bool ActionTargetGenerator::FillResponseFileContents() { 133 bool ActionTargetGenerator::FillResponseFileContents() {
125 const Value* value = scope_->GetValue(variables::kResponseFileContents, true); 134 const Value* value = scope_->GetValue(variables::kResponseFileContents, true);
126 if (!value) 135 if (!value)
127 return true; 136 return true; // Nothing to do.
128 return target_->action_values().rsp_file_contents().Parse(*value, err_); 137
138 if (!target_->action_values().rsp_file_contents().Parse(*value, err_))
139 return false;
140 if (!EnsureValidSubstitutions(
141 target_->action_values().rsp_file_contents().required_types(),
142 &IsValidSourceSubstitution, value->origin(), err_))
143 return false;
144
145 return true;
129 } 146 }
130 147
131 bool ActionTargetGenerator::FillDepfile() { 148 bool ActionTargetGenerator::FillDepfile() {
132 const Value* value = scope_->GetValue(variables::kDepfile, true); 149 const Value* value = scope_->GetValue(variables::kDepfile, true);
133 if (!value) 150 if (!value)
134 return true; 151 return true;
135 152
136 SubstitutionPattern depfile; 153 SubstitutionPattern depfile;
137 if (!depfile.Parse(*value, err_)) 154 if (!depfile.Parse(*value, err_))
138 return false; 155 return false;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 *err_ = Err(function_call_, 193 *err_ = Err(function_call_,
177 "action_foreach should have a pattern in the output.", 194 "action_foreach should have a pattern in the output.",
178 "An action_foreach target should have a source expansion pattern in\n" 195 "An action_foreach target should have a source expansion pattern in\n"
179 "it to map source file to unique output file name. Otherwise, the\n" 196 "it to map source file to unique output file name. Otherwise, the\n"
180 "build system can't determine when your script needs to be run."); 197 "build system can't determine when your script needs to be run.");
181 return false; 198 return false;
182 } 199 }
183 } 200 }
184 return true; 201 return true;
185 } 202 }
OLDNEW
« no previous file with comments | « build/nocompile.gni ('k') | tools/gn/action_target_generator_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698