Merge remote-tracking branch 'aosp/upstream' into master

* aosp/upstream:
  Expand PeekVar to KATI_(deprecated|obsolete)_var

Test: ckati_stamp_dump --env out/.kati_stamp-aosp_arm64; check for PATH
Change-Id: I4add3df322c2ac7058c543e8d347eb85a5d4353d
diff --git a/eval.cc b/eval.cc
index 8cd7afd..cf3f859 100644
--- a/eval.cc
+++ b/eval.cc
@@ -391,6 +391,15 @@
   return LookupVarGlobal(name);
 }
 
+Var* Evaluator::PeekVar(Symbol name) {
+  if (current_scope_) {
+    Var* v = current_scope_->Peek(name);
+    if (v->IsDefined())
+      return v;
+  }
+  return name.PeekGlobalVar();
+}
+
 Var* Evaluator::LookupVarInCurrentScope(Symbol name) {
   if (current_scope_) {
     return current_scope_->Lookup(name);
diff --git a/eval.h b/eval.h
index 1dff4b7..e588f7e 100644
--- a/eval.h
+++ b/eval.h
@@ -47,6 +47,9 @@
   // For target specific variables.
   Var* LookupVarInCurrentScope(Symbol name);
 
+  // Equivalent to LookupVar, but doesn't mark as used.
+  Var* PeekVar(Symbol name);
+
   string EvalVar(Symbol name);
 
   const Loc& loc() const { return loc_; }
diff --git a/func.cc b/func.cc
index 220aee0..1dea7bb 100644
--- a/func.cc
+++ b/func.cc
@@ -835,7 +835,7 @@
 
   for (StringPiece var : WordScanner(vars_str)) {
     Symbol sym = Intern(var);
-    Var* v = ev->LookupVar(sym);
+    Var* v = ev->PeekVar(sym);
     if (!v->IsDefined()) {
       v = new SimpleVar(VarOrigin::FILE);
       sym.SetGlobalVar(v, false, nullptr);
@@ -871,7 +871,7 @@
 
   for (StringPiece var : WordScanner(vars_str)) {
     Symbol sym = Intern(var);
-    Var* v = ev->LookupVar(sym);
+    Var* v = ev->PeekVar(sym);
     if (!v->IsDefined()) {
       v = new SimpleVar(VarOrigin::FILE);
       sym.SetGlobalVar(v, false, nullptr);
diff --git a/testcase/ninja_regen.sh b/testcase/ninja_regen.sh
index 5a1c0ff..b63bb9b 100755
--- a/testcase/ninja_regen.sh
+++ b/testcase/ninja_regen.sh
@@ -39,6 +39,8 @@
 
 sleep_if_necessary 1
 cat <<EOF > Makefile
+\$(KATI_deprecated_var VAR4)
+\$(KATI_obsolete_var VAR5)
 VAR3 := unused
 all:
 	echo bar
@@ -94,6 +96,24 @@
   ./ninja.sh
 fi
 
+export VAR4=foo
+${mk} 2> ${log}
+if [ -e ninja.sh ]; then
+  if grep regenerating ${log} >/dev/null; then
+    echo 'Should not regenerate (deprecated env added)'
+  fi
+  ./ninja.sh
+fi
+
+export VAR5=foo
+${mk} 2> ${log}
+if [ -e ninja.sh ]; then
+  if grep regenerating ${log} >/dev/null; then
+    echo 'Should not regenerate (obsolete env added)'
+  fi
+  ./ninja.sh
+fi
+
 export PATH=/random_path:$PATH
 ${mk} 2> ${log}
 if [ -e ninja.sh ]; then