aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Willemsen <dwillemsen@google.com>2017-12-27 21:21:28 -0800
committerDan Willemsen <dwillemsen@google.com>2017-12-28 05:23:50 +0000
commitcfcaaa25117310666e02a989a6bd9d45e82d8041 (patch)
treef3001a1a75e288ef43fce44bc7efcbf05ad5595c
parent824a4f395debd92cb8ff93056eb890a4a1af5516 (diff)
parent8aba2458a403479f0743fbc6d35392ae8e598fd1 (diff)
downloadkati-cfcaaa25117310666e02a989a6bd9d45e82d8041.tar.gz
Merge remote-tracking branch 'aosp/upstream' into masterandroid-wear-8.0.0_r1
* 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
-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