diff options
author | Alexei Svitkine <asvitkine@google.com> | 2011-04-26 18:49:49 (GMT) |
---|---|---|
committer | Evan Martin <martine@danga.com> | 2011-04-26 18:49:49 (GMT) |
commit | 2f6ac73dad3806e771761af3a58d43d434337a4b (patch) | |
tree | de9266a1e7a635f66299a2847c6c66d894ad6637 /src/eval_env.cc | |
parent | 5c192cda0788faeed93b3ba03a6830ed43762b24 (diff) | |
download | Ninja-2f6ac73dad3806e771761af3a58d43d434337a4b.zip Ninja-2f6ac73dad3806e771761af3a58d43d434337a4b.tar.gz Ninja-2f6ac73dad3806e771761af3a58d43d434337a4b.tar.bz2 |
include location of error in parse error messages in EvalEnv strings
E.g. when parsing "foo = ${bar", point at the correct location of
the missing curly brace.
Diffstat (limited to 'src/eval_env.cc')
-rw-r--r-- | src/eval_env.cc | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/eval_env.cc b/src/eval_env.cc index 6b89b9c..8633f85 100644 --- a/src/eval_env.cc +++ b/src/eval_env.cc @@ -27,7 +27,7 @@ void BindingEnv::AddBinding(const string& key, const string& val) { bindings_[key] = val; } -bool EvalString::Parse(const string& input, string* err) { +bool EvalString::Parse(const string& input, string* err, size_t* err_index) { unparsed_ = input; string::size_type start, end; @@ -49,6 +49,8 @@ bool EvalString::Parse(const string& input, string* err) { } if (end >= input.size()) { *err = "expected closing curly after ${"; + if (err_index) + *err_index = end; return false; } parsed_.push_back(make_pair(input.substr(start, end - start), SPECIAL)); @@ -63,6 +65,8 @@ bool EvalString::Parse(const string& input, string* err) { } if (end == start) { *err = "expected variable after $"; + if (err_index) + *err_index = start; return false; } parsed_.push_back(make_pair(input.substr(start, end - start), SPECIAL)); |