| ! { 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
|
| 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 |
|
|
| ! { dg-final { cleanup-modules "M1" } } |