diff options
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/match.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/do_iterator.f90 | 2 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/gomp/pr29759.f90 | 8 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/invalid_name.f90 | 6 |
6 files changed, 26 insertions, 5 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 116d4ac7e36..5615d1f91a6 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2007-01-07 Bernhard Fischer <aldot@gcc.gnu.org> + + PR fortran/27698 + * match.c (gfc_match_name): Print diagnostics for invalid + character in names. + 2007-01-06 Steven G. Kargl <kargl@gcc.gnu.org> * array.c: Fix whitespace in comment table. diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c index 0dc2c7295b1..376f0a538c7 100644 --- a/gcc/fortran/match.c +++ b/gcc/fortran/match.c @@ -396,6 +396,8 @@ gfc_match_name (char *buffer) c = gfc_next_char (); if (!ISALPHA (c)) { + if (gfc_error_flag_test() == 0) + gfc_error ("Invalid character in name at %C"); gfc_current_locus = old_loc; return MATCH_NO; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index cc6dd8ebc7e..3047d1ed28b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2007-01-07 Bernhard Fischer <aldot@gcc.gnu.org> + + PR fortran/27698 + * gfortran.dg/invalid_name.f90: New test. + * gfortran.dg/do_iterator.f90: Adjust pattern for expected error. + * gfortran.dg/gomp/pr29759.f90: Ditto. + 2007-01-06 Steven G. Kargl <kargl@gcc.gnu.org> * gfortran.dg/present_1.f90: Update error message. diff --git a/gcc/testsuite/gfortran.dg/do_iterator.f90 b/gcc/testsuite/gfortran.dg/do_iterator.f90 index 0e11aa23339..cb3e50d59bc 100644 --- a/gcc/testsuite/gfortran.dg/do_iterator.f90 +++ b/gcc/testsuite/gfortran.dg/do_iterator.f90 @@ -10,4 +10,4 @@ DO I=1,5 ! { dg-error "cannot be redefined" "changing do-iterator 3" } READ(5,*,iostat=i) j ! { dg-error "cannot be redefined" "changing do-iterator 3" } ENDDO END - +! { dg-error "Invalid character" "character" { target *-*-* } 7 } diff --git a/gcc/testsuite/gfortran.dg/gomp/pr29759.f90 b/gcc/testsuite/gfortran.dg/gomp/pr29759.f90 index 19a19c978ae..b723eeb3c76 100644 --- a/gcc/testsuite/gfortran.dg/gomp/pr29759.f90 +++ b/gcc/testsuite/gfortran.dg/gomp/pr29759.f90 @@ -22,21 +22,21 @@ PROGRAM test_omp !$OMP PARALLEL & ! { dg-error "Unclassifiable OpenMP" } -!$ NUM_THREADS(2) ! { dg-error "Unclassifiable" } +!$ NUM_THREADS(2) ! { dg-error "Unclassifiable|Invalid character" } !$OMP END PARALLEL ! { dg-error "Unexpected" } !$OMP PARALLEL & ! { dg-error "Unclassifiable OpenMP" } -!$ & NUM_THREADS(2) ! { dg-error "Unclassifiable" } +!$ & NUM_THREADS(2) ! { dg-error "Unclassifiable|Invalid character" } !$OMP END PARALLEL ! { dg-error "Unexpected" } !$OMP PARALLEL & ! { dg-error "Unclassifiable OpenMP" } ! -!$ NUM_THREADS(2) ! { dg-error "Unclassifiable" } +!$ NUM_THREADS(2) ! { dg-error "Unclassifiable|Invalid character" } !$OMP END PARALLEL ! { dg-error "Unexpected" } !$OMP PARALLEL & ! { dg-error "Unclassifiable OpenMP" } ! -!$ & NUM_THREADS(2) ! { dg-error "Unclassifiable" } +!$ & NUM_THREADS(2) ! { dg-error "Unclassifiable|Invalid character" } !$OMP END PARALLEL ! { dg-error "Unexpected" } END PROGRAM diff --git a/gcc/testsuite/gfortran.dg/invalid_name.f90 b/gcc/testsuite/gfortran.dg/invalid_name.f90 new file mode 100644 index 00000000000..895664f8491 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/invalid_name.f90 @@ -0,0 +1,6 @@ +! { dg-do compile } +! Tests the fix for PR27698, where names not starting with a letter were +! rejected but not diagnosed with a proper message. +SUBROUTINE _foo ! { dg-error "Invalid character in name" } +END + |