summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/spec_expr_4.f90
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gfortran.dg/spec_expr_4.f90')
-rw-r--r--gcc/testsuite/gfortran.dg/spec_expr_4.f9034
1 files changed, 34 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/spec_expr_4.f90 b/gcc/testsuite/gfortran.dg/spec_expr_4.f90
new file mode 100644
index 000000000..cf655b920
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/spec_expr_4.f90
@@ -0,0 +1,34 @@
+! { dg-do compile }
+! Tests the fix for PR27709 in which the specification expression on
+! line 22 was not resolved because of the multiple component references.
+!
+! Contributed by David Ham <David@ham.dropbear.id.au>
+!
+module elements
+ implicit none
+ type element_type
+ type(ele_numbering_type), pointer :: numbering
+ end type element_type
+ type ele_numbering_type
+ integer, dimension(:,:), pointer :: number2count
+ end type ele_numbering_type
+end module elements
+module global_numbering
+ use elements
+ implicit none
+contains
+ function element_local_coords(element) result (coords)
+ type(element_type), intent(in) :: element
+ real, dimension(size(element%numbering%number2count, 1)) :: coords
+ coords=0.0
+ end function element_local_coords
+end module global_numbering
+
+ use global_numbering
+ type (element_type) :: e
+ type (ele_numbering_type), target :: ent
+ allocate (ent%number2count (2,2))
+ e%numbering => ent
+ print *, element_local_coords (e)
+end
+! { dg-final { cleanup-modules "elements global_numbering" } }