diff options
author | albert-github <albert.tests@gmail.com> | 2015-03-04 17:01:28 (GMT) |
---|---|---|
committer | albert-github <albert.tests@gmail.com> | 2015-03-04 17:01:28 (GMT) |
commit | a7eef85a89d8772b7ab97a4ba378cc7e78c988cc (patch) | |
tree | d9183f0a4dee6e32f2926ea5ef4484b4f38f3985 | |
parent | 5e5615a9d2da8b923565c1bcadc9db48efbc75d0 (diff) | |
download | Doxygen-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.cpp | 10 | ||||
-rw-r--r-- | src/message.h | 1 | ||||
-rw-r--r-- | src/namespacedef.cpp | 2 |
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 ""; |