diff --git a/flang/lib/Semantics/resolve-names.cpp b/flang/lib/Semantics/resolve-names.cpp --- a/flang/lib/Semantics/resolve-names.cpp +++ b/flang/lib/Semantics/resolve-names.cpp @@ -6769,9 +6769,12 @@ void ResolveNamesVisitor::CheckImport( const SourceName &location, const SourceName &name) { if (auto *symbol{FindInScope(name)}) { - Say(location, "'%s' from host is not accessible"_err_en_US, name) - .Attach(symbol->name(), "'%s' is hidden by this entity"_en_US, - symbol->name()); + const Symbol &ultimate{symbol->GetUltimate()}; + if (&ultimate.owner() == &currScope()) { + Say(location, "'%s' from host is not accessible"_err_en_US, name) + .Attach(symbol->name(), "'%s' is hidden by this entity"_en_US, + symbol->name()); + } } } diff --git a/flang/test/Semantics/resolve29.f90 b/flang/test/Semantics/resolve29.f90 --- a/flang/test/Semantics/resolve29.f90 +++ b/flang/test/Semantics/resolve29.f90 @@ -1,5 +1,5 @@ ! RUN: %python %S/test_errors.py %s %flang_fc1 -module m +module m1 type t1 end type type t3 @@ -42,3 +42,15 @@ call s5() end end module +module m2 + integer, parameter :: ck = kind('a') +end module +program main + use m2 + interface + subroutine s0(x) + import :: ck + character(kind=ck) :: x ! no error + end subroutine + end interface +end program