]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/39229 (No warning of truncated lines if a continuation line follows)
authorJerry DeLisle <jvdelisle@gcc.gnu.org>
Tue, 1 Sep 2009 03:02:07 +0000 (03:02 +0000)
committerJerry DeLisle <jvdelisle@gcc.gnu.org>
Tue, 1 Sep 2009 03:02:07 +0000 (03:02 +0000)
2009-08-31  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR fortran/39229
* scanner.c (next_char): Fix typo in comment.
(gfc_get_char_literal): Warn if truncate flag is set for both fixed and
free form source, adjusting error locus as needed.
* parse.c (next_fixed): Clear the truncate flag.
(next_statement): Remove truncate warning.

From-SVN: r151258

gcc/fortran/ChangeLog
gcc/fortran/parse.c
gcc/fortran/scanner.c

index e5a673ab2db0627f95684eb74a7ba47c4b945d2c..f690ab1b6d9f1ed26f360e6faee690c4e81ddbfc 100644 (file)
@@ -1,3 +1,12 @@
+2009-08-31  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR fortran/39229
+       * scanner.c (next_char): Fix typo in comment.
+       (gfc_get_char_literal): Warn if truncate flag is set for both fixed and
+       free form source, adjusting error locus as needed.
+       * parse.c (next_fixed): Clear the truncate flag.
+       (next_statement): Remove truncate warning.
+
 2009-08-31  Janus Weil  <janus@gcc.gnu.org>
            Paul Thomas  <pault@gcc.gnu.org>
 
        (gfc_find_typebound_intrinsic_op): Ditto.
        (gfc_find_typebound_proc), (gfc_find_typebound_user_op): New locus arg.
 
-2009-08-22      Bud Davis <bdavis9659@sbcglobal.net>
+2009-08-22  Bud Davis <bdavis9659@sbcglobal.net>
 
        PR fortran/28093
-       * io.c: reverted previous patch
+       * io.c: reverted previous patch.
 
 2009-08-25  Janne Blomqvist  <jb@gcc.gnu.org>
 
        allocation-object are conformable.
        (gfc_match_allocate): Use new functions.  Match SOURCE= tag.
 
-2009-08-22     Bud Davis <bdavis9659@sbcglobal.net>
+2009-08-22  Bud Davis <bdavis9659@sbcglobal.net>
 
        PR fortran/28093
        * io.c : added variable to store original len of fmt
index 2552fcd67886520288b2eb40dfeade6c15eccfa9..e7439892f158800a60f79d00a74591054c531f32 100644 (file)
@@ -849,6 +849,8 @@ next_fixed (void)
 blank_line:
   if (digit_flag)
     gfc_warning ("Ignoring statement label in empty statement at %C");
+    
+  gfc_current_locus.lb->truncated = 0;
   gfc_advance_line ();
   return ST_NONE;
 }
@@ -862,6 +864,7 @@ next_statement (void)
 {
   gfc_statement st;
   locus old_locus;
+
   gfc_new_block = NULL;
 
   gfc_current_ns->old_cl_list = gfc_current_ns->cl_list;
@@ -871,14 +874,7 @@ next_statement (void)
       gfc_buffer_error (1);
 
       if (gfc_at_eol ())
-       {
-         if ((gfc_option.warn_line_truncation || gfc_current_form == FORM_FREE)
-             && gfc_current_locus.lb
-             && gfc_current_locus.lb->truncated)
-           gfc_warning_now ("Line truncated at %C");
-
-         gfc_advance_line ();
-       }
+       gfc_advance_line ();
 
       gfc_skip_comments ();
 
index 8cbb3c55b5c9bc4aa203cf5917051fed1f00ca48..711042ddcb25952cef2107fa5586b988074771a6 100644 (file)
@@ -614,7 +614,7 @@ next_char (void)
 
 /* Skip a comment.  When we come here the parse pointer is positioned
    immediately after the comment character.  If we ever implement
-   compiler directives withing comments, here is where we parse the
+   compiler directives within comments, here is where we parse the
    directive.  */
 
 static void
@@ -1080,6 +1080,17 @@ restart:
            }
        }
 
+      /* Check to see if the continuation line was truncated.  */
+      if (gfc_option.warn_line_truncation && gfc_current_locus.lb != NULL
+         && gfc_current_locus.lb->truncated)
+       {
+         int maxlen = gfc_option.free_line_length;
+         gfc_current_locus.lb->truncated = 0;
+         gfc_current_locus.nextc += maxlen;
+         gfc_warning_now ("Line truncated at %L", &gfc_current_locus);
+         gfc_current_locus.nextc -= maxlen;
+       }
+
       /* Now find where it continues. First eat any comment lines.  */
       openmp_cond_flag = skip_free_comments ();
 
@@ -1158,6 +1169,14 @@ restart:
       if (c != '\n')
        goto done;
 
+      /* Check to see if the continuation line was truncated.  */
+      if (gfc_option.warn_line_truncation && gfc_current_locus.lb != NULL
+         && gfc_current_locus.lb->truncated)
+       {
+         gfc_current_locus.lb->truncated = 0;
+         gfc_warning_now ("Line truncated at %L", &gfc_current_locus);
+       }
+
       prev_openmp_flag = openmp_flag;
       continue_flag = 1;
       old_loc = gfc_current_locus;