aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--flang/lib/Semantics/resolve-names.cpp9
-rw-r--r--flang/test/Semantics/resolve29.f9014
2 files changed, 19 insertions, 4 deletions
diff --git a/flang/lib/Semantics/resolve-names.cpp b/flang/lib/Semantics/resolve-names.cpp
index b261345..a77d3c8 100644
--- a/flang/lib/Semantics/resolve-names.cpp
+++ b/flang/lib/Semantics/resolve-names.cpp
@@ -6769,9 +6769,12 @@ void ResolveNamesVisitor::CheckImports() {
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
index 9e97569..ea4642c 100644
--- 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 @@ contains
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