42 lines
1.2 KiB
Fortran
42 lines
1.2 KiB
Fortran
! { 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" } }
|