[geany/geany] 497bfa: Fortran: fix line continuation inside comments

Colomban Wendling git-noreply at xxxxx
Fri Feb 14 23:33:05 UTC 2014


Branch:      refs/heads/master
Author:      Colomban Wendling <ban at herbesfolles.org>
Committer:   Colomban Wendling <ban at herbesfolles.org>
Date:        Fri, 14 Feb 2014 23:33:05 UTC
Commit:      497bfaed465ac3aa3baf394029189a01a043ff2e
             https://github.com/geany/geany/commit/497bfaed465ac3aa3baf394029189a01a043ff2e

Log Message:
-----------
Fortran: fix line continuation inside comments

Fix improperly handling '&' at the end of the first comment line after
a non-comment line as a line continuation.

Part of bug #1023.


Modified Paths:
--------------
    tagmanager/ctags/fortran.c
    tests/ctags/Makefile.am
    tests/ctags/fortran_line_continuation.f90
    tests/ctags/fortran_line_continuation.f90.tags

Modified: tagmanager/ctags/fortran.c
8 files changed, 4 insertions(+), 4 deletions(-)
===================================================================
@@ -698,7 +698,7 @@ static int skipToNextLine (void)
 	return c;
 }
 
-static int getFreeFormChar (void)
+static int getFreeFormChar (boolean inComment)
 {
 	static boolean newline = TRUE;
 	boolean advanceLine = FALSE;
@@ -708,7 +708,7 @@ static int getFreeFormChar (void)
 	 * free-format text line is an ampersand then the next non-comment
 	 * line is a continuation line.
 	 */
-	if (c == '&')
+	if (! inComment && c == '&')
 	{
 		do
 			c = fileGetc ();
@@ -757,7 +757,7 @@ static int getChar (void)
 		Ungetc = '\0';
 	}
 	else if (FreeSourceForm)
-		c = getFreeFormChar ();
+		c = getFreeFormChar (FALSE);
 	else
 		c = getFixedFormChar ();
 	return c;
@@ -992,7 +992,7 @@ static void readToken (tokenInfo *const token)
 			if (FreeSourceForm)
 			{
 				do
-				   c = getChar ();
+					c = getFreeFormChar (TRUE);
 				while (c != '\n' && c != EOF);
 			}
 			else


Modified: tests/ctags/Makefile.am
1 files changed, 1 insertions(+), 0 deletions(-)
===================================================================
@@ -127,6 +127,7 @@ test_sources = \
 	forall_module.f90				\
 	format.pl						\
 	fortran_associate.f90			\
+	fortran_line_continuation.f90	\
 	func_typedef.h					\
 	general.cs						\
 	hex2dec.sql						\


Modified: tests/ctags/fortran_line_continuation.f90
17 files changed, 17 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,17 @@
+! this is a comment and continuation must not be handled in it &
+! this is another line of comment
+
+#if dummy
+function &
+  ! just a test for support of comments after a line continuation
+  ! below is a preprocessor line, also just to test continuation
+  #endif
+  ! still testing
+& do_stuff(a)
+end function do_stuff
+
+function &
+  ! actually the ampersand isn't required at the start of the continuation line
+  #pragma stuff
+do_stuff_again(b)
+end function do_stuff_again


Modified: tests/ctags/fortran_line_continuation.f90.tags
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,3 @@
+# format=tagmanager
+do_stuffÌ16Ö0
+do_stuff_againÌ16Ö0



--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).


More information about the Commits mailing list