diff options
author | Steven G. Kargl <kargl@gcc.gnu.org> | 2015-05-18 23:26:38 +0000 |
---|---|---|
committer | Steven G. Kargl <kargl@gcc.gnu.org> | 2015-05-18 23:26:38 +0000 |
commit | 898344a944c18e89047d4293468a28202aa3190d (patch) | |
tree | 8fdb0f4887a6ae4707e2f001cbaba24f187a8287 /gcc | |
parent | 377e37c15987acaaddd0e51282adb40d49e91758 (diff) | |
download | gcc-898344a944c18e89047d4293468a28202aa3190d.zip gcc-898344a944c18e89047d4293468a28202aa3190d.tar.gz gcc-898344a944c18e89047d4293468a28202aa3190d.tar.bz2 |
re PR fortran/66057 (ICE for incomplete generic statement (gfc_match_generic))
2015-05-18 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/66057
* interface.c(gfc_match_end_interface): Enforce F2008 C1202 (R1201).
* match.c(gfc_op2string): Return 'none' for INTRINSIC_NONE.
2015-05-18 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/66057
* gfortran.dg/interface_operator_1.f90: New tests.
From-SVN: r223326
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/interface.c | 8 | ||||
-rw-r--r-- | gcc/fortran/match.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/interface_operator_1.f90 | 10 |
5 files changed, 30 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 0650883..de7be7a 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,5 +1,11 @@ 2015-05-18 Steven G. Kargl <kargl@gcc.gnu.org> + PR fortran/66106 + * interface.c(gfc_match_end_interface): Enforce F2008 C1202 (R1201). + * match.c(gfc_op2string): Return 'none' for INTRINSIC_NONE. + +2015-05-18 Steven G. Kargl <kargl@gcc.gnu.org> + PR fortran/66057 * decl.c(gfc_match_generic): Detected a malformed GENERIC statement. diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c index 0501c1d..d011d84 100644 --- a/gcc/fortran/interface.c +++ b/gcc/fortran/interface.c @@ -346,8 +346,12 @@ gfc_match_end_interface (void) break; m = MATCH_ERROR; - gfc_error ("Expecting %<END INTERFACE OPERATOR (%s)%> at %C, " - "but got %s", s1, s2); + if (strcmp(s2, "none") == 0) + gfc_error ("Expecting %<END INTERFACE OPERATOR (%s)%> " + "at %C, ", s1); + else + gfc_error ("Expecting %<END INTERFACE OPERATOR (%s)%> at %C, " + "but got %s", s1, s2); } } diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c index 8234c27..3e12483 100644 --- a/gcc/fortran/match.c +++ b/gcc/fortran/match.c @@ -110,6 +110,9 @@ gfc_op2string (gfc_intrinsic_op op) case INTRINSIC_PARENTHESES: return "parens"; + case INTRINSIC_NONE: + return "none"; + default: break; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5d4dce2..a5c147b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2015-05-18 Steven G. Kargl <kargl@gcc.gnu.org> + PR fortran/66106 + * gfortran.dg/interface_operator_1.f90: New tests. + +2015-05-18 Steven G. Kargl <kargl@gcc.gnu.org> + PR fortran/66057 * gfortran.dg/generic_29.f90: New tests. diff --git a/gcc/testsuite/gfortran.dg/interface_operator_1.f90 b/gcc/testsuite/gfortran.dg/interface_operator_1.f90 new file mode 100644 index 0000000..97d260a --- /dev/null +++ b/gcc/testsuite/gfortran.dg/interface_operator_1.f90 @@ -0,0 +1,10 @@ +! { dg-do compile } +! PR fortran/66106 +! +! Original code from Gerhard Steinmetz +! <gerhard dot steinmetz dot fortran at t-online dot de> +program p + interface operator ( .gt. ) + end interface operator ! { dg-error "END INTERFACE OPERATOR" } +end program p ! { dg-error "END INTERFACE" } +! { dg-excess-errors "Unexpected end of file" } |