2008-02-20 Tobias Burnus <burnus@net-b.de>
authorburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 20 Feb 2008 18:21:14 +0000 (18:21 +0000)
committerburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 20 Feb 2008 18:21:14 +0000 (18:21 +0000)
        PR fortran/34997
        * match.c (gfc_match_name): Improve error message for '$'.

2008-02-20  Tobias Burnus  <burnus@net-b.de>

        PR fortran/34997
        * gfortran.dg/dollar_sym_1.f90: New.
        * gfortran.dg/dollar_sym_2.f90: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@132488 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/match.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/dollar_sym_1.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/dollar_sym_2.f90 [new file with mode: 0644]

index ea74958..cdce280 100644 (file)
@@ -1,3 +1,8 @@
+2008-02-20  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/34997
+       * match.c (gfc_match_name): Improve error message for '$'.
+
 2008-02-19  Daniel Franke  <franke.daniel@gmail.com>
 
        PR fortran/35030
index 324e52e..c1920ff 100644 (file)
@@ -519,6 +519,13 @@ gfc_match_name (char *buffer)
     }
   while (ISALNUM (c) || c == '_' || (gfc_option.flag_dollar_ok && c == '$'));
 
+  if (c == '$' && !gfc_option.flag_dollar_ok)
+    {
+      gfc_error ("Invalid character '$' at %C. Use -fdollar-ok to allow it as an extension");
+      return MATCH_ERROR;
+    }
+
+
   buffer[i] = '\0';
   gfc_current_locus = old_loc;
 
index 04c799f..34ccb96 100644 (file)
@@ -1,3 +1,9 @@
+2008-02-20  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/34997
+       * gfortran.dg/dollar_sym_1.f90: New.
+       * gfortran.dg/dollar_sym_2.f90: New.
+
 2008-02-20  Richard Guenther  <rguenther@suse.de>
 
        PR middle-end/35265
diff --git a/gcc/testsuite/gfortran.dg/dollar_sym_1.f90 b/gcc/testsuite/gfortran.dg/dollar_sym_1.f90
new file mode 100644 (file)
index 0000000..37f0f88
--- /dev/null
@@ -0,0 +1,9 @@
+! { dg-do compile }
+! PR fortran/34997
+! Variable names containing $ signs
+! 
+      REAL*4 PLT$C_HOUSTPIX   ! { dg-error "Invalid character '\\$'" }
+      INTEGER PLT$C_COMMAND   ! { dg-error "Invalid character '\\$'" }
+      PARAMETER (PLT$B_OPC=0) ! { dg-error "Invalid character '\\$'" }
+      common /abc$def/ PLT$C_HOUSTPIX, PLT$C_COMMAND ! { dg-error "Invalid character '\\$'" }
+      end
diff --git a/gcc/testsuite/gfortran.dg/dollar_sym_2.f90 b/gcc/testsuite/gfortran.dg/dollar_sym_2.f90
new file mode 100644 (file)
index 0000000..800a728
--- /dev/null
@@ -0,0 +1,11 @@
+! { dg-do compile }
+! { dg-options "-fdollar-ok" }
+!
+! PR fortran/34997
+! Variable names containing $ signs
+! 
+      REAL*4 PLT$C_HOUSTPIX
+      INTEGER PLT$C_COMMAND
+      PARAMETER (PLT$B_OPC=0)
+      common /abc$def/ PLT$C_HOUSTPIX, PLT$C_COMMAND
+      end