mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-14 14:56:47 +00:00
[flang] Silence bogus error on use after IMPORT
When a scope uses an explicit IMPORT statement to import a symbol from the scope's host, it should not emit a bogus error message later if that symbol is used in a specification construct. The code that checks for imports being hidden by local declarations was not allowing for the presence of host association (or USE) indirection symbols in the local scope. Fix by using GetUltimate() before checking for the hidden symbol. Differential Revision: https://reviews.llvm.org/D118747
This commit is contained in:
parent
bc699ed0bf
commit
aee705661f
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user