ENH: add better error reports in parsing cmake files, like what file has the error
This commit is contained in:
parent
c9caf2390c
commit
8591786867
|
@ -76,7 +76,8 @@ bool cmListFileCache::CacheFile(const char* path)
|
||||||
cmListFileFunction inFunction;
|
cmListFileFunction inFunction;
|
||||||
if(cmSystemTools::ParseFunction(fin,
|
if(cmSystemTools::ParseFunction(fin,
|
||||||
inFunction.m_Name,
|
inFunction.m_Name,
|
||||||
inFunction.m_Arguments))
|
inFunction.m_Arguments,
|
||||||
|
path))
|
||||||
{
|
{
|
||||||
inFile.m_Functions.push_back(inFunction);
|
inFile.m_Functions.push_back(inFunction);
|
||||||
}
|
}
|
||||||
|
|
|
@ -256,7 +256,9 @@ void cmMakefile::ExecuteCommand(std::string &name,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
cmSystemTools::Error("unknown CMake command ", name.c_str());
|
cmSystemTools::Error("unknown CMake command:", name.c_str(),
|
||||||
|
"\nReading cmake file in directory:" ,
|
||||||
|
m_cmCurrentDirectory.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -486,7 +486,8 @@ const char *cmSystemTools::ConvertToWindowsSlashesAndCleanUp(std::string& path)
|
||||||
|
|
||||||
bool cmSystemTools::ParseFunction(std::ifstream& fin,
|
bool cmSystemTools::ParseFunction(std::ifstream& fin,
|
||||||
std::string& name,
|
std::string& name,
|
||||||
std::vector<std::string>& arguments)
|
std::vector<std::string>& arguments,
|
||||||
|
const char* filename)
|
||||||
{
|
{
|
||||||
name = "";
|
name = "";
|
||||||
arguments = std::vector<std::string>();
|
arguments = std::vector<std::string>();
|
||||||
|
@ -551,8 +552,8 @@ bool cmSystemTools::ParseFunction(std::ifstream& fin,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
cmSystemTools::Error("Parse error in read function missing end )",
|
cmSystemTools::Error("Parse error in read function missing end )\nIn File: ",
|
||||||
inbuffer);
|
filename, "\nCurrent line:", inbuffer);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -560,7 +561,8 @@ bool cmSystemTools::ParseFunction(std::ifstream& fin,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
cmSystemTools::Error("Parse error in read function ", inbuffer);
|
cmSystemTools::Error("Parse error in read function\nIn file:",
|
||||||
|
filename, "\nCurrent line:", inbuffer);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -122,11 +122,13 @@ public:
|
||||||
/**
|
/**
|
||||||
* Read a CMake command (or function) from an input file. This
|
* Read a CMake command (or function) from an input file. This
|
||||||
* returns the name of the function and a list of its
|
* returns the name of the function and a list of its
|
||||||
* arguments.
|
* arguments. The last argument is the name of the file that
|
||||||
|
* the ifstream points to, and is used for debug info only.
|
||||||
*/
|
*/
|
||||||
static bool ParseFunction(std::ifstream&,
|
static bool ParseFunction(std::ifstream&,
|
||||||
std::string& name,
|
std::string& name,
|
||||||
std::vector<std::string>& arguments);
|
std::vector<std::string>& arguments,
|
||||||
|
const char* filename);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Extract white-space separated arguments from a string.
|
* Extract white-space separated arguments from a string.
|
||||||
|
|
|
@ -109,7 +109,7 @@ void ctest::ProcessDirectory(int &passed, int &failed)
|
||||||
|
|
||||||
while ( fin )
|
while ( fin )
|
||||||
{
|
{
|
||||||
if(cmSystemTools::ParseFunction(fin, name, args))
|
if(cmSystemTools::ParseFunction(fin, name, args, "DartTestfile.txt"))
|
||||||
{
|
{
|
||||||
if (name == "SUBDIRS")
|
if (name == "SUBDIRS")
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue