summaryrefslogtreecommitdiffstats
path: root/tools/gn/value_extractors.cc
diff options
context:
space:
mode:
authorbrettw <brettw@chromium.org>2016-01-26 10:11:28 -0800
committerCommit bot <commit-bot@chromium.org>2016-01-26 18:13:16 +0000
commit81aa4e8f010454835da6caa14507bcee73578e83 (patch)
treeb33c626c507bb57d663258ac9a177d10149ef4a7 /tools/gn/value_extractors.cc
parent24c4ddc037619b03e7712906ef3031ee4abcb030 (diff)
downloadchromium_src-81aa4e8f010454835da6caa14507bcee73578e83.zip
chromium_src-81aa4e8f010454835da6caa14507bcee73578e83.tar.gz
chromium_src-81aa4e8f010454835da6caa14507bcee73578e83.tar.bz2
Add an assert_no_deps variable to GN.
This asserts that there is no dependency path to a given target. BUG= Review URL: https://codereview.chromium.org/1621053002 Cr-Commit-Position: refs/heads/master@{#371539}
Diffstat (limited to 'tools/gn/value_extractors.cc')
-rw-r--r--tools/gn/value_extractors.cc19
1 files changed, 19 insertions, 0 deletions
diff --git a/tools/gn/value_extractors.cc b/tools/gn/value_extractors.cc
index 23c5a272..ff009ce 100644
--- a/tools/gn/value_extractors.cc
+++ b/tools/gn/value_extractors.cc
@@ -144,6 +144,17 @@ template<typename T> struct LabelPtrResolver {
const Label& current_toolchain;
};
+struct LabelPatternResolver {
+ LabelPatternResolver(const SourceDir& current_dir_in)
+ : current_dir(current_dir_in) {
+ }
+ bool operator()(const Value& v, LabelPattern* out, Err* err) const {
+ *out = LabelPattern::GetPattern(current_dir, v, err);
+ return !err->has_error();
+ }
+ const SourceDir& current_dir;
+};
+
} // namespace
bool ExtractListOfStringValues(const Value& value,
@@ -236,3 +247,11 @@ bool ExtractRelativeFile(const BuildSettings* build_settings,
RelativeFileConverter converter(build_settings, current_dir);
return converter(value, file, err);
}
+
+bool ExtractListOfLabelPatterns(const Value& value,
+ const SourceDir& current_dir,
+ std::vector<LabelPattern>* patterns,
+ Err* err) {
+ return ListValueExtractor(value, patterns, err,
+ LabelPatternResolver(current_dir));
+}