! RUN: %S/test_errors.sh %s %t %f18 ! Error tests for structure constructors. ! Errors caught by expression resolution are tested elsewhere; these are the ! errors meant to be caught by name resolution, as well as acceptable use ! cases. ! Type parameters are used to make the parses unambiguous. module module1 type :: type1(j) integer, kind :: j integer :: n = 1 end type type1 type, extends(type1) :: type2(k) integer, kind :: k integer :: m end type type2 type :: privaten(j) integer, kind :: j integer, private :: n end type privaten contains subroutine type1arg(x) type(type1(0)), intent(in) :: x end subroutine type1arg subroutine type2arg(x) type(type2(0,0)), intent(in) :: x end subroutine type2arg subroutine errors call type1arg(type1(0)()) call type1arg(type1(0)(1)) call type1arg(type1(0)(n=1)) !ERROR: Keyword 'bad=' does not name a component of derived type 'type1' call type1arg(type1(0)(bad=1)) call type2arg(type2(0,0)(n=1,m=2)) call type2arg(type2(0,0)(m=2)) call type2arg(type2(0,0)(type1=type1(0)(n=1),m=2)) call type2arg(type2(0,0)(type1=type1(0)(),m=2)) end subroutine errors end module module1 module module2 !ERROR: No definition found for type parameter 'k' type :: type1(k) end type type(type1):: x end module