- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi, the following code snippet can be compiled but the compiler showed a warning messge that I didn't quite understand.
module test1
implicit none
private
public :: tp1
type, abstract :: tp1(length)
private
integer, len :: length = 10
character(length) :: s
contains
procedure(isub1), public, pass, deferred :: sub1
end type tp1
abstract interface
subroutine isub1(this)
import tp1
class(tp1(*)), intent(in) :: this
end subroutine isub1
end interface
end module test1
module test2
use test1, only: tp1
implicit none
private
public :: tp2
type, abstract, extends(tp1) :: tp2
end type tp2
end module test2
warning #7925: An interface-block in a subprogram that contains an interface-body for a procedure defined by that subprogram is non-standard. [TEST1^ISUB1]
If tp1 is not a parameterized type, the inheritance is just OK. So is there any restriction for extending an abstract parameterized derived type ?
Link Copied
2 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Looks like a false warning, suggest you submit this case to Intel support (OSC).
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks FortranFan, I've reported it to the OSC.
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page