| ! RUN: %flang_fc1 -fdebug-unparse %s 2>&1 | FileCheck %s | |
| module m1 | |
| type foo | |
| integer n | |
| integer :: m = 1 | |
| end type | |
| end | |
| module m2 | |
| use m1 | |
| interface foo | |
| module procedure f1 | |
| end interface | |
| contains | |
| type(foo) function f1(a) | |
| real, intent(in) :: a | |
| f1%n = a | |
| f1%m = 2 | |
| end | |
| end | |
| module m3 | |
| use m2 | |
| interface foo | |
| module procedure f2 | |
| end interface | |
| contains | |
| type(foo) function f2(a) | |
| double precision, intent(in) :: a | |
| f2%n = a | |
| f2%m = 3 | |
| end | |
| end | |
| program main | |
| use m3 | |
| type(foo) x | |
| !CHECK: foo(n=1_4,m=1_4) | |
| x = foo(1) | |
| print *, x | |
| !CHECK: f1(2._4) | |
| x = foo(2.) | |
| print *, x | |
| !CHECK: f2(3._8) | |
| x = foo(3.d0) | |
| print *, x | |
| end |