llvm/flang/test/Semantics/assign08.f90

! 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