Skip to content

Commit

Permalink
preprocessor: Indent error location info on a separate line
Browse files Browse the repository at this point in the history
Messages such as:

> Quoted string not terminated at ~add-ons/Foo/bar.cfg
> Macro/file 'FOOBAR' is missing at ~add-ons/Baz/bat.cfg:12 included from ~add-ons/Baz/bag.cfg:2 included from ~add-ons/Baz/ban.cfg:42

Now are formatted as:

> Quoted string not terminated
>     at ~add-ons/Foo/bar.cfg
> Macro/file 'FOOBAR' is missing
>    at ~add-ons/Baz/bat.cfg:12
>    included from ~add-ons/Baz/bag.cfg:2
>    included from ~add-ons/Baz/ban.cfg:42

For messages that include the {} substitution trail, this improves
readability by making the trail a sequence of lines with file locations
rather than a massive opaque and unreadable text wall:

> Macro/file 'FOOBAR' is missing at ~add-ons/After_the_Storm//macros/scenario-segment-implementation.cfg:61 included from ~add-ons/After_the_Storm/base-loader.cfg:6 included from ~add-ons/After_the_Storm/_main.cfg:174 included from ~add-ons/After_the_Storm/base-loader.cfg:75 included from [...]

In fact, it's that particular case that motivated this report format
change. Cases where there is no substitution trail but there is still a
file location pointer are covered by this commit too mainly for the sake
of consistency and readability -- being able to see the last (first)
relevant location pointer first on a separate line should make it easier
to debug most WML issues.
  • Loading branch information
irydacea committed Feb 13, 2014
1 parent d36e4d7 commit 95bcf34
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions src/serialization/preprocessor.cpp
Expand Up @@ -55,6 +55,8 @@ static t_file_number_map file_number_map;

static bool encode_filename = true;

static std::string preprocessor_error_detail_prefix = "\n ";

// get filename associated to this code
static std::string get_filename(const std::string& file_code){
if(!encode_filename)
Expand Down Expand Up @@ -326,7 +328,8 @@ std::string lineno_string(const std::string &lineno)
{
std::vector< std::string > pos = utils::quoted_split(lineno, ' ');
std::vector< std::string >::const_iterator i = pos.begin(), end = pos.end();
std::string included_from = " included from ";
std::string included_from =
preprocessor_error_detail_prefix + "included from ";
std::string res;
while (i != end) {
std::string const &line = *(i++);
Expand All @@ -348,7 +351,7 @@ void preprocessor_streambuf::error(const std::string& error_type, int l)
std::ostringstream pos;
pos << l << ' ' << location_;
position = lineno_string(pos.str());
error = error_type + " at " + position;
error = error_type + preprocessor_error_detail_prefix + "at " + position;
ERR_CF << error << '\n';
throw preproc_config::error(error);
}
Expand Down

0 comments on commit 95bcf34

Please sign in to comment.