| ! RUN: %python %S/test_errors.py %s %flang_fc1 |
| ! Test that associations constructs can be correctly combined. The intrinsic |
| ! functions are not what is tested here, they are only use to reveal the types |
| ! of local variables. |
| |
| implicit none |
| real res |
| complex zres |
| integer ires |
| class(*), allocatable :: a, b |
| select type(a) |
| type is (integer) |
| select type(b) |
| type is (integer) |
| ires = selected_int_kind(b) |
| ires = selected_int_kind(a) |
| end select |
| type is (real) |
| res = acos(a) |
| !ERROR: Actual argument for 'x=' has bad type 'CLASS(*)' |
| res = acos(b) |
| end select |
| |
| select type(c => a) |
| type is (real) |
| res = acos(c) |
| class default |
| !ERROR: Actual argument for 'x=' has bad type 'CLASS(*)' |
| res = acos(c) |
| end select |
| select type(a) |
| type is (integer) |
| !ERROR: Actual argument for 'x=' has bad type 'INTEGER(4)' |
| res = acos(a) |
| end select |
| |
| select type(b) |
| type is (integer) |
| associate(y=>1.0, x=>1, z=>(1.0,2.3)) |
| ires = selected_int_kind(x) |
| select type(a) |
| type is (real) |
| res = acos(a) |
| res = acos(y) |
| !ERROR: Actual argument for 'x=' has bad type 'INTEGER(4)' |
| res = acos(b) |
| type is (integer) |
| ires = selected_int_kind(b) |
| zres = acos(z) |
| !ERROR: Actual argument for 'x=' has bad type 'INTEGER(4)' |
| res = acos(a) |
| end select |
| end associate |
| ires = selected_int_kind(b) |
| !ERROR: No explicit type declared for 'c' |
| ires = selected_int_kind(c) |
| !ERROR: Actual argument for 'x=' has bad type 'CLASS(*)' |
| res = acos(a) |
| class default |
| !ERROR: Actual argument for 'r=' has bad type 'CLASS(*)' |
| ires = selected_int_kind(b) |
| end select |
| !ERROR: Actual argument for 'r=' has bad type 'CLASS(*)' |
| ires = selected_int_kind(a) |
| !ERROR: Actual argument for 'x=' has bad type 'CLASS(*)' |
| res = acos(b) |
| end |