2010-06-25 Tobias Burnus <burnus@net-b.de>
* parse.c (next_free, next_fixed): Allow ";" as first character.
2010-06-25 Tobias Burnus <burnus@net-b.de>
* gfortran.dg/semicolon_fixed.f: Update.
* gfortran.dg/semicolon_fixed_2.f: New.
* gfortran.dg/semicolon_free_2.f90: New.
* gfortran.dg/semicolon_free.f90: Update.
===================================================================
@@ -717,7 +717,9 @@ next_free (void)
if (at_bol && c == ';')
{
- gfc_error_now ("Semicolon at %C needs to be preceded by statement");
+ if (!(gfc_option.allow_std & GFC_STD_F2008))
+ gfc_error_now ("Fortran 2008: Semicolon at %C without preceding "
+ "statement");
gfc_next_ascii_char (); /* Eat up the semicolon. */
return ST_NONE;
}
@@ -853,7 +855,11 @@ next_fixed (void)
if (c == ';')
{
- gfc_error_now ("Semicolon at %C needs to be preceded by statement");
+ if (digit_flag)
+ gfc_error_now ("Semicolon at %C needs to be preceded by statement");
+ else if (!(gfc_option.allow_std & GFC_STD_F2008))
+ gfc_error_now ("Fortran 2008: Semicolon at %C without preceding "
+ "statement");
return ST_NONE;
}
===================================================================
@@ -0,0 +1,12 @@
+! { dg-do compile }
+! { dg-do options "-std=f2008" }
+
+! PR 19259 Semicolon cannot start a line
+! but it F2008 it can!
+ x=1; y=1;
+ x=2;;
+ x=3;
+ ; ! OK
+ ;; ! OK
+ 900 ; ! { dg-error "Semicolon at" }
+ end
===================================================================
@@ -1,9 +1,11 @@
! { dg-do compile }
-! PR 19259 Semicolon cannot start a line
+! { dg-do options "-std=f2003" }
+!
+! PR 19259 Semicolon cannot start a line (in F2003)
x=1; y=1;
x=2;;
x=3;
- ; ! { dg-error "Semicolon at" }
- ;; ! { dg-error "Semicolon at" }
+ ; ! { dg-error "Fortran 2008: Semicolon at" }
+ ;; ! { dg-error "Fortran 2008: Semicolon at" }
900 ; ! { dg-error "Semicolon at" }
end
===================================================================
@@ -0,0 +1,10 @@
+! { dg-do compile }
+! { dg-options "-std=f2008" }
+! PR 19259 Semicolon cannot start a line
+x=1; y=1;
+x=2;;
+x=3;
+ ; ! OK
+;; ! OK
+111 ; ! { dg-error "Semicolon at" }
+end
===================================================================
@@ -1,4 +1,5 @@
! { dg-do compile }
+! { dg-options "-std=f2003" }
! PR 19259 Semicolon cannot start a line
x=1; y=1;
x=2;;