| // Copyright 2016 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include "testing/gtest/include/gtest/gtest.h" | 
 | #include "tools/gn/test_with_scope.h" | 
 |  | 
 | // Checks that variables used inside template definitions aren't reported | 
 | // unused if they were declared above the template. | 
 | TEST(FunctionTemplate, MarkUsed) { | 
 |   TestWithScope setup; | 
 |   TestParseInput input( | 
 |       "a = 1\n"  // Unused outside of template. | 
 |       "template(\"templ\") {\n" | 
 |       "  print(a)\n" | 
 |       "}\n"); | 
 |   ASSERT_FALSE(input.has_error()) << input.parse_err().message(); | 
 |  | 
 |   Err err; | 
 |   input.parsed()->Execute(setup.scope(), &err); | 
 |   ASSERT_FALSE(err.has_error()) << err.message(); | 
 |  | 
 |   // Normally the loader calls CheckForUnusedVars() when it loads a file | 
 |   // since normal blocks don't do this check. To avoid having to make this | 
 |   // test much more complicated, just explicitly do the check to make sure | 
 |   // things are marked properly. | 
 |   setup.scope()->CheckForUnusedVars(&err); | 
 |   EXPECT_FALSE(err.has_error()); | 
 | } |