diff options
author | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2017-12-28 14:02:46 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-28 14:02:46 +0900 |
commit | 8aba2458a403479f0743fbc6d35392ae8e598fd1 (patch) | |
tree | 3d36cbcf4dd9525b604fa92c77b2ca181a893d6d | |
parent | 2f55dd9244f4ea7ca613bbd41a7324e955d74f50 (diff) | |
parent | 741974195712be8c53529cffc0b8222c970f685c (diff) | |
download | kati-8aba2458a403479f0743fbc6d35392ae8e598fd1.tar.gz |
Merge pull request #130 from danw/obsolete_env
Expand PeekVar to KATI_(deprecated|obsolete)_var
-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 |