- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Consider the following simple example:
MODULE b
IMPLICIT NONE
!.. Private by default
PRIVATE
TYPE, ABSTRACT, PUBLIC :: A_t
!..
PRIVATE
!.. Private fields
INTEGER :: m_A
CONTAINS
!.. Private by default
PRIVATE
!.. Private methods
PROCEDURE(IFoo), PASS(This), DEFERRED :: Foo
END TYPE A_t
TYPE, EXTENDS(A_t), PUBLIC :: B_t
!..
PRIVATE
CONTAINS
!.. Private by default
PRIVATE
!.. Private methods
PROCEDURE :: Foo => BFoo
END TYPE B_t
!.. Abstract Interface for class methods
ABSTRACT INTERFACE
!.. Initialize EosClass
PURE ELEMENTAL SUBROUTINE IFoo(This)
IMPORT :: A_t
!.. Argument list
CLASS(A_t), INTENT(INOUT) :: This
END SUBROUTINE IFoo
END INTERFACE
CONTAINS
PURE ELEMENTAL SUBROUTINE BFoo(This)
!.. Argument list
CLASS(B_t), INTENT(INOUT) :: This
!..
This%m_A = 0
!..
RETURN
END SUBROUTINE BFoo
END MODULE b
MODULE c
USE b, ONLY : B_t
!..
IMPLICIT NONE
!.. Private by default
PRIVATE
TYPE, EXTENDS(B_t), PUBLIC :: C_t
!..
PRIVATE
INTEGER :: m_C
CONTAINS
!.. Private by default
PRIVATE
!.. Private methods
PROCEDURE, PASS(This), PUBLIC :: Bar
END TYPE C_t
CONTAINS
PURE ELEMENTAL SUBROUTINE Bar(This)
!.. Argument list
CLASS(C_t), INTENT(INOUT) :: This
!..
This%m_C = 0
CALL This%Foo() ! <-- Foo is PRIVATE to module b; compiler should flag
! an error
!..
RETURN
END SUBROUTINE Bar
END MODULE c
Intel Fortran compiler - version 13 (XE 13.1.1.171) and 2015 Beta - fails to flag an error at line 109 that the invoked method Foo is PRIVATE to MODULE b. It compiles the code with no errors.
I think this is a compiler bug. Can someone from Intel please check and do the needful?
Thanks,
Link Copied
1 Reply
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks. Escalated as issue DPD200359178.
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