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

Unified Diff: tools/gn/parse_tree.cc

Issue 2509333003: Change GN to disallow reading args defined in the same declare_args() call. (Closed)
Patch Set: update w/ review feedback Created 4 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: tools/gn/parse_tree.cc
diff --git a/tools/gn/parse_tree.cc b/tools/gn/parse_tree.cc
index ecc438b245aee02c62551efaee117796786dc02f..d1de9cbf3d78b6847557949f04418a12ecc985d4 100644
--- a/tools/gn/parse_tree.cc
+++ b/tools/gn/parse_tree.cc
@@ -487,13 +487,18 @@ const IdentifierNode* IdentifierNode::AsIdentifier() const {
}
Value IdentifierNode::Execute(Scope* scope, Err* err) const {
- const Value* value = scope->GetValue(value_.value(), true);
+ const Scope* found_in_scope = nullptr;
+ const Value* value = scope->GetValueWithScope(value_.value(), true,
+ &found_in_scope);
Value result;
if (!value) {
*err = MakeErrorDescribing("Undefined identifier");
return result;
}
+ if (!EnsureNotReadingFromSameDeclareArgs(this, scope, found_in_scope, err))
+ return result;
+
result = *value;
result.set_origin(this);
return result;
« tools/gn/functions.cc ('K') | « tools/gn/functions_unittest.cc ('k') | tools/gn/scope.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698