Commit fa841200 by Tobias Schlüter Committed by Tobias Schlüter

re PR fortran/15511 (Warning about truncated lines does not follow the standard…

re PR fortran/15511 (Warning about truncated lines does not follow the standard gcc error message format)

PR fortran/15511
* scanner.c (load_line): Don't truncate preprocessor lines.
Reformat error message.
(preprocessor_line): Issue warning in case of malformed
preprocessor line.

From-SVN: r83455
parent 6263a8f6
2004-06-21 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de
PR fortran/15511
* scanner.c (load_line): Don't truncate preprocessor lines.
Reformat error message.
(preprocessor_line): Issue warning in case of malformed
preprocessor line.
2004-06-21 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de> 2004-06-21 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
* resolve.c (resolve_symbol): Add comment in function body. * resolve.c (resolve_symbol): Add comment in function body.
......
...@@ -679,7 +679,7 @@ gfc_gobble_whitespace (void) ...@@ -679,7 +679,7 @@ gfc_gobble_whitespace (void)
static void static void
load_line (FILE * input, char *buffer, char *filename, int linenum) load_line (FILE * input, char *buffer, char *filename, int linenum)
{ {
int c, maxlen, i, trunc_flag; int c, maxlen, i, trunc_flag, preprocessor_flag;
maxlen = (gfc_current_form == FORM_FREE) maxlen = (gfc_current_form == FORM_FREE)
? 132 ? 132
...@@ -687,6 +687,13 @@ load_line (FILE * input, char *buffer, char *filename, int linenum) ...@@ -687,6 +687,13 @@ load_line (FILE * input, char *buffer, char *filename, int linenum)
i = 0; i = 0;
preprocessor_flag = 0;
c = fgetc (input);
if (c == '#')
/* Don't truncate preprocessor lines. */
preprocessor_flag = 1;
ungetc (c, input);
for (;;) for (;;)
{ {
c = fgetc (input); c = fgetc (input);
...@@ -722,7 +729,7 @@ load_line (FILE * input, char *buffer, char *filename, int linenum) ...@@ -722,7 +729,7 @@ load_line (FILE * input, char *buffer, char *filename, int linenum)
*buffer++ = c; *buffer++ = c;
i++; i++;
if (i >= maxlen) if (i >= maxlen && !preprocessor_flag)
{ /* Truncate the rest of the line. */ { /* Truncate the rest of the line. */
trunc_flag = 1; trunc_flag = 1;
...@@ -736,8 +743,8 @@ load_line (FILE * input, char *buffer, char *filename, int linenum) ...@@ -736,8 +743,8 @@ load_line (FILE * input, char *buffer, char *filename, int linenum)
&& trunc_flag && trunc_flag
&& !gfc_is_whitespace (c)) && !gfc_is_whitespace (c))
{ {
gfc_warning_now ("Line %d of %s is being truncated", gfc_warning_now ("%s:%d: Line is being truncated",
linenum, filename); filename, linenum);
trunc_flag = 0; trunc_flag = 0;
} }
} }
...@@ -789,19 +796,21 @@ preprocessor_line (char *c) ...@@ -789,19 +796,21 @@ preprocessor_line (char *c)
c++; c++;
if (*c < '0' || *c > '9') if (*c < '0' || *c > '9')
{ goto bad_cpp_line;
gfc_warning_now ("%s:%d Unknown preprocessor directive",
current_file->filename, current_file->line);
current_file->line++;
return;
}
line = atoi (c); line = atoi (c);
c = strchr (c, ' ') + 2; /* Skip space and quote. */ c = strchr (c, ' ');
if (c == NULL)
/* Something we don't understand has happened. */
goto bad_cpp_line;
c += 2; /* Skip space and quote. */
filename = c; filename = c;
c = strchr (c, '"'); /* Make filename end at quote. */ c = strchr (c, '"'); /* Make filename end at quote. */
if (c == NULL)
/* Preprocessor line has no closing quote. */
goto bad_cpp_line;
*c++ = '\0'; *c++ = '\0';
/* Get flags. */ /* Get flags. */
...@@ -846,6 +855,13 @@ preprocessor_line (char *c) ...@@ -846,6 +855,13 @@ preprocessor_line (char *c)
current_file->filename = gfc_getmem (strlen (filename) + 1); current_file->filename = gfc_getmem (strlen (filename) + 1);
strcpy (current_file->filename, filename); strcpy (current_file->filename, filename);
} }
return;
bad_cpp_line:
gfc_warning_now ("%s:%d: Unknown preprocessor directive",
current_file->filename, current_file->line);
current_file->line++;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment