! { dg-do compile } | |
! This tests the fix for PR25089 in which it was noted that a | |
! NAMELIST member that is an internal(or module) procedure gave | |
! no error if the NAMELIST declaration appeared before the | |
! procedure declaration. Not mentioned in the PR is that any | |
! reference to the NAMELIST object would cause a segfault. | |
! | |
! Based on the contribution from Joost VanderVondele | |
! | |
module M1 | |
CONTAINS | |
! This is the original PR | |
INTEGER FUNCTION G1() | |
NAMELIST /NML1/ G2 ! { dg-error "PROCEDURE attribute conflicts" } | |
G1=1 | |
END FUNCTION | |
INTEGER FUNCTION G2() | |
G2=1 | |
END FUNCTION | |
! This has always been picked up - namelist after function | |
INTEGER FUNCTION G3() | |
NAMELIST /NML2/ G1 ! { dg-error "PROCEDURE attribute conflicts" } | |
G3=1 | |
END FUNCTION | |
END module M1 | |
program P1 | |
implicit none | |
CONTAINS | |
! This has the additional wrinkle of a reference to the object. | |
INTEGER FUNCTION F1() | |
NAMELIST /NML3/ F2 ! { dg-error "PROCEDURE attribute conflicts" } | |
! Used to ICE here | |
f2 = 1 ! { dg-error "is not a VALUE" } | |
F1=1 | |
END FUNCTION | |
INTEGER FUNCTION F2() | |
F2=1 | |
END FUNCTION | |
END | |