| ! RUN: %python %S/test_errors.py %s %flang_fc1 |
| module m |
| type t1 |
| contains |
| procedure, pass(from) :: defAsst1 |
| generic :: assignment(=) => defAsst1 |
| end type |
| type t2 |
| end type |
| type t3 |
| end type |
| interface assignment(=) |
| module procedure defAsst2 |
| end interface |
| contains |
| subroutine defAsst1(to,from) |
| class(*), intent(out) :: to |
| class(t1), intent(in) :: from |
| end |
| subroutine defAsst2(to,from) |
| class(*), intent(out) :: to |
| class(t2), intent(in) :: from |
| end |
| end |
| |
| program test |
| use m |
| type(t1) x1 |
| type(t2) x2 |
| type(t3) x3 |
| j = x1 |
| j = x2 |
| !ERROR: No intrinsic or user-defined ASSIGNMENT(=) matches operand types INTEGER(4) and TYPE(t3) |
| j = x3 |
| x1 = x1 |
| x1 = x2 |
| !ERROR: No intrinsic or user-defined ASSIGNMENT(=) matches operand types TYPE(t1) and TYPE(t3) |
| x1 = x3 |
| x2 = x1 |
| x2 = x2 |
| !ERROR: No intrinsic or user-defined ASSIGNMENT(=) matches operand types TYPE(t2) and TYPE(t3) |
| x2 = x3 |
| x3 = x1 |
| x3 = x2 |
| x3 = x3 |
| end |