File tree Expand file tree Collapse file tree 2 files changed +10
-0
lines changed Expand file tree Collapse file tree 2 files changed +10
-0
lines changed Original file line number Diff line number Diff line change @@ -59,6 +59,13 @@ struct IsVariableHelper
59
59
}
60
60
}
61
61
return false ;
62
+ } else if constexpr (std::is_same_v<T, SomeType>) {
63
+ if (std::holds_alternative<ProcedureDesignator>(x.u ) ||
64
+ std::holds_alternative<ProcedureRef>(x.u )) {
65
+ return false ; // procedure pointer
66
+ } else {
67
+ return (*this )(x.u );
68
+ }
62
69
} else {
63
70
return (*this )(x.u );
64
71
}
Original file line number Diff line number Diff line change @@ -92,6 +92,7 @@ subroutine test(assumedRank)
92
92
integer , target :: targetIntArr(2 )
93
93
integer , target :: targetIntCoarray[* ]
94
94
integer , pointer :: intPointerArr(:)
95
+ procedure (objPtrFunc), pointer :: objPtrFuncPointer
95
96
96
97
! ERROR: Assumed-rank array cannot be forwarded to 'target=' argument
97
98
lvar = associated (assumedRank, assumedRank)
@@ -204,6 +205,8 @@ subroutine test(assumedRank)
204
205
lvar = associated (intProcPointer1, elementalProc)
205
206
! ERROR: POINTER= argument 'intpointervar1' is an object pointer but the TARGET= argument 'intfunc' is not a variable
206
207
lvar = associated (intPointerVar1, intFunc)
208
+ ! ERROR: POINTER= argument 'intpointervar1' is an object pointer but the TARGET= argument 'objptrfuncpointer' is not a variable
209
+ lvar = associated (intPointerVar1, objPtrFuncPointer)
207
210
! ERROR: In assignment to object pointer 'intpointervar1', the target 'intfunc' is a procedure designator
208
211
intPointerVar1 = > intFunc
209
212
! ERROR: In assignment to procedure pointer 'intprocpointer1', the target is not a procedure or procedure pointer
You can’t perform that action at this time.
0 commit comments