| ! { dg-do run } |
| ! |
| ! try to provoke class name clashes in gfc_build_class_symbol |
| ! |
| module test_module |
| |
| implicit none |
| |
| type, public :: test_p |
| private |
| class (test_p), pointer :: next => null() |
| end type test_p |
| |
| type, public :: test |
| ! Error in "call do_it (x)" below: |
| ! Type mismatch in argument 'x' at (1); passed CLASS(test_p) to CLASS(test) |
| class (test), pointer :: next => null() |
| end type test |
| |
| contains |
| |
| subroutine do_it (x) |
| class (test_p), target :: x |
| |
| x%next => x |
| return |
| end subroutine do_it |
| |
| end module test_module |
| |
| use test_module |
| |
| implicit none |
| class (test_p), pointer :: x |
| |
| allocate (x) |
| call do_it (x) |
| deallocate (x) |
| end |