Added error message if a predicate query is invalid
This commit is contained in:
parent
bdb3ebca3f
commit
a77d9fc261
3 changed files with 19 additions and 5 deletions
|
|
@ -231,6 +231,9 @@ value_t args_command(call_scope_t& args)
|
|||
out << std::endl << std::endl;
|
||||
|
||||
std::pair<expr_t, query_parser_t> info = args_to_predicate(begin, end);
|
||||
if (! info.first)
|
||||
throw_(std::runtime_error,
|
||||
_("Invalid query predicate: %1") << join_args(args));
|
||||
|
||||
call_scope_t sub_args(static_cast<scope_t&>(args));
|
||||
sub_args.push_back(string_value(info.first.text()));
|
||||
|
|
@ -242,8 +245,12 @@ value_t args_command(call_scope_t& args)
|
|||
<< std::endl << std::endl;
|
||||
|
||||
call_scope_t disp_sub_args(static_cast<scope_t&>(args));
|
||||
disp_sub_args.push_back
|
||||
(string_value(args_to_predicate(info.second).first.text()));
|
||||
info = args_to_predicate(info.second);
|
||||
if (! info.first)
|
||||
throw_(std::runtime_error,
|
||||
_("Invalid display predicate: %1") << join_args(args));
|
||||
|
||||
disp_sub_args.push_back(string_value(info.first.text()));
|
||||
|
||||
parse_command(disp_sub_args);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -299,8 +299,7 @@ std::pair<expr_t, query_parser_t>
|
|||
args_to_predicate(value_t::sequence_t::const_iterator begin,
|
||||
value_t::sequence_t::const_iterator end);
|
||||
|
||||
std::pair<expr_t, query_parser_t>
|
||||
args_to_predicate(query_parser_t parser);
|
||||
std::pair<expr_t, query_parser_t> args_to_predicate(query_parser_t parser);
|
||||
|
||||
} // namespace ledger
|
||||
|
||||
|
|
|
|||
|
|
@ -413,6 +413,9 @@ namespace {
|
|||
args.value().as_sequence().end();
|
||||
|
||||
std::pair<expr_t, query_parser_t> info = args_to_predicate(begin, end);
|
||||
if (! info.first)
|
||||
throw_(std::runtime_error,
|
||||
_("Invalid query predicate: %1") << join_args(args));
|
||||
|
||||
string limit = info.first.text();
|
||||
if (! limit.empty())
|
||||
|
|
@ -422,7 +425,12 @@ namespace {
|
|||
"Predicate = " << report.HANDLER(limit_).str());
|
||||
|
||||
if (info.second.tokens_remaining()) {
|
||||
string display = args_to_predicate(info.second).first.text();
|
||||
info = args_to_predicate(info.second);
|
||||
if (! info.first)
|
||||
throw_(std::runtime_error,
|
||||
_("Invalid display predicate: %1") << join_args(args));
|
||||
|
||||
string display = info.first.text();
|
||||
|
||||
if (! display.empty())
|
||||
report.HANDLER(display_).on(whence, display);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue