PR fortran/50555
* primary.c (match_actual_arg): If symbol has attribute flavor of
namelist, generate an error. (gfc_match_rvalue): Likewise return
MATCH_ERROR.
* resolve.c (resolve_symbol): Scan arument list of procedures and
generate an error if a namelist is found.
PR fortran/50555
* gfortran.dg/namelist_args.f90: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@233203
138bc75d-0d04-0410-961f-
82ee72b054a4
+2016-02-07 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR fortran/50555
+ * primary.c (match_actual_arg): If symbol has attribute flavor of
+ namelist, generate an error. (gfc_match_rvalue): Likewise return
+ MATCH_ERROR.
+ * resolve.c (resolve_symbol): Scan arument list of procedures and
+ generate an error if a namelist is found.
+
2016-02-05 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/66089
sym = symtree->n.sym;
gfc_set_sym_referenced (sym);
+ if (sym->attr.flavor == FL_NAMELIST)
+ {
+ gfc_error ("Namelist '%s' can not be an argument at %L",
+ sym->name, &where);
+ break;
+ }
if (sym->attr.flavor != FL_PROCEDURE
&& sym->attr.flavor != FL_UNKNOWN)
break;
m = gfc_match_actual_arglist (0, &e->value.function.actual);
break;
+ case FL_NAMELIST:
+ m = MATCH_ERROR;
+ break;
+
default:
gfc_error ("Symbol at %C is not appropriate for an expression");
return MATCH_ERROR;
break;
case FL_PROCEDURE:
+ if (sym->formal && !sym->formal_ns)
+ {
+ /* Check that none of the arguments are a namelist. */
+ gfc_formal_arglist *formal = sym->formal;
+
+ for (; formal; formal = formal->next)
+ if (formal->sym && formal->sym->attr.flavor == FL_NAMELIST)
+ {
+ gfc_error ("Namelist '%s' can not be an argument to "
+ "subroutine or function at %L",
+ formal->sym->name, &sym->declared_at);
+ return;
+ }
+ }
+
if (!resolve_fl_procedure (sym, mp_flag))
return;
break;
+2016-02-07 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR fortran/50555
+ * gfortran.dg/namelist_args.f90: New test.
+
2016-02-05 Jeff Law <law@redhat.com>
PR tree-optimization/68541
--- /dev/null
+! { dg-do compile }
+! { dg-options -std=gnu }
+! PR50555 synonymous namelist/statement function dummy argument not allowed
+subroutine g(k1, k2, k3)
+ integer, intent(in) :: k1, k2, k3
+ print *, k
+end subroutine
+function j(k1, k2, k3)
+ integer, intent(in) :: k1, k2, k3
+ j = 25 * k
+end function
+program pr50555
+ namelist /i/ j
+ call g(k,l,i) ! { dg-error "can not be an argument" }
+ f(k,l,i)=0 ! { dg-error "can not be an argument" }
+ h = j(k,l,i) ! { dg-error "can not be an argument" }
+end program
+! Note: -std=gnu needed because line 15 function statement is obsolescent