re PR fortran/38398 (g0.w edit descriptor: Update for F2008 Tokyo meeting changes)
2008-12-21 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR fortran/38398 * io.c: Add error checks for g0 formatting and provide adjustment of error loci for improved error messages. From-SVN: r142870
This commit is contained in:
parent
ddb8401a53
commit
c8129db104
@ -1,3 +1,9 @@
|
|||||||
|
2008-12-21 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
||||||
|
|
||||||
|
PR fortran/38398
|
||||||
|
* io.c: Add error checks for g0 formatting and provide adjustment of
|
||||||
|
error loci for improved error messages.
|
||||||
|
|
||||||
2008-12-21 Arjen Markus <arjen.markus@wldelft.nl>
|
2008-12-21 Arjen Markus <arjen.markus@wldelft.nl>
|
||||||
Daniel Kraft <d@domob.eu>
|
Daniel Kraft <d@domob.eu>
|
||||||
|
|
||||||
|
@ -118,6 +118,7 @@ format_token;
|
|||||||
used to back up by a single format token during the parsing
|
used to back up by a single format token during the parsing
|
||||||
process. */
|
process. */
|
||||||
static gfc_char_t *format_string;
|
static gfc_char_t *format_string;
|
||||||
|
static int format_string_pos;
|
||||||
static int format_length, use_last_char;
|
static int format_length, use_last_char;
|
||||||
static char error_element;
|
static char error_element;
|
||||||
static locus format_locus;
|
static locus format_locus;
|
||||||
@ -170,6 +171,8 @@ next_char (int in_string)
|
|||||||
if (mode != MODE_STRING)
|
if (mode != MODE_STRING)
|
||||||
format_locus = gfc_current_locus;
|
format_locus = gfc_current_locus;
|
||||||
|
|
||||||
|
format_string_pos++;
|
||||||
|
|
||||||
c = gfc_wide_toupper (c);
|
c = gfc_wide_toupper (c);
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
@ -503,6 +506,7 @@ check_format (bool is_input)
|
|||||||
level = 0;
|
level = 0;
|
||||||
repeat = 0;
|
repeat = 0;
|
||||||
rv = SUCCESS;
|
rv = SUCCESS;
|
||||||
|
format_string_pos = 0;
|
||||||
|
|
||||||
t = format_lex ();
|
t = format_lex ();
|
||||||
if (t == FMT_ERROR)
|
if (t == FMT_ERROR)
|
||||||
@ -729,15 +733,19 @@ data_desc:
|
|||||||
saved_token = u;
|
saved_token = u;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
u = format_lex ();
|
u = format_lex ();
|
||||||
if (u == FMT_ERROR)
|
|
||||||
goto fail;
|
|
||||||
if (u != FMT_POSINT)
|
if (u != FMT_POSINT)
|
||||||
{
|
{
|
||||||
error = posint_required;
|
error = posint_required;
|
||||||
goto syntax;
|
goto syntax;
|
||||||
}
|
}
|
||||||
|
u = format_lex ();
|
||||||
|
if (u == FMT_E)
|
||||||
|
{
|
||||||
|
error = _("E specifier not allowed with g0 descriptor");
|
||||||
|
goto syntax;
|
||||||
|
}
|
||||||
|
saved_token = u;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -983,6 +991,8 @@ extension_optional_comma:
|
|||||||
goto format_item;
|
goto format_item;
|
||||||
|
|
||||||
syntax:
|
syntax:
|
||||||
|
if (mode != MODE_FORMAT)
|
||||||
|
format_locus.nextc += format_string_pos;
|
||||||
if (error == unexpected_element)
|
if (error == unexpected_element)
|
||||||
gfc_error (error, error_element, &format_locus);
|
gfc_error (error, error_element, &format_locus);
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user