mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-04 13:19:51 -05:00
ENH: Improve context for errors in macros
We now properly report the source location of command arguments inside macros instead of using the macro invocation site. No information is lost because full call-stack information is already reported.
This commit is contained in:
@@ -129,13 +129,6 @@ bool cmMacroHelperCommand::InvokeInitialPass
|
||||
newLFF.Name = this->Functions[c].Name;
|
||||
newLFF.FilePath = this->Functions[c].FilePath;
|
||||
newLFF.Line = this->Functions[c].Line;
|
||||
const char* def = this->Makefile->GetDefinition
|
||||
("CMAKE_MACRO_REPORT_DEFINITION_LOCATION");
|
||||
bool macroReportLocation = false;
|
||||
if(def && !cmSystemTools::IsOff(def))
|
||||
{
|
||||
macroReportLocation = true;
|
||||
}
|
||||
|
||||
// for each argument of the current function
|
||||
for (std::vector<cmListFileArgument>::const_iterator k =
|
||||
@@ -212,28 +205,8 @@ bool cmMacroHelperCommand::InvokeInitialPass
|
||||
|
||||
arg.Value = tmps;
|
||||
arg.Quoted = k->Quoted;
|
||||
if(macroReportLocation)
|
||||
{
|
||||
// Report the location of the argument where the macro was
|
||||
// defined.
|
||||
arg.FilePath = k->FilePath;
|
||||
arg.Line = k->Line;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Report the location of the argument where the macro was
|
||||
// invoked.
|
||||
if (args.size())
|
||||
{
|
||||
arg.FilePath = args[0].FilePath;
|
||||
arg.Line = args[0].Line;
|
||||
}
|
||||
else
|
||||
{
|
||||
arg.FilePath = "Unknown";
|
||||
arg.Line = 0;
|
||||
}
|
||||
}
|
||||
arg.FilePath = k->FilePath;
|
||||
arg.Line = k->Line;
|
||||
newLFF.Arguments.push_back(arg);
|
||||
}
|
||||
cmExecutionStatus status;
|
||||
|
||||
Reference in New Issue
Block a user