Handle "note: expanded from here" diagnostics in preprocessor
Fixes #140.
This commit is contained in:
parent
0e53f93722
commit
1a4dc770cb
1 changed files with 10 additions and 1 deletions
|
|
@ -63,7 +63,10 @@ source_location parse_source_location(const char*& ptr)
|
||||||
DEBUG_ASSERT(*ptr == ':', detail::assert_handler{});
|
DEBUG_ASSERT(*ptr == ':', detail::assert_handler{});
|
||||||
++ptr;
|
++ptr;
|
||||||
|
|
||||||
return {type_safe::nullopt, std::move(filename), std::move(line), type_safe::nullopt};
|
return {type_safe::nullopt,
|
||||||
|
filename == "<scratch space>" ? type_safe::optional<std::string>()
|
||||||
|
: std::move(filename),
|
||||||
|
std::move(line), type_safe::nullopt};
|
||||||
}
|
}
|
||||||
|
|
||||||
severity parse_severity(const char*& ptr)
|
severity parse_severity(const char*& ptr)
|
||||||
|
|
@ -81,6 +84,8 @@ severity parse_severity(const char*& ptr)
|
||||||
return severity::error;
|
return severity::error;
|
||||||
else if (sev == "fatal error")
|
else if (sev == "fatal error")
|
||||||
return severity::critical;
|
return severity::critical;
|
||||||
|
else if (sev == "note")
|
||||||
|
return severity::info;
|
||||||
else
|
else
|
||||||
ptr = fallback;
|
ptr = fallback;
|
||||||
return severity::error;
|
return severity::error;
|
||||||
|
|
@ -103,6 +108,10 @@ void log_diagnostic(const diagnostic_logger& logger, const std::string& msg)
|
||||||
while (*ptr && *ptr != '\n')
|
while (*ptr && *ptr != '\n')
|
||||||
message.push_back(*ptr++);
|
message.push_back(*ptr++);
|
||||||
|
|
||||||
|
if (!loc.file && message == "expanded from here")
|
||||||
|
// Useless info.
|
||||||
|
return;
|
||||||
|
|
||||||
logger.log("preprocessor", diagnostic{std::move(message), std::move(loc), sev});
|
logger.log("preprocessor", diagnostic{std::move(message), std::move(loc), sev});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue