! { dg-do compile } module implicit_2 ! This should cause an error if function types are resolved from the ! module namespace. implicit none type t integer i end type contains ! This caused an ICE because we were trying to apply the implicit type ! after we had applied the explicit type. subroutine test() implicit type (t) (v) type (t) v1, v2 v1%i = 1 call foo (v2%i) end subroutine ! A similar error because we failed to apply the implicit type to a function. ! This is a contained function to check we lookup the type in the function ! namespace, not it's parent. function f() result (val) implicit type (t) (v) val%i = 1 end function ! And again for a result variable. function fun() implicit type (t) (f) fun%i = 1 end function ! intrinsic types are resolved later than derived type, so check those as well. function test2() implicit integer (t) test2 = 42 end function subroutine bar() ! Check that implicit types are applied to names already known to be ! variables. implicit type(t) (v) save v v%i = 42 end subroutine end module