Test that not_needed works with forward_variables_from
This change does not change the existing functionality, but adds
additional test to clarify it and prevent future breakage.
Change-Id: Ic62210481f7734fd23c59720d4b9a7fa10e9ab53
Reviewed-on: https://gn-review.googlesource.com/c/1881
Commit-Queue: Petr Hosek <phosek@google.com>
Reviewed-by: Dirk Pranke <dpranke@chromium.org>
diff --git a/tools/gn/functions_target_unittest.cc b/tools/gn/functions_target_unittest.cc
index 708c060..3edd77d 100644
--- a/tools/gn/functions_target_unittest.cc
+++ b/tools/gn/functions_target_unittest.cc
@@ -88,6 +88,27 @@
error_input.parsed()->Execute(setup.scope(), &err);
ASSERT_TRUE(err.has_error());
EXPECT_EQ("Not supported with a variable list.", err.message());
+
+ TestParseInput template_input(
+ R"(# Test that not_needed() propagates through templates correctly;
+ # no error should arise from not using "a".
+ template("inner_templ") {
+ source_set(target_name) {
+ not_needed(invoker, [ "a" ])
+ }
+ }
+ template("outer_templ") {
+ inner_templ(target_name) {
+ forward_variables_from(invoker, "*")
+ }
+ }
+ outer_templ("foo") {
+ a = 1
+ })");
+ ASSERT_FALSE(template_input.has_error());
+ err = Err();
+ template_input.parsed()->Execute(setup.scope(), &err);
+ ASSERT_FALSE(err.has_error()) << err.message();
}
// Checks that the defaults applied to a template invoked by target() use