mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-17 03:26:48 +00:00

F'2023 10.2.1.2 paragraph 2 imposes some requirements on the left-hand sides of assignments when they have coindices, and one was not checked while another was inaccurately checked. In short, intrinsic assignment to a coindexed object can't change its type, and neither can it affect allocatable components.
19 lines
575 B
Fortran
19 lines
575 B
Fortran
! RUN: %python %S/test_errors.py %s %flang_fc1
|
|
! 10.2.1.2p1(1)
|
|
program test
|
|
class(*), allocatable :: pa
|
|
class(*), pointer :: pp
|
|
class(*), allocatable :: pac[:]
|
|
type t
|
|
real, allocatable :: a
|
|
end type
|
|
type(t) auc[*]
|
|
pa = 1 ! ok
|
|
!ERROR: Left-hand side of assignment may not be polymorphic unless assignment is to an entire allocatable
|
|
pp = 1
|
|
!ERROR: Left-hand side of assignment may not be polymorphic if it is a coarray
|
|
pac = 1
|
|
!ERROR: Left-hand side of assignment must not be coindexed due to allocatable ultimate component '%a'
|
|
auc[1] = t()
|
|
end
|