summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/argument_checking_3.f90
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gfortran.dg/argument_checking_3.f90')
-rw-r--r--gcc/testsuite/gfortran.dg/argument_checking_3.f9036
1 files changed, 36 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/argument_checking_3.f90 b/gcc/testsuite/gfortran.dg/argument_checking_3.f90
new file mode 100644
index 000000000..5f451bf6d
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/argument_checking_3.f90
@@ -0,0 +1,36 @@
+! { dg-do compile }
+!
+! PR fortran/30940
+program test
+implicit none
+interface
+ subroutine foo(a)
+ character(len=1),dimension(:) :: a
+ end subroutine foo
+ subroutine bar(a)
+ character(len=1),dimension(:,:) :: a
+ end subroutine bar
+ subroutine foobar(a)
+ character(len=1),dimension(4) :: a
+ end subroutine foobar
+ subroutine arr(a)
+ character(len=1),dimension(1,2,1,2) :: a
+ end subroutine arr
+end interface
+ character(len=2) :: len2
+ character(len=4) :: len4
+ len2 = '12'
+ len4 = '1234'
+
+ call foo(len2) ! { dg-error "Rank mismatch in argument" }
+ call foo("ca") ! { dg-error "Rank mismatch in argument" }
+ call bar("ca") ! { dg-error "Rank mismatch in argument" }
+ call foobar(len2) ! { dg-warning "contains too few elements" }
+ call foobar(len4)
+ call foobar("bar") ! { dg-warning "contains too few elements" }
+ call foobar("bar33")
+ call arr(len2) ! { dg-warning "contains too few elements" }
+ call arr(len4)
+ call arr("bar") ! { dg-warning "contains too few elements" }
+ call arr("bar33")
+end program test