cmListFileBacktrace: Clarify call sites that only push a file path

This removes the last part of the `cmListFileBacktrace` interface
that needs to know the type of data in its stack.
This commit is contained in:
Brad King 2022-03-28 17:35:50 -04:00
parent 6e1be5dbef
commit 9123193758
3 changed files with 17 additions and 17 deletions

View File

@ -470,17 +470,6 @@ cmListFileBacktrace::cmListFileBacktrace(std::shared_ptr<Entry const> top)
{
}
cmListFileBacktrace cmListFileBacktrace::Push(std::string const& file) const
{
// We are entering a file-level scope but have not yet reached
// any specific line or command invocation within it. This context
// is useful to print when it is at the top but otherwise can be
// skipped during call stack printing.
cmListFileContext lfc;
lfc.FilePath = file;
return this->Push(lfc);
}
cmListFileBacktrace cmListFileBacktrace::Push(
cmListFileContext const& lfc) const
{

View File

@ -128,6 +128,17 @@ public:
{
}
static cmListFileContext FromListFilePath(std::string const& filePath)
{
// We are entering a file-level scope but have not yet reached
// any specific line or command invocation within it. This context
// is useful to print when it is at the top but otherwise can be
// skipped during call stack printing.
cmListFileContext lfc;
lfc.FilePath = filePath;
return lfc;
}
static cmListFileContext FromListFileFunction(
cmListFileFunction const& lff, std::string const& fileName,
cm::optional<std::string> deferId = {})
@ -154,9 +165,6 @@ public:
// Default-constructed backtrace is empty.
cmListFileBacktrace() = default;
// Get a backtrace with the given file scope added to the top.
cmListFileBacktrace Push(std::string const& file) const;
// Get a backtrace with the given call context added to the top.
cmListFileBacktrace Push(cmListFileContext const& lfc) const;

View File

@ -491,7 +491,8 @@ cmMakefile::IncludeScope::IncludeScope(cmMakefile* mf,
, CheckCMP0011(false)
, ReportError(true)
{
this->Makefile->Backtrace = this->Makefile->Backtrace.Push(filenametoread);
this->Makefile->Backtrace = this->Makefile->Backtrace.Push(
cmListFileContext::FromListFilePath(filenametoread));
this->Makefile->PushFunctionBlockerBarrier();
@ -624,7 +625,8 @@ public:
: Makefile(mf)
, ReportError(true)
{
this->Makefile->Backtrace = this->Makefile->Backtrace.Push(filenametoread);
this->Makefile->Backtrace = this->Makefile->Backtrace.Push(
cmListFileContext::FromListFilePath(filenametoread));
this->Makefile->StateSnapshot =
this->Makefile->GetState()->CreateInlineListFileSnapshot(
@ -1587,7 +1589,8 @@ void cmMakefile::Configure()
// Add the bottom of all backtraces within this directory.
// We will never pop this scope because it should be available
// for messages during the generate step too.
this->Backtrace = this->Backtrace.Push(currentStart);
this->Backtrace =
this->Backtrace.Push(cmListFileContext::FromListFilePath(currentStart));
BuildsystemFileScope scope(this);