Hi Paul,

I have gone back to the start and have gone through finalizable derived
type assignments with the F2018 in hand. I have had a dreadful time with
direct by reference function calls and still am struggling with assignment
number 6 in the attached. I would be very grateful if you would run this
testcase for the other brands.

This is the output of nagfor 7.1, no idea how correct this is.

Best regards

        Thomas

 At start of program: final_count =    0
 *******************************************************************

 1st assignment: No finalization because MyType unallocated.
 After 1st assignment(var not allocated): final_count =    0(0)
 *******************************************************************

 2nd assignment: MyType(=simple(1,MyType) finalized before assignment
 finalize simple - Mytype2%ind =    1
 After 2nd assignment(var allocated): final_count =    1(1)
 *******************************************************************

 3rd assignment: MyTypeArray(%ind = [41 42]) finalized before assignment

 finalize simple(:) - MyTypeArray%ind=   42  43
 After 3rd assignment(array var allocated): final_count =    1(1)
 *******************************************************************

 Deallocation generates final call with self = simple (21, ThyType)
 4th assignment: MyTypeArray finalized before assignment
 Mtype finalized before assignment with self = simple (11, MyType)
 Function result finalized after assignment with self = simple (99, MyType)

 finalize simple - ThyType%ind =   21
 finalize simple - MyType%ind =   11
 After 4th assignment(array var allocated) :final_count =    2(3)
 *******************************************************************

 5th assignment: MyTypeArray finalized before assignment
 1] First finalization is of 'res' in constructor3 with:
Self = [complicated (-1, constructor3, 0.0), complicated (-1, ThyTypeArra1, 0.0)] 2] ThyTypeArray is finalized before assignment and after evaluation of constructor3
 Self = [3 times complicated (-1, ThyTypeArra1,0.0)]
 3] Function result finalized after assignment with
Self = [complicated (-1, ThyTypeArra2, 0.0), complicated (-1, ThyTypeArra2, 0.0)]

 constructor3: final_count =  0
 finalize complicated(2) - constructor3 =    0   0  0.00  0.00
 finalize simple(:) - constructor3%ind=    0   0
 finalize complicated(3) - ThyTypeArra1 =   -1  -1  -1  0.00  0.00  0.00
 finalize simple(:) - ThyTypeArra1%ind=   -1  -1  -1
 finalize complicated(2) - ThyTypeArra2 =    1   3  2.00  4.00
 finalize simple(:) - ThyTypeArra2%ind=    1   3
 finalize complicated(2) - IypeArra2 = ****   3  2.00  4.00
 finalize simple(:) - IypeArra2%ind= ****   3
 finalize complicated(2) - IypeArra2 = ****   3  2.00  4.00
 finalize simple(:) - IypeArra2%ind= ****   3
 After 5th assignment(array var allocated):  10(6)

 *******************************************************************
 Deallocate ThyTypeArray.
 finalize complicated(2) - ThyTypeArra2 =    1   3  2.00  4.00
 finalize simple(:) - ThyTypeArra2%ind=    1   3

 *******************************************************************
6th assignment: A repeat of the previous with an allocatable function result.
 This should give the same result as the 5th assignment.

 constructor4: final_count =  0
 finalize complicated(2) - constructor4 =    1   1  1.00  1.00
 finalize simple(:) - constructor4%ind=    1   1
 finalize complicated(2) - ThyTypeArra2 =    1   3  2.00  4.00
 finalize simple(:) - ThyTypeArra2%ind=    1   3
 finalize complicated(3) - ThyTypeArra1 =   -1  -1  -1  0.00  0.00  0.00
 finalize simple(:) - ThyTypeArra1%ind=   -1  -1  -1
 After 6th assignment(array var allocated):   6(6)

 *******************************************************************
 Deallocations at end

 finalize simple - MyType%ind =   99
 After 1st deallocation: 1
 finalize simple - ThyType2%ind =   22
 After 2nd deallocation: 2
 finalize simple(:) - ThyType%ind=   21  22
 After 3rd deallocation: 3

Reply via email to