aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/scanner.c
diff options
context:
space:
mode:
authorThomas Koenig <tkoenig@gcc.gnu.org>2017-10-15 12:00:29 +0000
committerThomas Koenig <tkoenig@gcc.gnu.org>2017-10-15 12:00:29 +0000
commit31677224bcb5aad17f84bf717efc5f302923e47b (patch)
treebc1ba55127b7327927af6f9e4b3087236221be06 /gcc/fortran/scanner.c
parent5fe8ac6bfb3a6fc93c03484deaf290451152b182 (diff)
downloadgcc-31677224bcb5aad17f84bf717efc5f302923e47b.zip
gcc-31677224bcb5aad17f84bf717efc5f302923e47b.tar.gz
gcc-31677224bcb5aad17f84bf717efc5f302923e47b.tar.bz2
re PR fortran/82372 (Rejects valid parenthesis)
2017-10-15 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/82372 * fortran/scanner.c (last_error_char): New global variable. (gfc_scanner_init_1): Set last_error_char to NULL. (gfc_gobble_whitespace): If a character not printable or not newline, issue an error. 2017-10-15 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/82372 * gfortran.dg/illegal_char.f90: New test. From-SVN: r253768
Diffstat (limited to 'gcc/fortran/scanner.c')
-rw-r--r--gcc/fortran/scanner.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/fortran/scanner.c b/gcc/fortran/scanner.c
index 82f431d..49decfa 100644
--- a/gcc/fortran/scanner.c
+++ b/gcc/fortran/scanner.c
@@ -80,6 +80,7 @@ static struct gfc_file_change
size_t file_changes_cur, file_changes_count;
size_t file_changes_allocated;
+static gfc_char_t *last_error_char;
/* Functions dealing with our wide characters (gfc_char_t) and
sequences of such characters. */
@@ -269,6 +270,7 @@ gfc_scanner_init_1 (void)
continue_line = 0;
end_flag = 0;
+ last_error_char = NULL;
}
@@ -1700,6 +1702,14 @@ gfc_gobble_whitespace (void)
}
while (gfc_is_whitespace (c));
+ if (!ISPRINT(c) && c != '\n' && last_error_char != gfc_current_locus.nextc)
+ {
+ char buf[20];
+ last_error_char = gfc_current_locus.nextc;
+ snprintf (buf, 20, "%2.2X", c);
+ gfc_error_now ("Invalid character 0x%s at %C", buf);
+ }
+
gfc_current_locus = old_loc;
}