- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Link Copied
2 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Not quite there yet.
[fortran]MODULE TheUpdateGivethAndTheUpdateTakethAway IMPLICIT NONE TYPE :: Parent INTEGER :: a END TYPE Parent TYPE, EXTENDS(PARENT) :: Extension INTEGER :: b END TYPE Extension TYPE HasDefinedAssignment INTEGER :: c END TYPE HasDefinedAssignment TYPE Container TYPE(Parent), POINTER :: ptr_comp CLASS(Parent), POINTER :: poly_ptr_comp TYPE(HasDefinedAssignment), POINTER :: da_ptr_comp END TYPE Container INTERFACE ASSIGNMENT(=) MODULE PROCEDURE defined_assignment END INTERFACE ASSIGNMENT(=) CONTAINS SUBROUTINE ThisAlwaysWorked(arg) TYPE(Container), INTENT(IN) :: arg !**** arg%ptr_comp%a = 1 END SUBROUTINE ThisAlwaysWorked SUBROUTINE ThisIsStillBroken(arg) TYPE(Container), INTENT(IN) :: arg !**** arg%da_ptr_comp = 2 END SUBROUTINE ThisIsStillBroken SUBROUTINE ThisNowWorkswith_12_0_3(arg) TYPE(Container), INTENT(IN) :: arg !**** CALL modify_a_parent(arg%ptr_comp) END SUBROUTINE ThisNowWorkswith_12_0_3 SUBROUTINE ThePreviousWorkAroundIsStillOk(arg) TYPE(Container), INTENT(IN) :: arg TYPE(Parent), POINTER :: p !**** p => arg%ptr_comp CALL modify_a_parent(p) END SUBROUTINE ThePreviousWorkAroundIsStillOk SUBROUTINE But_12_0_3_BrokeThis(arg) TYPE(Container), INTENT(IN) :: arg !**** SELECT TYPE (s => arg%poly_ptr_comp) TYPE IS (Extension) s%b = 1 END SELECT END SUBROUTINE But_12_0_3_BrokeThis SUBROUTINE TheWorkAroundIsStillOk(arg) TYPE(Container), INTENT(IN) :: arg CLASS(Parent), POINTER :: p !**** p => arg%poly_ptr_comp SELECT TYPE (p) TYPE IS (Extension) p%b = 1 END SELECT END SUBROUTINE TheWorkAroundIsStillOk SUBROUTINE defined_assignment(lhs, rhs) TYPE(HasDefinedAssignment), INTENT(OUT) :: lhs INTEGER, INTENT(IN) :: rhs !**** lhs%c = rhs END SUBROUTINE defined_assignment SUBROUTINE modify_a_parent(parent_arg) TYPE(Parent), INTENT(OUT) :: parent_arg !**** parent_arg%a = 1 END SUBROUTINE modify_a_parent END MODULE TheUpdateGivethAndTheUpdateTakethAway [/fortran]
[plain]>ifort /c /warn:all /check:all PointerIntentTest.f90 Intel Visual Fortran Compiler XE for applications running on IA-32, Version 12.0.3.175 Build 20110309 Copyright (C) 1985-2011 Intel Corporation. All rights reserved. PointerIntentTest.f90(35): error #6780: A dummy argument with the INTENT(IN) attribute shall not be defined nor become undefined. [ARG] arg%da_ptr_comp = 2 ----^ PointerIntentTest.f90(57): error #6780: A dummy argument with the INTENT(IN) attribute shall not be defined nor become undefined.s%b = 1 ------^ compilation aborted for PointerIntentTest.f90 (code 1)[/plain]
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks - we'll take a look at this.

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