aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2017-12-31 08:21:25 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2017-12-31 08:21:25 +0000
commitd0e4c5d89abfd637b13a6f0324b96a071d313098 (patch)
treef3001a1a75e288ef43fce44bc7efcbf05ad5595c
parent4679980b244c3d155603c63de90942d86ebc2b91 (diff)
parentd14ce86104464ba3915ff3c8c537fbbb8880ab5c (diff)
downloadplatform_build_kati-d0e4c5d89abfd637b13a6f0324b96a071d313098.tar.gz
platform_build_kati-d0e4c5d89abfd637b13a6f0324b96a071d313098.tar.bz2
platform_build_kati-d0e4c5d89abfd637b13a6f0324b96a071d313098.zip
Snap for 4521654 from d14ce86104464ba3915ff3c8c537fbbb8880ab5c to pi-release
Change-Id: Id77aecf61876f92bf0bde9791c62f81467ef090d
-rw-r--r--eval.cc9
-rw-r--r--eval.h3
-rw-r--r--func.cc4
-rwxr-xr-xtestcase/ninja_regen.sh20
4 files changed, 34 insertions, 2 deletions
diff --git a/eval.cc b/eval.cc
index 8cd7afd..cf3f859 100644
--- a/eval.cc
+++ b/eval.cc
@@ -391,6 +391,15 @@ Var* Evaluator::LookupVar(Symbol name) {
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 @@ class Evaluator {
// 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 @@ void DeprecatedVarFunc(const vector<Value*>& args, Evaluator* ev, string*) {
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 @@ void ObsoleteVarFunc(const vector<Value*>& args, Evaluator* ev, string*) {
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 @@ fi
sleep_if_necessary 1
cat <<EOF > Makefile
+\$(KATI_deprecated_var VAR4)
+\$(KATI_obsolete_var VAR5)
VAR3 := unused
all:
echo bar
@@ -94,6 +96,24 @@ if [ -e ninja.sh ]; then
./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