! RUN: %python %S/test_errors.py %s %flang_fc1 -Werror ! Catch discrepancies between implicit result types and a global definition, ! allowing for derived types and type equivalence. module m type t1 integer n end type type t2 real a end type type t3 sequence integer n end type end function xfunc1() use m type(t1) xfunc1 xfunc1%n = 123 end function yfunc1() use m type(t1) yfunc1 yfunc1%n = 123 end function zfunc1() type t3 sequence integer n end type type(t3) zfunc1 zfunc1%n = 123 end program main use m implicit type(t1) (x) implicit type(t2) (y) implicit type(t3) (z) print *, xfunc1() ! ok print *, xfunc2() ! ok !ERROR: Implicit declaration of function 'yfunc1' has a different result type than in previous declaration print *, yfunc1() print *, yfunc2() print *, zfunc1() ! ok print *, zfunc2() ! ok end function xfunc2() use m type(t1) xfunc2 xfunc2%n = 123 end function yfunc2() use m !ERROR: Function 'yfunc2' has a result type that differs from the implicit type it obtained in a previous reference type(t1) yfunc2 yfunc2%n = 123 end function zfunc2() type t3 sequence integer n end type type(t3) zfunc2 zfunc2%n = 123 end