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

Unified Diff: tools/gn/scope.cc

Issue 2936923002: Add not_needed function (Closed)
Patch Set: Rename to not_needed Created 3 years, 6 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 side-by-side diff with in-line comments
Download patch
« tools/gn/scope.h ('K') | « tools/gn/scope.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/gn/scope.cc
diff --git a/tools/gn/scope.cc b/tools/gn/scope.cc
index f2fe7521dfafc8e94f5a6c35ff2723a9ec960c9f..be76c48277217e4a2e1ea37b8f7664a361f638cb 100644
--- a/tools/gn/scope.cc
+++ b/tools/gn/scope.cc
@@ -205,18 +205,31 @@ const Template* Scope::GetTemplate(const std::string& name) const {
return nullptr;
}
-void Scope::MarkUsed(const base::StringPiece& ident) {
+void Scope::MarkUsed(const base::StringPiece& ident, Err* err) {
RecordMap::iterator found = values_.find(ident);
if (found == values_.end()) {
NOTREACHED();
return;
}
+ if (found->second.unusable) {
+ *err = Err(found->second.value.origin(), "Variable was marked as unused.",
+ "You marked the variable \"" + found->first.as_string() +
+ "\" as unused, but it is being used.");
+ return;
+ }
found->second.used = true;
}
-void Scope::MarkAllUsed() {
- for (auto& cur : values_)
+void Scope::MarkAllUsed(Err* err) {
+ for (auto& cur : values_) {
+ if (cur.second.unusable) {
+ *err = Err(cur.second.value.origin(), "Variable was marked as unused.",
+ "You marked the variable \"" + cur.first.as_string() +
+ "\" as unused, but it is being used.");
+ return;
+ }
cur.second.used = true;
+ }
}
void Scope::MarkUnused(const base::StringPiece& ident) {
@@ -228,6 +241,38 @@ void Scope::MarkUnused(const base::StringPiece& ident) {
found->second.used = false;
}
+void Scope::MarkAllUnusable(Err* err, std::set<std::string> excluded_values) {
+ for (auto& cur : values_) {
+ if (!excluded_values.empty() &&
+ excluded_values.find(cur.first.as_string()) != excluded_values.end()) {
+ continue; // Skip this excluded value.
+ }
+
+ if (cur.second.used) {
+ *err = Err(cur.second.value.origin(), "Variable was marked as unused.",
+ "You marked the variable \"" + cur.first.as_string() +
+ "\" as unused, but it is being used.");
+ return;
+ }
+ cur.second.unusable = true;
+ }
+}
+
+void Scope::MarkUnusable(const base::StringPiece& ident, Err* err) {
+ RecordMap::iterator found = values_.find(ident);
+ if (found == values_.end()) {
+ NOTREACHED();
+ return;
+ }
+ if (found->second.used) {
+ *err = Err(found->second.value.origin(), "Variable was marked as unused.",
+ "You marked the variable \"" + ident.as_string() +
+ "\" as unused, but it is being used.");
+ return;
+ }
+ found->second.unusable = true;
+}
+
bool Scope::IsSetButUnused(const base::StringPiece& ident) const {
RecordMap::const_iterator found = values_.find(ident);
if (found != values_.end()) {
@@ -240,7 +285,7 @@ bool Scope::IsSetButUnused(const base::StringPiece& ident) const {
bool Scope::CheckForUnusedVars(Err* err) const {
for (const auto& pair : values_) {
- if (!pair.second.used) {
+ if (!pair.second.unusable && !pair.second.used) {
std::string help = "You set the variable \"" + pair.first.as_string() +
"\" here and it was unused before it went\nout of scope.";
@@ -301,7 +346,7 @@ bool Scope::NonRecursiveMergeTo(Scope* dest,
dest->values_[current_name] = pair.second;
if (options.mark_dest_used)
- dest->MarkUsed(current_name);
+ dest->MarkUsed(current_name, err);
}
// Target defaults are owning pointers.
« tools/gn/scope.h ('K') | « tools/gn/scope.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698