From 23f337e64b95d3fa08f32980c866669b190c872f Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Fri, 6 Sep 2013 13:54:54 +0200 Subject: Bug 707567 - Asterisks in comment wrongly displayed for @code --- src/scanner.l | 40 +++++++++++++++++++++++++++++++++++++--- testing/014/indexpage.xml | 18 ++++++------------ 2 files changed, 43 insertions(+), 15 deletions(-) diff --git a/src/scanner.l b/src/scanner.l index 40f653a..9e2cfd5 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -191,6 +191,7 @@ static QCString g_delimiter; static int g_column; static int g_fencedSize=0; +static bool g_nestedComment=0; //----------------------------------------------------------------------------- @@ -6155,23 +6156,27 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) docBlockName.at(1)='}'; } g_fencedSize=0; + g_nestedComment=FALSE; BEGIN(DocCopyBlock); } "<"{PRE}">" { docBlock+=yytext; docBlockName="
";
                                           g_fencedSize=0;
+                                          g_nestedComment=FALSE;
   					  BEGIN(DocCopyBlock);
   					}
 {CMD}("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"manonly"|"dot"|"code")/[^a-z_A-Z0-9]	{ // verbatim command (which could contain nested comments!)
                                           docBlock+=yytext;
 				          docBlockName=&yytext[1];
                                           g_fencedSize=0;
+                                          g_nestedComment=FALSE;
   					  BEGIN(DocCopyBlock);
   					}
 "~~~"[~]*                     {
                                           docBlock+=yytext;
                                           g_fencedSize=yyleng;
+                                          g_nestedComment=FALSE;
                                           BEGIN(DocCopyBlock);
                                         }
 {B}*""                  {
@@ -6179,6 +6184,7 @@ OPERATOR  "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
 					  {
 					    docBlock+=yytext;
 					    docBlockName="";
+                                            g_nestedComment=FALSE;
 					    BEGIN(DocCopyBlock);
 					  }
 					  else
@@ -6240,12 +6246,32 @@ OPERATOR  "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
                                             docBlock+=indent;
                                           }
   					}
-^{B}*+"*"/{BN}*		{ // start of a comment line
+^{B}*"*"+/{BN}+"*"{BN}*	{ // start of a comment line with two *'s
   					  if (docBlockName=="code")
                                           {
                                             QCString indent;
-                                            indent.fill(' ',computeIndent(yytext,0)-1);
-                                            docBlock+=indent+"*";
+                                            indent.fill(' ',computeIndent(yytext,0));
+                                            docBlock+=indent;
+                                          }
+                                          else
+					  {
+					    REJECT;
+					  }
+  					}
+^{B}*"*"+/{BN}*		{ // start of a comment line with one *
+  					  if (docBlockName=="code")
+                                          {
+                                            QCString indent;
+                                            if (g_nestedComment) // keep * it is part of the code
+                                            {
+                                              indent.fill(' ',computeIndent(yytext,-1));
+                                              docBlock+=indent+"*";
+                                            }
+                                            else // remove * it is part of the comment block
+                                            {
+                                              indent.fill(' ',computeIndent(yytext,0));
+                                              docBlock+=indent;
+                                            }
                                           }
                                           else
 					  {
@@ -6263,6 +6289,14 @@ OPERATOR  "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
   					  docBlock+=yytext;
   					}
 "/*"|"*/"|"//"		{
+                                          if (yytext[1]=='*')
+                                          {
+                                            g_nestedComment=TRUE;
+                                          }
+                                          else if (yytext[0]=='*')
+                                          {
+                                            g_nestedComment=FALSE;
+                                          }
   					  docBlock+=yytext;
 					}
 \n			{ // newline
diff --git a/testing/014/indexpage.xml b/testing/014/indexpage.xml
index 9662b9c..c2fe57a 100644
--- a/testing/014/indexpage.xml
+++ b/testing/014/indexpage.xml
@@ -7,40 +7,34 @@
       
         
           
-            *
             #commentinPython
             
           
           
-            *
+            
             class
             Python:
           
           
-            *
+            
+              
+              
+            
             pass
-            
-          
-          
-            *
           
         
       
       
         
           
-            *
             //commentinacodeblock
             
           
           
-            *
+            
             class
             Cpp{};
           
-          
-            *
-          
         
       
     
-- 
cgit v0.12