diff options
author | Dan Willemsen <dwillemsen@google.com> | 2017-12-28 07:19:43 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-12-28 07:19:43 +0000 |
commit | d14ce86104464ba3915ff3c8c537fbbb8880ab5c (patch) | |
tree | f3001a1a75e288ef43fce44bc7efcbf05ad5595c | |
parent | e63fdaafc39fe7e40bd4c8177f0eeddb4817f127 (diff) | |
parent | bbf8df0cb5b14e4be543872c657e6b69bb5628f5 (diff) | |
download | kati-d14ce86104464ba3915ff3c8c537fbbb8880ab5c.tar.gz |
Merge remote-tracking branch 'aosp/upstream' into master am: cfcaaa2511 am: 1b725566ad
am: bbf8df0cb5
Change-Id: I2af8061c5723b00edf04a314286daaed15b89fa0
-rw-r--r-- | eval.cc | 9 | ||||
-rw-r--r-- | eval.h | 3 | ||||
-rw-r--r-- | func.cc | 4 | ||||
-rwxr-xr-x | testcase/ninja_regen.sh | 20 |
4 files changed, 34 insertions, 2 deletions
@@ -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); @@ -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_; } @@ -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 |