Skip to content

Commit a329637

Browse files
committed
Limit warnings about unmatched */ to code blocks
1 parent a153ed0 commit a329637

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

src/scanner.l

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ struct scannerYY_state
186186
int docBlockContext = 0;
187187
TextStream docBlock;
188188
QCString docBlockName;
189+
bool isCodeBlock = false;
189190
bool docBlockInBody = false;
190191
bool docBlockAutoBrief = false;
191192
char docBlockTerm = '\0';
@@ -246,7 +247,7 @@ static void addKnRArgInfo(yyscan_t yyscanner,const QCString &type,const QCString
246247
static int yyread(yyscan_t yyscanner,char *buf,int max_size);
247248
static void setJavaProtection(yyscan_t yyscanner);
248249
static void storeClangId(yyscan_t yyscanner,const char *id);
249-
static void startVerbatimBlock(yyscan_t yyscanner,const QCString &blockName,size_t fencedSize=0);
250+
static void startVerbatimBlock(yyscan_t yyscanner,const QCString &blockName,size_t fencedSize=0,bool codeBlock=false);
250251
static bool endVerbatimBlock(yyscan_t yyscanner,const QCString &blockName,size_t fencedSize=0);
251252

252253

@@ -7148,22 +7149,27 @@ NONLopt [^\n]*
71487149
startVerbatimBlock(yyscanner,"uml");
71497150
BEGIN(DocCopyBlock);
71507151
}
7151-
<DocBlock>{CMD}("verbatim"|"iliteral"|"latexonly"|"htmlonly"|"xmlonly"|"manonly"|"rtfonly"|"docbookonly"|"dot"|"msc"|"code")/[^a-z_A-Z0-9\-] { // verbatim command (which could contain nested comments!)
7152+
<DocBlock>{CMD}("verbatim"|"iliteral"|"latexonly"|"htmlonly"|"xmlonly"|"manonly"|"rtfonly"|"docbookonly"|"dot"|"msc")/[^a-z_A-Z0-9\-] { // verbatim command (which could contain nested comments!)
71527153
yyextra->docBlock << yytext;
71537154
startVerbatimBlock(yyscanner,&yytext[1]);
71547155
BEGIN(DocCopyBlock);
71557156
}
7157+
<DocBlock>{CMD}("code")/[^a-z_A-Z0-9\-] { // verbatim command (which could contain nested comments!)
7158+
yyextra->docBlock << yytext;
7159+
startVerbatimBlock(yyscanner,&yytext[1],0,true);
7160+
BEGIN(DocCopyBlock);
7161+
}
71567162
<DocBlock>"\\ilinebr "({B}*"*"+)?{B}{0,3}"~~~"[~]* {
71577163
QCString pat = substitute(yytext+9,"*"," "); // skip over "\ilinebr " part
71587164
yyextra->docBlock << "\\ilinebr ";
71597165
yyextra->docBlock << pat;
7160-
startVerbatimBlock(yyscanner,"~~~",pat.stripWhiteSpace().length());
7166+
startVerbatimBlock(yyscanner,"~~~",pat.stripWhiteSpace().length(),true);
71617167
BEGIN(DocCopyBlock);
71627168
}
71637169
<DocBlock>^({B}*"*"+)?{B}{0,3}"~~~"[~]* {
71647170
QCString pat = substitute(yytext,"*"," ");
71657171
yyextra->docBlock << pat;
7166-
startVerbatimBlock(yyscanner,"~~~",pat.stripWhiteSpace().length());
7172+
startVerbatimBlock(yyscanner,"~~~",pat.stripWhiteSpace().length(),true);
71677173
BEGIN(DocCopyBlock);
71687174
}
71697175
<DocBlock>"\\ilinebr "({B}*"*"+)?{B}{0,3}"```"[`]*/(".")?[a-zA-Z0-9#_-]+ |
@@ -7172,22 +7178,22 @@ NONLopt [^\n]*
71727178
QCString pat = substitute(yytext+9,"*"," "); // skip over "\ilinebr " part
71737179
yyextra->docBlock << "\\ilinebr ";
71747180
yyextra->docBlock << pat;
7175-
startVerbatimBlock(yyscanner,"```",pat.stripWhiteSpace().length());
7181+
startVerbatimBlock(yyscanner,"```",pat.stripWhiteSpace().length(),true);
71767182
BEGIN(DocCopyBlock);
71777183
}
71787184
<DocBlock>^({B}*"*"+)?{B}{0,3}"```"[`]*/(".")?[a-zA-Z0-9#_-]+ |
71797185
<DocBlock>^({B}*"*"+)?{B}{0,3}"```"[`]*/"{"[^}]+"}" |
71807186
<DocBlock>^({B}*"*"+)?{B}{0,3}"```"[`]* {
71817187
QCString pat = substitute(yytext,"*"," ");
71827188
yyextra->docBlock << pat;
7183-
startVerbatimBlock(yyscanner,"```",pat.stripWhiteSpace().length());
7189+
startVerbatimBlock(yyscanner,"```",pat.stripWhiteSpace().length(),true);
71847190
BEGIN(DocCopyBlock);
71857191
}
71867192
<DocBlock>{B}*"<"{CODE}">" {
71877193
if (yyextra->insideCS)
71887194
{
71897195
yyextra->docBlock << yytext;
7190-
startVerbatimBlock(yyscanner,"<code>");
7196+
startVerbatimBlock(yyscanner,"<code>",0,true);
71917197
BEGIN(DocCopyBlock);
71927198
}
71937199
else
@@ -7332,7 +7338,7 @@ NONLopt [^\n]*
73327338
{
73337339
yyextra->nestedComment--;
73347340
}
7335-
else if (yytext[0]=='*' && yyextra->nestedComment==0) // end comment without start
7341+
else if (yytext[0]=='*' && yyextra->nestedComment==0 && yyextra->isCodeBlock) // end comment without start
73367342
{
73377343
warn(yyextra->fileName,yyextra->yyLineNr,
73387344
"Found end of C comment inside a '{}' block without matching start of the comment!"
@@ -7718,7 +7724,7 @@ static QCString stripFuncPtr(const QCString &type)
77187724
}
77197725

77207726
//-----------------------------------------------------------------
7721-
static void startVerbatimBlock(yyscan_t yyscanner,const QCString &blockName,size_t fencedSize)
7727+
static void startVerbatimBlock(yyscan_t yyscanner,const QCString &blockName,size_t fencedSize,bool codeBlock)
77227728
{
77237729
struct yyguts_t *yyg = (struct yyguts_t*)yyscanner;
77247730
if (Config_getBool(MARKDOWN_SUPPORT))
@@ -7727,6 +7733,7 @@ static void startVerbatimBlock(yyscan_t yyscanner,const QCString &blockName,size
77277733
}
77287734
yyextra->docBlockName=blockName;
77297735
yyextra->fencedSize=fencedSize;
7736+
yyextra->isCodeBlock=codeBlock;
77307737
yyextra->nestedComment=0;
77317738
}
77327739

0 commit comments

Comments
 (0)