summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authoralbert-github <albert.tests@gmail.com>2019-09-23 11:27:51 (GMT)
committeralbert-github <albert.tests@gmail.com>2019-09-23 11:27:51 (GMT)
commit5a25a7f33af4a53462a6ddea9e8b82d0d9f23280 (patch)
tree0fc728b9e0a98f7136625efe6a9d51436865f446 /src
parent1024ab18b435dac7ba4ab94a087bb950b3bdf2c0 (diff)
downloadDoxygen-5a25a7f33af4a53462a6ddea9e8b82d0d9f23280.zip
Doxygen-5a25a7f33af4a53462a6ddea9e8b82d0d9f23280.tar.gz
Doxygen-5a25a7f33af4a53462a6ddea9e8b82d0d9f23280.tar.bz2
Bug 340202 - @code: static_cast, const_cast, etc C++ keywords
The `*_cast` had already been introduced, but there were some other places that needed the "REJECT" as well. Also the cast was missing a whitesace between the cast name and the `<`. Tested also against he doxygen internal documentation.
Diffstat (limited to 'src')
-rw-r--r--src/code.l14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/code.l b/src/code.l
index 4998705..f8a062f 100644
--- a/src/code.l
+++ b/src/code.l
@@ -2606,7 +2606,7 @@ RAWEND ")"[^ \t\(\)\\]{0,16}\"
<TemplCast>[*^]* {
codifyLines(yytext);
}
-<Body,FuncCall>{CASTKW}"<" { // static_cast<T>(
+<Body,MemberCall2,FuncCall>{CASTKW}{B}*"<" { // static_cast<T>(
startFontClass("keyword");
codifyLines(yytext);
endFontClass();
@@ -2651,6 +2651,12 @@ RAWEND ")"[^ \t\(\)\\]{0,16}\"
}
<Body>{SCOPETNAME}{B}*"<"[^\n\/\-\.\{\"\>]*">"/{BN}*"(" |
<Body>{SCOPETNAME}/{BN}*"(" { // a() or c::a() or t<A,B>::a() or A\B\foo()
+ int i=QCString(yytext).find('<');
+ QCString kw = QCString(yytext).left(i).stripWhiteSpace();
+ if (kw.right(5)=="_cast" && YY_START==Body)
+ {
+ REJECT;
+ }
addType();
generateFunctionLink(*g_code,yytext);
g_bracketCount=0;
@@ -3062,6 +3068,12 @@ RAWEND ")"[^ \t\(\)\\]{0,16}\"
endFontClass();
}
<MemberCall2,FuncCall>{ID}(({B}*"<"[^\n\[\](){}<>]*">")?({B}*"::"{B}*{ID})?)* {
+ int i=QCString(yytext).find('<');
+ QCString kw = QCString(yytext).left(i).stripWhiteSpace();
+ if (kw.right(5)=="_cast")
+ {
+ REJECT;
+ }
addParmType();
g_parmName=yytext;
generateClassOrGlobalLink(*g_code,yytext,!g_insideBody);