Commit 0ff0dfbf by Tobias Schlüter Committed by Tobias Schlüter

Andrew Vaught <andyv@firstinter.net>

2004-06-25  Tobias Schlueter  <tobias.schlueter@physik.uni-muenchen.de>
Andrew Vaught <andyv@firstinter.net>

PR fortran/15190
* decl.c (gfc_match_type_spec), io.c (match_io), parse.c
(decode_statement): Enforce required space in free-form.

Co-Authored-By: Andrew Vaught <andyv@firstinter.net>

From-SVN: r83708
parent e9e4d4ee
2004-06-25 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
Andrew Vaught <andyv@firstinter.net>
PR fortran/15190
* decl.c (gfc_match_type_spec), io.c (match_io), parse.c
(decode_statement): Enforce required space in free-form.
2004-06-21 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> 2004-06-21 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* f95-lang.c (LANG_HOOKS_GIMPLE_BEFORE_INLINING): Deleted. * f95-lang.c (LANG_HOOKS_GIMPLE_BEFORE_INLINING): Deleted.
......
...@@ -884,6 +884,7 @@ gfc_match_type_spec (gfc_typespec * ts, int kind_flag) ...@@ -884,6 +884,7 @@ gfc_match_type_spec (gfc_typespec * ts, int kind_flag)
char name[GFC_MAX_SYMBOL_LEN + 1]; char name[GFC_MAX_SYMBOL_LEN + 1];
gfc_symbol *sym; gfc_symbol *sym;
match m; match m;
int c;
gfc_clear_ts (ts); gfc_clear_ts (ts);
...@@ -962,6 +963,14 @@ get_kind: ...@@ -962,6 +963,14 @@ get_kind:
if (kind_flag == 0) if (kind_flag == 0)
return MATCH_YES; return MATCH_YES;
if (gfc_current_form == FORM_FREE)
{
c = gfc_peek_char();
if (!gfc_is_whitespace(c) && c != '*' && c != '('
&& c != ':' && c != ',')
return MATCH_NO;
}
m = gfc_match_kind_spec (ts); m = gfc_match_kind_spec (ts);
if (m == MATCH_NO && ts->type != BT_CHARACTER) if (m == MATCH_NO && ts->type != BT_CHARACTER)
m = gfc_match_old_kind_spec (ts); m = gfc_match_old_kind_spec (ts);
......
...@@ -2046,7 +2046,7 @@ match_io (io_kind k) ...@@ -2046,7 +2046,7 @@ match_io (io_kind k)
gfc_code *io_code; gfc_code *io_code;
gfc_symbol *sym; gfc_symbol *sym;
gfc_expr *expr; gfc_expr *expr;
int comma_flag; int comma_flag, c;
locus where; locus where;
gfc_dt *dt; gfc_dt *dt;
match m; match m;
...@@ -2059,6 +2059,16 @@ match_io (io_kind k) ...@@ -2059,6 +2059,16 @@ match_io (io_kind k)
if (k == M_WRITE) if (k == M_WRITE)
goto syntax; goto syntax;
if (gfc_current_form == FORM_FREE)
{
c = gfc_peek_char();
if (c != ' ' && c != '*' && c != '\'' && c != '"')
{
m = MATCH_NO;
goto cleanup;
}
}
m = match_dt_format (dt); m = match_dt_format (dt);
if (m == MATCH_ERROR) if (m == MATCH_ERROR)
goto cleanup; goto cleanup;
......
...@@ -177,7 +177,7 @@ decode_statement (void) ...@@ -177,7 +177,7 @@ decode_statement (void)
case 'b': case 'b':
match ("backspace", gfc_match_backspace, ST_BACKSPACE); match ("backspace", gfc_match_backspace, ST_BACKSPACE);
match ("block data", gfc_match_block_data, ST_BLOCK_DATA); match ("block data% ", gfc_match_block_data, ST_BLOCK_DATA);
break; break;
case 'c': case 'c':
...@@ -206,7 +206,7 @@ decode_statement (void) ...@@ -206,7 +206,7 @@ decode_statement (void)
if (gfc_match_end (&st) == MATCH_YES) if (gfc_match_end (&st) == MATCH_YES)
return st; return st;
match ("entry", gfc_match_entry, ST_ENTRY); match ("entry% ", gfc_match_entry, ST_ENTRY);
match ("equivalence", gfc_match_equivalence, ST_EQUIVALENCE); match ("equivalence", gfc_match_equivalence, ST_EQUIVALENCE);
match ("external", gfc_match_external, ST_ATTR_DECL); match ("external", gfc_match_external, ST_ATTR_DECL);
break; break;
...@@ -229,7 +229,7 @@ decode_statement (void) ...@@ -229,7 +229,7 @@ decode_statement (void)
break; break;
case 'm': case 'm':
match ("module% procedure", gfc_match_modproc, ST_MODULE_PROC); match ("module% procedure% ", gfc_match_modproc, ST_MODULE_PROC);
match ("module", gfc_match_module, ST_MODULE); match ("module", gfc_match_module, ST_MODULE);
break; break;
...@@ -273,7 +273,7 @@ decode_statement (void) ...@@ -273,7 +273,7 @@ decode_statement (void)
break; break;
case 'u': case 'u':
match ("use", gfc_match_use, ST_USE); match ("use% ", gfc_match_use, ST_USE);
break; break;
case 'w': case 'w':
......
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