match m;
bool t;
gfc_symbol *sym;
+ char c;
initializer = NULL;
as = NULL;
name to be '%FILL' which gives it an anonymous (inaccessible) name. */
m = MATCH_NO;
gfc_gobble_whitespace ();
- if (gfc_peek_ascii_char () == '%')
+ c = gfc_peek_ascii_char ();
+ if (c == '%')
{
- gfc_next_ascii_char ();
+ gfc_next_ascii_char (); /* Burn % character. */
m = gfc_match ("fill");
- }
-
- if (m != MATCH_YES)
- {
- m = gfc_match_name (name);
- if (m != MATCH_YES)
- goto cleanup;
- }
-
- else
- {
- m = MATCH_ERROR;
- if (gfc_current_state () != COMP_STRUCTURE)
+ if (m == MATCH_YES)
{
- if (flag_dec_structure)
- gfc_error ("%qs not allowed outside STRUCTURE at %C", "%FILL");
- else
- gfc_error ("%qs at %C is a DEC extension, enable with "
+ if (gfc_current_state () != COMP_STRUCTURE)
+ {
+ if (flag_dec_structure)
+ gfc_error ("%qs not allowed outside STRUCTURE at %C", "%FILL");
+ else
+ gfc_error ("%qs at %C is a DEC extension, enable with "
"%<-fdec-structure%>", "%FILL");
- goto cleanup;
- }
+ m = MATCH_ERROR;
+ goto cleanup;
+ }
+
+ if (attr_seen)
+ {
+ gfc_error ("%qs entity cannot have attributes at %C", "%FILL");
+ m = MATCH_ERROR;
+ goto cleanup;
+ }
- if (attr_seen)
+ /* %FILL components are given invalid fortran names. */
+ snprintf (name, GFC_MAX_SYMBOL_LEN + 1, "%%FILL%u", fill_id++);
+ }
+ else
{
- gfc_error ("%qs entity cannot have attributes at %C", "%FILL");
- goto cleanup;
+ gfc_error ("Invalid character %qc in variable name at %C", c);
+ return MATCH_ERROR;
}
-
- /* %FILL components are given invalid fortran names. */
- snprintf (name, GFC_MAX_SYMBOL_LEN + 1, "%%FILL%u", fill_id++);
+ }
+ else
+ {
+ m = gfc_match_name (name);
+ if (m != MATCH_YES)
+ goto cleanup;
}
var_locus = gfc_current_locus;