summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoralbert-github <albert.tests@gmail.com>2015-03-04 17:01:28 (GMT)
committeralbert-github <albert.tests@gmail.com>2015-03-04 17:01:28 (GMT)
commita7eef85a89d8772b7ab97a4ba378cc7e78c988cc (patch)
treed9183f0a4dee6e32f2926ea5ef4484b4f38f3985
parent5e5615a9d2da8b923565c1bcadc9db48efbc75d0 (diff)
downloadDoxygen-a7eef85a89d8772b7ab97a4ba378cc7e78c988cc.zip
Doxygen-a7eef85a89d8772b7ab97a4ba378cc7e78c988cc.tar.gz
Doxygen-a7eef85a89d8772b7ab97a4ba378cc7e78c988cc.tar.bz2
Better error message in case of IDL inconsistency
In case of an IDL internal doxygen inconsistency ("error: Internal inconsistency: namespace in IDL not module, library or constant group ", see forum report: http://doxygen.10944.n7.nabble.com/Internal-inconsistency-Which-file-td7057.html) it is hard to find out which file causes the problem. In this case the comment block with @namespace was the "problem"). This patch solves this by adding the file and line number of the source file causing the problem.
-rw-r--r--src/message.cpp10
-rw-r--r--src/message.h1
-rw-r--r--src/namespacedef.cpp2
3 files changed, 11 insertions, 2 deletions
diff --git a/src/message.cpp b/src/message.cpp
index 4156720..919f3a0 100644
--- a/src/message.cpp
+++ b/src/message.cpp
@@ -151,7 +151,7 @@ static void format_warn(const char *file,int line,const char *text)
static void do_warn(const char *tag, const char *file, int line, const char *prefix, const char *fmt, va_list args)
{
- if (!Config_getBool(tag)) return; // warning type disabled
+ if (tag && !Config_getBool(tag)) return; // warning type disabled
const int bufSize = 40960;
char text[bufSize];
int l=0;
@@ -216,6 +216,14 @@ void err(const char *fmt, ...)
va_end(args);
}
+extern void err_full(const char *file,int line,const char *fmt, ...)
+{
+ va_list args;
+ va_start(args, fmt);
+ do_warn(NULL, file, line, error_str, fmt, args);
+ va_end(args);
+}
+
void printlex(int dbg, bool enter, const char *lexName, const char *fileName)
{
const char *enter_txt = "entering";
diff --git a/src/message.h b/src/message.h
index 481e8bf..70811fb 100644
--- a/src/message.h
+++ b/src/message.h
@@ -29,6 +29,7 @@ extern void warn_undoc(const char *file,int line,const char *fmt, ...);
extern void warn_doc_error(const char *file,int line,const char *fmt, ...);
extern void warn_uncond(const char *fmt, ...);
extern void err(const char *fmt, ...);
+extern void err_full(const char *file,int line,const char *fmt, ...);
void initWarningFormat();
extern void printlex(int dbg, bool enter, const char *lexName, const char *fileName);
diff --git a/src/namespacedef.cpp b/src/namespacedef.cpp
index 8001544..cce32af 100644
--- a/src/namespacedef.cpp
+++ b/src/namespacedef.cpp
@@ -1188,7 +1188,7 @@ QCString NamespaceDef::compoundTypeString() const
}
else
{
- err("Internal inconsistency: namespace in IDL not module, library or constant group\n");
+ err_full(getDefFileName(),getDefLine(),"Internal inconsistency: namespace in IDL not module, library or constant group");
}
}
return "";