diff options
author | ridiculousfish <corydoras@ridiculousfish.com> | 2013-12-12 18:18:07 -0800 |
---|---|---|
committer | ridiculousfish <corydoras@ridiculousfish.com> | 2013-12-12 18:18:07 -0800 |
commit | 5cf59de6763a0000fdc87f0101ca78bd137dffcc (patch) | |
tree | b9700e9650a4a06af91ec24dad0c621f8381c3d5 /builtin_complete.cpp | |
parent | e25d49b80b0668b55a58e1445aa047a68a1043d3 (diff) |
Finish rewriting detect_errors to use new parser. All tests now pass (!)
Diffstat (limited to 'builtin_complete.cpp')
-rw-r--r-- | builtin_complete.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/builtin_complete.cpp b/builtin_complete.cpp index 14b3a4b7..0cc3b7e7 100644 --- a/builtin_complete.cpp +++ b/builtin_complete.cpp @@ -497,15 +497,19 @@ static int builtin_complete(parser_t &parser, wchar_t **argv) { if (condition && wcslen(condition)) { - if (parser.detect_errors(condition)) + const wcstring condition_string = condition; + parse_error_list_t errors; + if (parser.detect_errors(condition_string, &errors)) { append_format(stderr_buffer, - L"%ls: Condition '%ls' contained a syntax error\n", + L"%ls: Condition '%ls' contained a syntax error", argv[0], condition); - - parser.detect_errors(condition, &stderr_buffer, argv[0]); - + for (size_t i=0; i < errors.size(); i++) + { + append_format(stderr_buffer, L"\n%s: ", argv[0]); + stderr_buffer.append(errors.at(i).describe(condition_string)); + } res = true; } } |