| ! { 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 | |