diff options
Diffstat (limited to 'flang/lib/Semantics/resolve-names.cpp')
-rw-r--r-- | flang/lib/Semantics/resolve-names.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/flang/lib/Semantics/resolve-names.cpp b/flang/lib/Semantics/resolve-names.cpp index 73c624a..2412758 100644 --- a/flang/lib/Semantics/resolve-names.cpp +++ b/flang/lib/Semantics/resolve-names.cpp @@ -5879,7 +5879,10 @@ void ResolveNamesVisitor::HandleProcedureName( return; // reported error } CheckImplicitNoneExternal(name.source, *symbol); - if (IsProcedure(*symbol) || symbol->has<DerivedTypeDetails>() || + if (symbol->has<SubprogramDetails>() && + symbol->attrs().test(Attr::ABSTRACT)) { + Say(name, "Abstract interface '%s' may not be called"_err_en_US); + } else if (IsProcedure(*symbol) || symbol->has<DerivedTypeDetails>() || symbol->has<ObjectEntityDetails>() || symbol->has<AssocEntityDetails>()) { // Symbols with DerivedTypeDetails, ObjectEntityDetails and |