llvm-project/flang/test/Semantics/assign08.f90

49 lines
1.1 KiB
Fortran

! RUN: %python %S/test_errors.py %s %flang_fc1
! "Same type" checking for intrinsic assignment
module m1
type :: nonSeqType
integer :: n1
end type
type :: seqType
sequence
integer :: n2
end type
type, bind(c) :: bindCType
integer :: n3
end type
end module
program test
use m1, modNonSeqType => nonSeqType, modSeqType => seqType, modBindCType => bindCType
type :: nonSeqType
integer :: n1
end type
type :: seqType
sequence
integer :: n2
end type
type, bind(c) :: bindCType
integer :: n3
end type
type(modNonSeqType) :: mns1, mns2
type(modSeqType) :: ms1, ms2
type(modBindCType) :: mb1, mb2
type(nonSeqType) :: ns1, ns2
type(seqType) :: s1, s2
type(bindCType) :: b1, b2
! These are trivially ok
mns1 = mns2
ms1 = ms2
mb1 = mb2
ns1 = ns2
s1 = s2
b1 = b2
! These are ok per 7.5.2.4
ms1 = s1
mb1 = b1
!ERROR: No intrinsic or user-defined ASSIGNMENT(=) matches operand types TYPE(modnonseqtype) and TYPE(nonseqtype)
mns1 = ns1
!ERROR: No intrinsic or user-defined ASSIGNMENT(=) matches operand types TYPE(nonseqtype) and TYPE(modnonseqtype)
ns1 = mns1
end