Commit 0fcbc86b by Tobias Burnus Committed by Tobias Burnus

re PR fortran/31600 (Better error message for redeclation of USEd symbols)

2011-08-23  Tobias Burnus  <burnus@net-b.de>

        PR fortran/31600
        * symbol.c (gfc_add_type): Better diagnostic if redefining
        use-associated symbol.
        * module.c (gfc_use_module): Use module name as locus.

2011-08-23  Tobias Burnus  <burnus@net-b.de>

        PR fortran/31600
        * gfortran.dg/use_16.f90: New.

From-SVN: r177985
parent 336ecb65
2011-08-23 Tobias Burnus <burnus@net-b.de>
PR fortran/31600
* symbol.c (gfc_add_type): Better diagnostic if redefining
use-associated symbol.
* module.c (gfc_use_module): Use module name as locus.
2011-08-22 Gabriel Charette <gchare@google.com>
* cpp.c (gfc_cpp_init): Force BUILTINS_LOCATION for tokens
......
......@@ -5727,6 +5727,9 @@ gfc_use_module (void)
int c, line, start;
gfc_symtree *mod_symtree;
gfc_use_list *use_stmt;
locus old_locus = gfc_current_locus;
gfc_current_locus = use_locus;
filename = (char *) alloca (strlen (module_name) + strlen (MODULE_EXTENSION)
+ 1);
......@@ -5748,6 +5751,7 @@ gfc_use_module (void)
"intrinsic module at %C") != FAILURE)
{
use_iso_fortran_env_module ();
gfc_current_locus = old_locus;
return;
}
......@@ -5756,6 +5760,7 @@ gfc_use_module (void)
"ISO_C_BINDING module at %C") != FAILURE)
{
import_iso_c_binding_module();
gfc_current_locus = old_locus;
return;
}
......@@ -5845,6 +5850,8 @@ gfc_use_module (void)
gfc_rename_list = NULL;
use_stmt->next = gfc_current_ns->use_stmts;
gfc_current_ns->use_stmts = use_stmt;
gfc_current_locus = old_locus;
}
......
......@@ -1672,7 +1672,12 @@ gfc_add_type (gfc_symbol *sym, gfc_typespec *ts, locus *where)
if (type != BT_UNKNOWN && !(sym->attr.function && sym->attr.implicit_type))
{
gfc_error ("Symbol '%s' at %L already has basic type of %s", sym->name,
if (sym->attr.use_assoc)
gfc_error ("Symbol '%s' at %L conflicts with symbol from module '%s', "
"use-associated at %L", sym->name, where, sym->module,
&sym->declared_at);
else
gfc_error ("Symbol '%s' at %L already has basic type of %s", sym->name,
where, gfc_basic_typename (type));
return FAILURE;
}
......
2011-08-23 Tobias Burnus <burnus@net-b.de>
PR fortran/31600
* gfortran.dg/use_16.f90: New.
2011-08-22 Uros Bizjak <ubizjak@gmail.com>
Kirill Yukhin <kirill.yukhin@intel.com>
......
! { dg-do compile }
!
! PR fortran/31600
!
module a
implicit none
contains
integer function bar()
bar = 42
end function
end module a
use a ! { dg-error "Symbol 'bar' at \\(1\\) conflicts with symbol from module 'a'" }
implicit none
integer :: bar ! { dg-error "Symbol 'bar' at \\(1\\) conflicts with symbol from module 'a'" }
end
! { dg-final { cleanup-modules "a" } }
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