summaryrefslogtreecommitdiffstats
path: root/src/manifest_parser.cc
diff options
context:
space:
mode:
authorEvan Martin <martine@danga.com>2012-10-30 16:40:59 (GMT)
committerEvan Martin <martine@danga.com>2013-02-16 23:15:20 (GMT)
commit10f3e17b6dc7718ab00552300871bbfe49854c8b (patch)
tree94d4e3bfe8bf9d5daf5292b0d79d059789d7e1fc /src/manifest_parser.cc
parent27f7528ebdae1586501fb083f8d5d3be711bb367 (diff)
downloadNinja-10f3e17b6dc7718ab00552300871bbfe49854c8b.zip
Ninja-10f3e17b6dc7718ab00552300871bbfe49854c8b.tar.gz
Ninja-10f3e17b6dc7718ab00552300871bbfe49854c8b.tar.bz2
add syntax for checking versions
Diffstat (limited to 'src/manifest_parser.cc')
-rw-r--r--src/manifest_parser.cc12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/manifest_parser.cc b/src/manifest_parser.cc
index 9d17932..14fca73 100644
--- a/src/manifest_parser.cc
+++ b/src/manifest_parser.cc
@@ -23,6 +23,7 @@
#include "metrics.h"
#include "state.h"
#include "util.h"
+#include "version.h"
ManifestParser::ManifestParser(State* state, FileReader* file_reader)
: state_(state), file_reader_(file_reader) {
@@ -66,10 +67,15 @@ bool ManifestParser::Parse(const string& filename, const string& input,
case Lexer::IDENT: {
lexer_.UnreadToken();
string name;
- EvalString value;
- if (!ParseLet(&name, &value, err))
+ EvalString let_value;
+ if (!ParseLet(&name, &let_value, err))
return false;
- env_->AddBinding(name, value.Evaluate(env_));
+ string value = let_value.Evaluate(env_);
+ // Check ninja_required_version immediately so we can exit
+ // before encountering any syntactic surprises.
+ if (name == "ninja_required_version")
+ CheckNinjaVersion(value);
+ env_->AddBinding(name, value);
break;
}
case Lexer::INCLUDE: