aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/initialization_14.f90
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gfortran.dg/initialization_14.f90')
-rw-r--r--gcc/testsuite/gfortran.dg/initialization_14.f9045
1 files changed, 45 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/initialization_14.f90 b/gcc/testsuite/gfortran.dg/initialization_14.f90
new file mode 100644
index 0000000..4d5b685
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/initialization_14.f90
@@ -0,0 +1,45 @@
+! { dg-do compile }
+! PR 20851
+! Dummy arguments are disallowed in initialization expressions in
+! elemental functions except as arguments to the intrinsic functions
+! BIT_SIZE, KIND, LEN, or to the numeric inquiry functions listed
+! in 13.11.8
+MODULE TT
+INTEGER M
+CONTAINS
+ ELEMENTAL REAL FUNCTION two(N)
+ INTEGER, INTENT(IN) :: N
+ INTEGER, DIMENSION(N) :: scr ! { dg-error "Dummy argument 'n' not allowed in expression" }
+ END FUNCTION
+
+ ELEMENTAL REAL FUNCTION twopointfive(N)
+ INTEGER, INTENT(IN) :: N
+ INTEGER, DIMENSION(MAX(N,2)) :: scr ! { dg-error "Dummy argument 'n' not allowed in expression" }
+ end FUNCTION twopointfive
+
+ REAL FUNCTION three(N)
+ INTEGER, INTENT(IN) :: N
+ INTEGER, DIMENSION(N) :: scr ! this time it's valid
+ END FUNCTION
+
+ ELEMENTAL REAL FUNCTION four(N)
+ INTEGER, INTENT(IN) :: N
+ INTEGER, DIMENSION(bit_size(N)) :: scr ! another valid variant
+ END FUNCTION
+
+ ELEMENTAL REAL FUNCTION gofourit(N)
+ INTEGER, INTENT(IN) :: N
+ INTEGER, DIMENSION(MIN(HUGE(N),1)) :: scr ! another valid variant
+ END FUNCTION
+
+ ELEMENTAL REAL FUNCTION fourplusone(N)
+ INTEGER, INTENT(IN) :: N
+ INTEGER, DIMENSION(M) :: scr ! another valid variant
+ END FUNCTION
+
+ ELEMENTAL REAL FUNCTION five(X)
+ real, intent(in) :: x
+ CHARACTER(LEN=PRECISION(X)) :: C ! valid again
+ END FUNCTION
+END MODULE
+END