Env should only be about variables. No behavior change.
authorNico Weber <nicolasweber@gmx.de>
Wed, 18 Mar 2015 16:35:57 +0000 (12:35 -0400)
committerNico Weber <nicolasweber@gmx.de>
Wed, 18 Mar 2015 16:35:57 +0000 (12:35 -0400)
src/eval_env.h
src/graph.cc

index 7b9bdf5..250fa55 100644 (file)
@@ -28,7 +28,6 @@ struct Rule;
 struct Env {
   virtual ~Env() {}
   virtual string LookupVariable(const string& var) = 0;
-  virtual const Rule* LookupRule(const string& rule_name) = 0;
 };
 
 /// A tokenized string that contains variable references.
@@ -77,7 +76,7 @@ struct Rule {
 /// as well as a pointer to a parent scope.
 struct BindingEnv : public Env {
   BindingEnv() : parent_(NULL) {}
-  explicit BindingEnv(Env* parent) : parent_(parent) {}
+  explicit BindingEnv(BindingEnv* parent) : parent_(parent) {}
 
   virtual ~BindingEnv() {}
   virtual string LookupVariable(const string& var);
@@ -100,7 +99,7 @@ struct BindingEnv : public Env {
 private:
   map<string, string> bindings_;
   map<string, const Rule*> rules_;
-  Env* parent_;
+  BindingEnv* parent_;
 };
 
 #endif  // NINJA_EVAL_ENV_H_
index 76c4e9a..e3253fd 100644 (file)
@@ -207,7 +207,6 @@ struct EdgeEnv : public Env {
   EdgeEnv(Edge* edge, EscapeKind escape)
       : edge_(edge), escape_in_out_(escape) {}
   virtual string LookupVariable(const string& var);
-  virtual const Rule* LookupRule(const string& rule_name);
 
   /// Given a span of Nodes, construct a list of paths suitable for a command
   /// line.
@@ -219,10 +218,6 @@ struct EdgeEnv : public Env {
   EscapeKind escape_in_out_;
 };
 
-const Rule* EdgeEnv::LookupRule(const string& rule_name) {
-  return NULL;
-}
-
 string EdgeEnv::LookupVariable(const string& var) {
   if (var == "in" || var == "in_newline") {
     int explicit_deps_count = edge_->inputs_.size() - edge_->implicit_deps_ -